protected override void OnNavigatedTo(NavigationEventArgs e) { _args = e.Parameter as HistoryNavigationArgs; if (_args == null) { ViewModelLocator.NavMgr.ResetMainBackNav(); } base.OnNavigatedTo(e); }
protected override void OnNavigatedTo(NavigationEventArgs e) { _args = e.Parameter as HistoryNavigationArgs; if (_args == null) { ViewModelLocator.NavMgr.DeregisterBackNav(); ViewModelLocator.NavMgr.RegisterBackNav(PageIndex.PageAnimeList, null); } base.OnNavigatedTo(e); }
public HistoryPageFragment(HistoryNavigationArgs args) { _args = args; }
public async void Init(HistoryNavigationArgs args, bool force = false) { if (args == null && force) { args = _prevArgs; } args = args ?? new HistoryNavigationArgs { Source = Credentials.UserName }; if (!force && _prevArgs?.Source == args.Source) { return; } _prevArgs = args; History = null; LoadingVisibility = true; Dictionary <string, List <MalProfileHistoryEntry> > history = null; await Task.Run(async() => history = await new ProfileHistoryQuery(args.Source).GetProfileHistory()); var data = new Dictionary <string, List <Tuple <AnimeItemViewModel, List <MalProfileHistoryEntry> > > >(); if (history != null) { if (args.Source == Credentials.UserName) { foreach (var key in history.Keys) { try { List <Tuple <AnimeItemViewModel, List <MalProfileHistoryEntry> > > entries = new List <Tuple <AnimeItemViewModel, List <MalProfileHistoryEntry> > >(); var distinctIds = history[key].Select(entry => entry.Id).Distinct(); foreach (var distinctId in distinctIds) { var vm = await ViewModelLocator.AnimeList.TryRetrieveAuthenticatedAnimeItem(distinctId, history[key].First(entry => entry.Id == distinctId).IsAnime) as AnimeItemViewModel; entries.Add(new Tuple <AnimeItemViewModel, List <MalProfileHistoryEntry> >(vm, history[key].Where(entry => entry.Id == distinctId).ToList())); } data.Add(key, entries); } catch (Exception) { // } } } else { try { var others = _animeLibraryDataStorage.OthersAbstractions[args.Source]; foreach (var key in history.Keys) { List <Tuple <AnimeItemViewModel, List <MalProfileHistoryEntry> > > entries = new List <Tuple <AnimeItemViewModel, List <MalProfileHistoryEntry> > >(); var distinctIds = history[key].Select(entry => entry.Id).Distinct(); foreach (var distinctId in distinctIds) { bool anime = history[key]. First(entry => entry.Id == distinctId).IsAnime; var vm = anime ? others.Item1.FirstOrDefault(abstraction => abstraction.Id == distinctId) : others.Item2.FirstOrDefault(abstraction => abstraction.Id == distinctId); if (vm != null) { entries.Add(new Tuple <AnimeItemViewModel, List <MalProfileHistoryEntry> >( vm.ViewModel, history[key].Where(entry => entry.Id == distinctId).ToList())); } } data.Add(key, entries); } } catch (Exception) { // } } } History = data; HistoryEmptyNoticeVisibility = data.Count == 0; LoadingVisibility = false; }