Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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;
            }
        }
Esempio n. 3
0
        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;
            }
        }