private void TaskAwaiter_Error(object sender, Exception args) { if (args is InstagramException instagramException) { ((IInstagramAccounts)Activity).ForceLogoutAsync(instagramException.Account); ((ISnackBarProvider)Activity).ShowSnackBar(Resource.String.msg_logged_out, instagramException.Account.Data.User.Username); if (_adapter.ItemCount > 0) { ((IFragmentContainer)Activity).ShowContentView(); } else { ((IFragmentContainer)Activity).ShowEmptyView(); if (!_hasPushedToLoginFragment) { ((IFragmentContainer)Activity).PushFragment(new LoginFragment()); _hasPushedToLoginFragment = true; } } } else if (args is HttpRequestException) { ((ISnackBarProvider)Activity).ShowSnackBar(Resource.String.error_offline); if (_adapter.ItemCount > 0) { ((IFragmentContainer)Activity).ShowContentView(); } else { ((IFragmentContainer)Activity).ShowEmptyView(); } } else if (args is ChallengeException challenge) { var challengeFragment = new ChallengeFragment(challenge.Account); ((IFragmentContainer)Activity).PushFragment(challengeFragment); } else { ((IFragmentContainer)Activity).ShowErrorView(args); } }
private async void VerifyButton_OnClick(object sender, EventArgs e) { _textInput.Enabled = false; _resendButton.Enabled = false; _verifyButton.Enabled = false; try { await((IInstagramAccounts)Activity) .CompleteTwoFactorLoginAsync(_account, _textInput.Text); #if TGBUILD || DEBUG ((IUpdateChecker)Activity).DidLogin(); #endif ((IFragmentContainer)Activity).PopFragment(); } catch (ChallengeException ex) { var challengeFragment = new ChallengeFragment(ex.Account); ((IFragmentContainer)Activity).PushFragment(challengeFragment); _didChallenge = true; } catch (InvalidTwoFactorCodeException) { ((ISnackBarProvider)Activity).ShowSnackBar(Resource.String.error_invalid_2fa); } catch (TwoFactorCodeExpiredException) { ((ISnackBarProvider)Activity).ShowSnackBar(Resource.String.error_2fa_expired); } catch (Exception ex) { ((IErrorHandler)Activity).ShowError(ex); } finally { _textInput.Enabled = true; _resendButton.Enabled = true; _verifyButton.Enabled = true; } }
private async void LoginButton_Click(object sender, EventArgs e) { var usernameIsNull = string.IsNullOrEmpty(_userNameEditText.Text); var passwordIsNull = string.IsNullOrWhiteSpace(_passwordEditText.Text); if (usernameIsNull && passwordIsNull) { _userNameInputLayout.Error = " "; _passwordInputLayout.Error = GetString(Resource.String.error_required_field); _userNameEditText.TextChanged += ErrorEditLayoutChangeHandler; _passwordEditText.TextChanged += ErrorEditLayoutChangeHandler; return; } if (usernameIsNull) { _userNameInputLayout.Error = GetString(Resource.String.error_required_field); _userNameEditText.TextChanged += ErrorEditLayoutChangeHandler; return; } if (passwordIsNull) { _passwordInputLayout.Error = GetString(Resource.String.error_required_field); _passwordEditText.TextChanged += ErrorEditLayoutChangeHandler; return; } try { _userNameEditText.Enabled = false; _passwordEditText.Enabled = false; _loginButton.Enabled = false; await((IInstagramAccounts)Activity).AddAccountAsync(_userNameEditText.Text, _passwordEditText.Text); #if TGBUILD || DEBUG ((IUpdateChecker)Activity).DidLogin(); #endif ((IFragmentContainer)Activity).PopFragment(); } catch (TwoFactorAuthException twoFactorAuth) { // Navigate to 2FA fragment var twoFactorAuthFragment = new TwoFactorAuthFragment(twoFactorAuth.Account); ((IFragmentContainer)Activity).PushFragment(twoFactorAuthFragment); _didTwoFactorAuthentication = true; } catch (WrongPasswordException) { _passwordEditText.Error = GetString(Resource.String.error_invalid_password); _passwordEditText.TextChanged += ErrorEditLayoutChangeHandler; } catch (InvalidCredentialException) { _userNameInputLayout.Error = " "; _passwordInputLayout.Error = GetString(Resource.String.error_invalid_credential); _userNameEditText.TextChanged += ErrorEditLayoutChangeHandler; _passwordEditText.TextChanged += ErrorEditLayoutChangeHandler; } catch (DuplicateAccountException) { _userNameInputLayout.Error = GetString(Resource.String.error_duplicate_account); _passwordInputLayout.Error = " "; _userNameEditText.TextChanged += ErrorEditLayoutChangeHandler; _passwordEditText.TextChanged += ErrorEditLayoutChangeHandler; } catch (ChallengeException ex) { var challengeFragment = new ChallengeFragment(ex.Account); ((IFragmentContainer)Activity).PushFragment(challengeFragment); _didTwoFactorAuthentication = true; } catch (Exception ex) { ((IErrorHandler)Activity).ShowError(ex); } finally { _userNameEditText.Enabled = true; _passwordEditText.Enabled = true; _loginButton.Enabled = true; } }