public MainViewModel(IMvxNavigationService navigationService, IAuthService authService, ITopNavigationViewModelService topNavigationViewModelService, IBottomNavigationViewModelService bottomNavigationViewModelService) { _navigationService = navigationService; _authService = authService; _topNavigationViewModelService = topNavigationViewModelService; _bottomNavigationViewModelService = bottomNavigationViewModelService; ShowNavigationTopViewModelCommand = new MvxAsyncCommand(async() => await Task.Run(() => { })); ShowAudioPlayerViewModelCommand = new MvxAsyncCommand(async() => await _navigationService.Navigate <AudioPlayerViewModel>()); ShowNavigationBottomViewModelCommand = new MvxAsyncCommand(async() => await _navigationService.Navigate <BottomNavigationViewModel>()); ShowContentViewModelCommand = new MvxAsyncCommand(async() => { var serviceResult = await _authService.Authorize(); if (!serviceResult.Success) { await _topNavigationViewModelService.Close(); await _bottomNavigationViewModelService.Close(); await _navigationService.Navigate <LoginViewModel>(); } else { await _navigationService.Navigate <HomeViewModel>(); await _bottomNavigationViewModelService.Show(new BottomNavigationViewModel.PrepareModel() { CheckedItem = Enums.BottomNavigationViewCheckedItemType.Home }); } }); }
// Private methods private async Task AttemptLogInAsync() { Email.Value = Email.Value?.Trim(); Password.Value = Password.Value?.Trim(); if (_validationHelper.Validate()) { _userDialogs.ShowLoading("Login"); var serviceResult = await _authService.Login(Email.Value, Password.Value); if (serviceResult.Success) { ClearStack.Execute(null); await _navigationService.Navigate <HomeViewModel>(); await _bottomNavigationViewModelService.Show(new BottomNavigationViewModel.PrepareModel() { CheckedItem = Enums.BottomNavigationViewCheckedItemType.Home }); _userDialogs.HideLoading(); } else { _userDialogs.HideLoading(); await _userDialogs.AlertAsync(new AlertConfig { Title = "Login failed", Message = serviceResult.Error.Description, OkText = "OK" }); InitValidationCommand.Execute(null); } } }