示例#1
0
        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);
        }
示例#3
0
        public FileModel(PodcastId id, [CanBeNull]CacheInfo cacheInfo)
        {
            Id = id;
            State = new CachingState();
			UpdateCachingState(cacheInfo);
		}