private async Task <bool> SavedAndSetTrackIdsMatch() { var cachedTrackIds = await trackIdCache.Load(TrackIdsStoreName, null); /// On first load. Theoretically, <see cref="TrackIds"/> should be loaded when the <see cref="AudioFeaturesManager"/> is constructed, but it cannot be awaited there, so we can't guarantee a coherent state when checking cache validity. if (!TrackIds.Any() && cachedTrackIds.Any()) { TrackIds = cachedTrackIds; return(true); } return(new HashSet <string>(TrackIds).SetEquals(cachedTrackIds)); }
protected override async Task <IEnumerable <TrackAudioFeatures> > LoadStorageCache(Action <int, int> progressCallback, string?market = null) => await storageCache.Load(StoreName, progressCallback);