Example #1
0
        public async Task LoadNewEpisodesAsync()
        {
            int newEpisodesCount = 0;
            var allEpisodes      = allPodcasts.SelectMany(p => p.Episodes).ToList();
            var episodes         = allEpisodes.ToList();
            var newEpisodes      = await PodcastService.CheckForNewEpisodes(allPodcasts.Select(p => p.Podcast));

            episodes.AddRange(from episode in newEpisodes
                              select new EpisodeViewModel(episode));
            foreach (var episode in episodes)
            {
                if (!allEpisodes.Contains(episode))
                {
                    allEpisodes.Add(episode);
                    newEpisodesCount++;
                }
            }
            allEpisodes = allEpisodes.OrderByDescending(e => e.Episode.Published).ToList();
            var episodesToAdd = allEpisodes.Take(newEpisodesCount).ToList();

            foreach (var episode in episodesToAdd)
            {
                _episodes.Insert(episodesToAdd.Count - newEpisodesCount, episode);
                newEpisodesCount--;
            }
            await SavePodcastsAsync();
        }