Exemplo n.º 1
0
        public async Task LogoutAsync()
        {
            bool logout = await _dialogService.ShowConfirmationDialogAsync(
                "Confirmation",
                "Are you sure you want to log out?",
                "Yes",
                "No");

            if (logout)
            {
                //TODO: DELETE ALL !!
                //delete all from the db
                //delete user settings
                //delete all view models
                OpenPane(false);
                ShowLoading(true, "Logging out... Please wait..");
                BackgroundTasksManager.UnregisterBackgroundTask();
                _appSettings.ResetAppSettings();

                await _dataService
                .UserService
                .ChangeCurrentUserStatus(false);

                string currentLoggedUsername = _userCredentialService.GetCurrentLoggedUsername();
                if (string.IsNullOrEmpty(currentLoggedUsername))
                {
                    currentLoggedUsername = _userCredentialService.DefaultUsername;
                }

                _userCredentialService.DeleteUserCredential(ResourceType.ALL, currentLoggedUsername);
                _navigationService.GoBack();
                ShowLoading(false);
            }
        }
Exemplo n.º 2
0
        protected override async Task NavigateToFirstViewModel(object hint = null)
        {
            var response = await _dataService
                           .UserService
                           .GetCurrentActiveUserAsync();


            var loggedUsername = _userCredentialService.GetCurrentLoggedUsername();

            var isUserLoggedIn = loggedUsername != _userCredentialService.DefaultUsername &&
                                 !string.IsNullOrEmpty(loggedUsername);

            if (!response.Succeed || isUserLoggedIn && response.Result is null)
            {
                var errorMsg = string.IsNullOrEmpty(response.Message)
                    ? $"Did you uninstall the app without signing out ?{System.Environment.NewLine}I will properly log you out now..."
                    : response.Message;

                _userCredentialService.DeleteUserCredential(
                    ResourceType.ALL,
                    _userCredentialService.DefaultUsername);

                _logger.Warning(
                    $"{nameof(NavigateToFirstViewModel)}: Couldnt get a user in the db = {response.Succeed} " +
                    $"or isUserLoggedIn and no user exists in db. {errorMsg}");

                await NavigationService.Navigate <LoginViewModel>();

                return;
            }


            if (isUserLoggedIn && _appSettings.AskForPasswordWhenAppStarts)
            {
                //_dialogService.ShowLoginDialog(async password =>
                //{
                //    var result = await PasswordMatches(password);
                //    if (result)
                //    {
                //        await NavigationService.Navigate<MainViewModel>();
                //    }
                //    else
                //    {
                //        await NavigationService.Navigate<LoginViewModel>();
                //    }
                //});
            }
            else if (isUserLoggedIn)
            {
                _dialogService.ShowSucceedToast("navegando...");
                await NavigationService.Navigate <MainViewModel>();
            }
            else
            {
                await NavigationService.Navigate <LoginViewModel>();
            }
        }