public PodcastItemViewModel(SyndicationItem item) { OriginalUri = item.GetPodcastUris().First(); DatePublished = item.PublishDate; Title = item.Title.Text; string summary = item.Summary.IfNotNull(its => its.Text) ?? item.ElementExtensions.FirstOrDefault(ext => ext.OuterName == "summary").IfNotNull(ext => ext.GetObject<string>(), string.Empty); 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); }