public override async Task InitializeAsync(Func <bool, Task> setBusy) { await base.InitializeAsync(setBusy); var sessionState = await _sessionStateManager.GetSessionState(); NavigationMenuModelManager.Update(_viewModelRepository.CreateViewModel <NavMenuViewModel>(this, (nm) => nm.InitializeMenu(NavigationItems, sessionState))); }
public override async Task HandleChanges(object sender, object changes) { if (changes is ISessionState sessionState) { var navigationItems = NavigationItems; // We'd usually do some proper login checks here! if (sessionState.IsLoggedIn) { navigationItems.Add(new Navigation(() => ContentViewModelManager.Update(_viewModelRepository.CreateViewModel <RegisterRecipeViewModel>(this)), "Register Recipe")); navigationItems.Add(new Navigation(() => ContentViewModelManager.Update(_viewModelRepository.CreateViewModel <RecipeSummaryViewModel>(this, m => m.InitializeComponents(sessionState.Recipes))), "Your Recipes")); InformationViewModelManager.Update(_viewModelRepository.CreateViewModel <InformationViewModel>(this, (vm) => vm.OrganisationName = sessionState.Organisation.OrganisationName)); } else { InformationViewModelManager.Update(_viewModelRepository.CreateViewModel <InformationViewModel>(this, (vm) => vm.OrganisationName = string.Empty)); } Debug.WriteLine("NavigationMenuModel.UpdateMenu state : " + sessionState.AccessKey); await Task.Run(() => NavigationMenuModelManager.Update(_viewModelRepository.CreateViewModel <NavMenuViewModel>(this, (nm) => nm.InitializeMenu(navigationItems, sessionState)))); Debug.WriteLine("No SessionStateManager_SessionUpdated state ends"); } }