public async Task <FeedItem> RefreshFeedItem(FeedItem feedItem) { try { if (feedItem != null) { //get new episodes from saved URI in feedItem var doc = await RssFeedHelper.GetXDocFromLinkAsync(feedItem.Link); //update ImageLink and ImageFileName for FeedItem var feedItemFromXDoc = FeedItemManager.GetFeedItemFromXDoc(doc, feedItem.Link); feedItem.ImageLink = feedItemFromXDoc.ImageLink; //new image on FeedItem for new episode feedItem.ImageFileName = feedItemFromXDoc.ImageFileName; feedItem.LastCheck = DateTime.Now; //save LastCheck var result = await DataStore.SaveFeedItemAsync(feedItem); if (result == 0) { Debug.WriteLine("Could Not update FeedItem with new LastCheck date"); } //get new episodes from saved URI in feedItem var episodes = RssEpisodeManager.GetRssEpisodesFromXDoc(doc, feedItem.Id.Value); //save new episodes to database result = await DataStore.AddEpisodesToFeed(episodes); //returns the number of items added if (result == 0) { Debug.WriteLine("FeedItemManager.RefreshFeedItem Result from AddEpisodesToFeed was 0 "); } //check existing episodes for undownloaded images var existingEpisodes = await DataStore.GetAllEpisodeItemsByFeedIdAsync((int)feedItem.Id); foreach (var episode in existingEpisodes) { if (DownloadService.CanDownloadImage(episode)) //check if image is already downloaded { await DownloadService.Instance.DownloadImageAsync(episode); //queue to download } } } } catch (Exception ex) { //could not refresh item Debug.WriteLine("FeedItemManager.RefreshFeedItem Error " + ex.Message); } return(feedItem); }