public async void PopulateData(bool force = false) { ViewModelLocator.GeneralMain.CurrentStatus = CurrentWorkMode.GetDescription(); if (Loading) { return; } if (!force) { switch (CurrentWorkMode) { case RecommendationsPageWorkMode.Anime: if (RecommendationAnimeItems != null) { RaisePropertyChanged(() => CurrentWorkMode); return; } break; case RecommendationsPageWorkMode.Manga: if (RecommendationMangaItems != null) { RaisePropertyChanged(() => CurrentWorkMode); return; } break; case RecommendationsPageWorkMode.PersonalizedAnime: if (PersonalizedAnimeItems != null) { RaisePropertyChanged(() => CurrentWorkMode); return; } break; case RecommendationsPageWorkMode.PersonalizedManga: if (PersonalizedMangaItems != null) { RaisePropertyChanged(() => CurrentWorkMode); return; } break; default: throw new ArgumentOutOfRangeException(); } RaisePropertyChanged(() => PivotItemIndex); } Loading = true; if (CurrentWorkMode == RecommendationsPageWorkMode.Anime || CurrentWorkMode == RecommendationsPageWorkMode.Manga) { List <RecommendationData> data = null; await Task.Run(async() => data = await new AnimeRecomendationsQuery(CurrentWorkMode == RecommendationsPageWorkMode.Anime) .GetRecomendationsData()); if (data == null) { Loading = false; return; } var items = new List <XPivotItem>(); var i = 0; foreach (var item in data) { var pivot = new XPivotItem { Header = item.DependentTitle + "\n" + item.RecommendationTitle, Content = new RecommendationItemViewModel(item, i++) }; items.Add(pivot); } if (CurrentWorkMode == RecommendationsPageWorkMode.Anime) { RecommendationAnimeItems = items; } else { RecommendationMangaItems = items; } RaisePropertyChanged(() => PivotItemIndex); } else { var data = await new AnimePersonalizedRecommendationsQuery(CurrentWorkMode == RecommendationsPageWorkMode.PersonalizedAnime) .GetPersonalizedRecommendations(); if (CurrentWorkMode == RecommendationsPageWorkMode.PersonalizedAnime) { PersonalizedAnimeItems = data.Select(recommendationData => new AnimeItemAbstraction(false, new AnimeLibraryItemData { Title = recommendationData.Title, Id = recommendationData.Id, ImgUrl = recommendationData.ImgUrl }).ViewModel).ToList(); PersonalizedAnimeItems.ForEach(model => { model.UpdateButtonsVisibility = false; }); } else { PersonalizedMangaItems = data.Select(recommendationData => new AnimeItemAbstraction(false, new MangaLibraryItemData { Title = recommendationData.Title, Id = recommendationData.Id, ImgUrl = recommendationData.ImgUrl }).ViewModel).ToList(); PersonalizedMangaItems.ForEach(model => { model.UpdateButtonsVisibility = false; }); } } Loading = false; }
public async void PopulateData() { ViewModelLocator.GeneralMain.CurrentStatus = AnimeMode ? "Anime Recommendations" : "Manga Recommendations"; if (Loading || _prevLoaded == AnimeMode) return; Loading = true; var data = new List<RecommendationData>(); _prevLoaded = AnimeMode; await Task.Run(async () => data = await new AnimeRecomendationsQuery(AnimeMode).GetRecomendationsData()); if (data == null) { Loading = false; return; } RecommendationItems.Clear(); var i = 0; foreach (var item in data) { var pivot = new XPivotItem { Header = item.DependentTitle + "\n" + item.RecommendationTitle, Content = new RecommendationItemViewModel(item, i++) }; RecommendationItems.Add(pivot); } Loading = false; RaisePropertyChanged(() => PivotItemIndex); }