Exemple #1
0
        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.";
            }
        }