示例#1
0
 public void RegisterBackNav(ProfilePageNavigationArgs args)
 {
     RegisterBackNav(PageIndex.PageProfile, args);
 }
        public async void LoadProfileData(ProfilePageNavigationArgs args, bool force = false)
        {
            if (args == null)
                args = PrevArgs;
            else
                PrevArgs = args;

            if (args == null)
                return;

            if (args.TargetUser == Credentials.UserName)
            {
                ViewModelLocator.NavMgr.ResetMainBackNav();
                if(ViewModelLocator.Mobile)
                    ViewModelLocator.NavMgr.RegisterBackNav(PageIndex.PageAnimeList,null);
            }

            if (_currUser == null || _currUser != args.TargetUser || force)
            {
                LoadingVisibility = true;
                await
                    Task.Run(
                        async () =>
                            CurrentData = await new ProfileQuery(false, args?.TargetUser ?? "").GetProfileData(force));
                _currUser = args.TargetUser ?? Credentials.UserName;
            }
            FavAnime = new List<AnimeItemViewModel>();
            FavManga = new List<AnimeItemViewModel>();
            RecentManga = new List<AnimeItemViewModel>();
            RecentAnime = new List<AnimeItemViewModel>();
            ViewModelLocator.GeneralMain.CurrentStatus = $"{_currUser} - Profile";
            var authenticatedUser = args.TargetUser.Equals(Credentials.UserName,StringComparison.CurrentCultureIgnoreCase);
            RaisePropertyChanged(() => CurrentData);
            LoadingVisibility = false;
            RaisePropertyChanged(() => IsPinned);
            RaisePropertyChanged(() => PinProfileVisibility);
            MalComments = new ObservableCollection<MalComment>(CurrentData.Comments);
            FavouriteCharacters = new List<FavouriteViewModel>(CurrentData.FavouriteCharacters.Select(character => new FavouriteViewModel(character)));
            FavouriteStaff = new List<FavouriteViewModel>(CurrentData.FavouritePeople.Select(staff => new FavouriteViewModel(staff)));
            CommentInputBoxVisibility = !string.IsNullOrEmpty(CurrentData.ProfileMemId); //posting restricted
            LoadAboutMeButtonVisibility = true;
            LoadingAboutMeVisibility = AboutMeWebViewVisibility = false;
            if (authenticatedUser)
            {
                _initialized = true;
                var list = new List<AnimeItemViewModel>();
                foreach (var id in CurrentData.FavouriteAnime)
                {
                    var data = await ViewModelLocator.AnimeList.TryRetrieveAuthenticatedAnimeItem(id);

                    if (data != null)
                    {
                        list.Add((data as AnimeItemViewModel).ParentAbstraction.ViewModel);
                    }
                }
                FavAnime = list;
                list = new List<AnimeItemViewModel>();
                foreach (var id in CurrentData.FavouriteManga)
                {
                    var data = await ViewModelLocator.AnimeList.TryRetrieveAuthenticatedAnimeItem(id, false);
                    if (data != null)
                    {
                        list.Add((data as AnimeItemViewModel).ParentAbstraction.ViewModel);
                    }
                }
                FavManga = list;
                list = new List<AnimeItemViewModel>();
                foreach (var id in CurrentData.RecentAnime)
                {
                    var data = await ViewModelLocator.AnimeList.TryRetrieveAuthenticatedAnimeItem(id);
                    if (data != null)
                    {
                        list.Add((data as AnimeItemViewModel).ParentAbstraction.ViewModel);
                    }
                }
                RecentAnime = list;
                list = new List<AnimeItemViewModel>();
                foreach (var id in CurrentData.RecentManga)
                {
                    var data = await ViewModelLocator.AnimeList.TryRetrieveAuthenticatedAnimeItem(id, false);
                    if (data != null)
                    {
                        list.Add((data as AnimeItemViewModel).ParentAbstraction.ViewModel);
                    }
                }
                RecentManga = list;
            }
            else
            {
                if (!_othersAbstractions.ContainsKey(args.TargetUser ?? ""))
                {
                    LoadingOhersLibrariesProgressVisiblity = true;
                    var data = new List<ILibraryData>();
                    await
                        Task.Run(
                            async () =>
                                data =
                                    await
                                        new LibraryListQuery(args.TargetUser, AnimeListWorkModes.Anime).GetLibrary(false));

                    var abstractions = new List<AnimeItemAbstraction>();
                    foreach (var libraryData in data)
                        abstractions.Add(new AnimeItemAbstraction(false, libraryData as AnimeLibraryItemData));

                    await
                        Task.Run(
                            async () =>
                                data =
                                    await
                                        new LibraryListQuery(args.TargetUser, AnimeListWorkModes.Manga).GetLibrary(false));

                    var mangaAbstractions = new List<AnimeItemAbstraction>();
                    foreach (
                        var libraryData in data)
                        mangaAbstractions.Add(new AnimeItemAbstraction(false, libraryData as MangaLibraryItemData));

                    lock (_othersAbstractions)
                    {
                        if (!_othersAbstractions.ContainsKey(args.TargetUser))
                            _othersAbstractions.Add(args.TargetUser,
                                new Tuple<List<AnimeItemAbstraction>, List<AnimeItemAbstraction>>(abstractions,
                                    mangaAbstractions));
                    }

                    LoadingOhersLibrariesProgressVisiblity = false;
                }

                var source = _othersAbstractions[args.TargetUser];
                var list = new List<AnimeItemViewModel>();
                foreach (var id in CurrentData.FavouriteAnime)
                {
                    var data = source.Item1.FirstOrDefault(abs => abs.Id == id);

                    if (data != null)
                    {
                        list.Add(data.ViewModel);
                    }
                }
                FavAnime = list;
                list = new List<AnimeItemViewModel>();
                foreach (var id in CurrentData.FavouriteManga)
                {
                    var data = source.Item2.FirstOrDefault(abs => abs.Id == id);

                    if (data != null)
                    {
                        list.Add(data.ViewModel);
                    }
                }
                FavManga = list;
                list = new List<AnimeItemViewModel>();
                foreach (var id in CurrentData.RecentAnime)
                {
                    var data = source.Item1.FirstOrDefault(abs => abs.Id == id);

                    if (data != null)
                    {
                        list.Add(data.ViewModel);
                    }
                }
                RecentAnime = list;
                list = new List<AnimeItemViewModel>();
                foreach (var id in CurrentData.RecentManga)
                {
                    var data = source.Item2.FirstOrDefault(abs => abs.Id == id);

                    if (data != null)
                    {
                        list.Add(data.ViewModel);
                    }
                }
                RecentManga = list;
            }
            AnimeChartValues = new List<int>
            {
                CurrentData.AnimeWatching,
                CurrentData.AnimeCompleted,
                CurrentData.AnimeOnHold,
                CurrentData.AnimeDropped,
                CurrentData.AnimePlanned
            };
            MangaChartValues = new List<int>
            {
                CurrentData.MangaReading,
                CurrentData.MangaCompleted,
                CurrentData.MangaOnHold,
                CurrentData.MangaDropped,
                CurrentData.MangaPlanned
            };

            EmptyRecentAnimeNoticeVisibility = RecentAnime.Count == 0;
            EmptyRecentMangaNoticeVisibility = RecentManga.Count == 0;
            EmptyFavCharactersNoticeVisibility = CurrentData.FavouriteCharacters.Count == 0;
            EmptyFavAnimeNoticeVisibility = FavAnime.Count == 0;
            EmptyFavMangaNoticeVisibility = FavManga.Count == 0;
            EmptyFavPeopleNoticeVisibility = CurrentData.FavouritePeople.Count == 0;
            EmptyCommentsNoticeVisibility = CurrentData.Comments.Count == 0;
            OnInitialized?.Invoke();
        }
示例#3
0
		public void RegisterBackNav(ProfilePageNavigationArgs args)
		{
			//throw new NotImplementedException();
		}
示例#4
0
 protected override void OnNavigatedTo(NavigationEventArgs e)
 {
     _lastArgs = e.Parameter as ProfilePageNavigationArgs;
     base.OnNavigatedTo(e);
 }