public async void RefreshShow(Show oldShow) { oldShow.IsLoading = true; try { var newShow = await Task <Show> .Factory.StartNew(() => infoProvider.GetFullDetails(oldShow.ShowId)); if (newShow == null) { return; } oldShow.Country = newShow.Country; oldShow.Ended = newShow.Ended; oldShow.Link = newShow.Link; oldShow.Name = newShow.Name; oldShow.Started = newShow.Started; oldShow.Status = newShow.Status; oldShow.ImageUrl = newShow.ImageUrl; oldShow.LastUpdated = newShow.LastUpdated; foreach (var newSeason in newShow.Seasons) { var oldSeason = oldShow.Seasons.FirstOrDefault(w => w.SeasonNumber == newSeason.SeasonNumber); if (oldSeason == null) { oldShow.Seasons.Add(newSeason); continue; } foreach (var newEpisode in newSeason.Episodes) { var oldEpisode = oldSeason.Episodes.FirstOrDefault(w => w.EpisodeNumber == newEpisode.EpisodeNumber); if (oldEpisode == null) { oldSeason.Episodes.Add(newEpisode); continue; } oldEpisode.AirDate = newEpisode.AirDate; oldEpisode.ImageUrl = newEpisode.ImageUrl; oldEpisode.Link = newEpisode.Link; oldEpisode.Title = newEpisode.Title; } } ImageHelper.LoadDefaultImages(oldShow); ImageHelper.GetShowImage(oldShow); ImageHelper.GetEpisodeImages(oldShow); } finally { oldShow.IsLoading = false; } }
public async void AddShow() { if (SelectedShow == null) { return; } if (currentShows.Any(w => w.ShowId == SelectedShow.ShowId)) { Error = "Show is already in your collection."; ShowName = string.Empty; IsSearchCompleted = false; SelectedShow = null; return; } Execute.BeginOnUIThread(() => { IsWorking = true; IsSearchCompleted = false; }); Show newShow = await Task <Show> .Factory.StartNew(() => { try { return(informationProvider.GetFullDetails(SelectedShow.ShowId)); } catch { return(null); } }); Show = newShow; if (newShow != null) { Error = null; TryClose(true); } else { Error = "Provider failed to return information."; } }