public async Task UpdateOrCreateCacheEntry(PodcastId id, CacheInfo entry) { FileModel existingEnry; if (!_memCache.TryGetValue(id, out existingEnry)) { var fileModel = new FileModel(id, entry); _memCache.Add(id, fileModel); _cachedFiles.OnNext(fileModel); } else { existingEnry.UpdateCachingState(entry); } await Cache.Local.InsertObject(id.Url, entry); }
public PodcastItemViewModel(SyndicationItem item) { OriginalUri = item.GetPodcastUris().First(); DatePublished = item.PublishedDate; Title = item.Title.Text; string summary = item.Summary.IfNotNull(its => its.Text); Summary = summary; Id = new PodcastId(this.GetStorageUrl()); PlayPodcastCommand = ReactiveCommand.Create(); PlayPodcastCommand.Subscribe(OnPlayPodcast); _cachingState = FileCache.Instance.CachedFiles.FirstOrDefaultAsync(x => x.Id == Id).Select(x => new CachingStateVm(x.State)).ToProperty(this, x => x.CachingState); }
public FileModel(PodcastId id, [CanBeNull]CacheInfo cacheInfo) { Id = id; State = new CachingState(); UpdateCachingState(cacheInfo); }