def METHOD_NAME() -> bool:
    """Determine whether we need to update the cache, based on user preference, and previous
    cache update status. Returns either True or False."""
    if not _cache_exists():
        return True
    if _last_update_was_interrupted(reset_status=True):
        return True
    if _custom_repo_list_changed():
        return True
    # Figure out our cache update frequency: there is a combo box in the preferences dialog
    # with three options: never, daily, and weekly.
    days_between_updates = _days_between_updates()
    pref = fci.ParamGet("User parameter:BaseApp/Preferences/Addons")
    last_cache_update_string = pref.GetString("LastCacheUpdate", "never")
    if last_cache_update_string == "never":
        return True
    elif days_between_updates > 0:
        last_cache_update = date.fromisoformat(last_cache_update_string)
        delta_update = timedelta(days=days_between_updates)
        if date.today() >= last_cache_update + delta_update:
            return True
    elif days_between_updates == 0:
        return True
    return False