Search in sources :

Example 1 with PushSocialPayload

use of org.wordpress.android.fluxc.store.AccountStore.PushSocialPayload in project WordPress-Login-Flow-Android by wordpress-mobile.

the class Login2FaFragment method onAuthenticationChanged.

// OnChanged events
@SuppressWarnings("unused")
@Subscribe(threadMode = ThreadMode.MAIN)
public void onAuthenticationChanged(OnAuthenticationChanged event) {
    if (event.isError()) {
        endProgress();
        AppLog.e(T.API, "onAuthenticationChanged has error: " + event.error.type + " - " + event.error.message);
        mAnalyticsListener.trackLoginFailed(event.getClass().getSimpleName(), event.error.type.toString(), event.error.message);
        if (mIsSocialLogin) {
            mAnalyticsListener.trackSocialFailure(event.getClass().getSimpleName(), event.error.type.toString(), event.error.message);
        }
        if (isAdded()) {
            handleAuthError(event.error.type, event.error.message);
        }
        return;
    }
    AppLog.i(T.NUX, "onAuthenticationChanged: " + event.toString());
    if (mIsSocialLoginConnect) {
        PushSocialPayload payload = new PushSocialPayload(mIdToken, mService);
        mDispatcher.dispatch(AccountActionBuilder.newPushSocialConnectAction(payload));
    } else {
        doFinishLogin();
    }
}
Also used : PushSocialPayload(org.wordpress.android.fluxc.store.AccountStore.PushSocialPayload) Subscribe(org.greenrobot.eventbus.Subscribe)

Example 2 with PushSocialPayload

use of org.wordpress.android.fluxc.store.AccountStore.PushSocialPayload in project WordPress-Login-Flow-Android by wordpress-mobile.

the class SignupGoogleFragment method onSocialChanged.

@SuppressWarnings("unused")
@Subscribe(threadMode = ThreadMode.MAIN)
public void onSocialChanged(AccountStore.OnSocialChanged event) {
    if (event.isError()) {
        AppLog.e(T.API, "SignupGoogleFragment.onSocialChanged: " + event.error.type + " - " + event.error.message);
        switch(event.error.type) {
            // WordPress account exists with input email address, and two-factor authentication is required.
            case TWO_STEP_ENABLED:
                mAnalyticsListener.trackSignupSocial2faNeeded();
                mAnalyticsListener.trackSignupSocialToLogin();
                mLoginListener.showSignupToLoginMessage();
                // Dispatch social login action to retrieve data required for two-factor authentication.
                PushSocialPayload payload = new PushSocialPayload(mIdToken, SERVICE_TYPE_GOOGLE);
                mDispatcher.dispatch(AccountActionBuilder.newPushSocialLoginAction(payload));
                break;
            // WordPress account exists with input email address, but not connected.
            case USER_EXISTS:
                mAnalyticsListener.trackSignupSocialAccountsNeedConnecting();
                mAnalyticsListener.trackSignupSocialToLogin();
                mLoginListener.showSignupToLoginMessage();
                mLoginListener.loginViaSocialAccount(mGoogleEmail, mIdToken, SERVICE_TYPE_GOOGLE, true);
                // Kill connections with FluxC and this fragment since the flow is changing to login.
                mDispatcher.unregister(this);
                getActivity().getSupportFragmentManager().beginTransaction().remove(this).commit();
                break;
            default:
                showErrorDialog(getString(R.string.login_error_generic));
                break;
        }
    // Response does not return error when two-factor authentication is required.
    } else if (event.requiresTwoStepAuth) {
        mAnalyticsListener.trackSignupSocialToLogin();
        mLoginListener.needs2faSocial(mGoogleEmail, event.userId, event.nonceAuthenticator, event.nonceBackup, event.nonceSms);
        // Kill connections with FluxC and this fragment since the flow is changing to login.
        mDispatcher.unregister(this);
        getActivity().getSupportFragmentManager().beginTransaction().remove(this).commit();
    }
}
Also used : PushSocialPayload(org.wordpress.android.fluxc.store.AccountStore.PushSocialPayload) Subscribe(org.greenrobot.eventbus.Subscribe)

Example 3 with PushSocialPayload

use of org.wordpress.android.fluxc.store.AccountStore.PushSocialPayload in project WordPress-Login-Flow-Android by wordpress-mobile.

the class SignupGoogleFragment method onActivityResult.

@Override
public void onActivityResult(int request, int result, Intent data) {
    super.onActivityResult(request, result, data);
    switch(request) {
        case REQUEST_SIGNUP:
            if (result == RESULT_OK) {
                GoogleSignInResult signInResult = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
                if (signInResult.isSuccess()) {
                    try {
                        GoogleSignInAccount account = signInResult.getSignInAccount();
                        if (account != null) {
                            mDisplayName = account.getDisplayName() != null ? account.getDisplayName() : "";
                            mGoogleEmail = account.getEmail() != null ? account.getEmail() : "";
                            mIdToken = account.getIdToken() != null ? account.getIdToken() : "";
                            mPhotoUrl = removeScaleFromGooglePhotoUrl(account.getPhotoUrl() != null ? account.getPhotoUrl().toString() : "");
                        }
                        PushSocialPayload payload = new PushSocialPayload(mIdToken, SERVICE_TYPE_GOOGLE);
                        mDispatcher.dispatch(AccountActionBuilder.newPushSocialSignupAction(payload));
                        mOldSitesIds = SiteUtils.getCurrentSiteIds(mSiteStore, false);
                    } catch (NullPointerException exception) {
                        disconnectGoogleClient();
                        AppLog.e(T.NUX, "Cannot get ID token from Google signup account.", exception);
                        showErrorDialog(getString(R.string.login_error_generic));
                    }
                } else {
                    mAnalyticsListener.trackSignupSocialButtonFailure();
                    switch(signInResult.getStatus().getStatusCode()) {
                        // Internal error.
                        case GoogleSignInStatusCodes.INTERNAL_ERROR:
                            AppLog.e(T.NUX, "Google Signup Failed: internal error.");
                            showErrorDialog(getString(R.string.login_error_generic));
                            break;
                        // Attempted to connect with an invalid account name specified.
                        case GoogleSignInStatusCodes.INVALID_ACCOUNT:
                            AppLog.e(T.NUX, "Google Signup Failed: invalid account name.");
                            showErrorDialog(getString(R.string.login_error_generic) + getString(R.string.login_error_suffix));
                            break;
                        // Network error.
                        case GoogleSignInStatusCodes.NETWORK_ERROR:
                            AppLog.e(T.NUX, "Google Signup Failed: network error.");
                            showErrorDialog(getString(R.string.error_generic_network));
                            break;
                        // Cancelled by the user.
                        case GoogleSignInStatusCodes.SIGN_IN_CANCELLED:
                            AppLog.e(T.NUX, "Google Signup Failed: cancelled by user.");
                            break;
                        // Attempt didn't succeed with the current account.
                        case GoogleSignInStatusCodes.SIGN_IN_FAILED:
                            AppLog.e(T.NUX, "Google Signup Failed: current account failed.");
                            showErrorDialog(getString(R.string.login_error_generic));
                            break;
                        // Attempted to connect, but the user is not signed in.
                        case GoogleSignInStatusCodes.SIGN_IN_REQUIRED:
                            AppLog.e(T.NUX, "Google Signup Failed: user is not signed in.");
                            showErrorDialog(getString(R.string.login_error_generic));
                            break;
                        // Timeout error.
                        case GoogleSignInStatusCodes.TIMEOUT:
                            AppLog.e(T.NUX, "Google Signup Failed: timeout error.");
                            showErrorDialog(getString(R.string.google_error_timeout));
                            break;
                        // Unknown error.
                        default:
                            AppLog.e(T.NUX, "Google Signup Failed: unknown error.");
                            showErrorDialog(getString(R.string.login_error_generic));
                            break;
                    }
                }
            } else if (result == RESULT_CANCELED) {
                mAnalyticsListener.trackSignupSocialButtonFailure();
                AppLog.e(T.NUX, "Google Signup Failed: result was CANCELED.");
                dismissProgressDialog();
            } else {
                mAnalyticsListener.trackSignupSocialButtonFailure();
                AppLog.e(T.NUX, "Google Signup Failed: result was not OK or CANCELED.");
                showErrorDialog(getString(R.string.login_error_generic));
                dismissProgressDialog();
            }
            break;
    }
}
Also used : GoogleSignInAccount(com.google.android.gms.auth.api.signin.GoogleSignInAccount) PushSocialPayload(org.wordpress.android.fluxc.store.AccountStore.PushSocialPayload) GoogleSignInResult(com.google.android.gms.auth.api.signin.GoogleSignInResult)

Example 4 with PushSocialPayload

use of org.wordpress.android.fluxc.store.AccountStore.PushSocialPayload in project WordPress-Login-Flow-Android by wordpress-mobile.

the class LoginWpcomService method onAuthenticationChanged.

// OnChanged events
@SuppressWarnings("unused")
@Subscribe(threadMode = ThreadMode.MAIN)
public void onAuthenticationChanged(OnAuthenticationChanged event) {
    if (event.isError()) {
        AppLog.e(T.API, "onAuthenticationChanged has error: " + event.error.type + " - " + event.error.message);
        handleAuthError(event.error.type, event.error.message);
        return;
    }
    AppLog.i(T.NUX, "onAuthenticationChanged: " + event.toString());
    if (mIsSocialLogin) {
        setState(LoginStep.SOCIAL_LOGIN);
        PushSocialPayload payload = new PushSocialPayload(mIdToken, mService);
        mDispatcher.dispatch(AccountActionBuilder.newPushSocialConnectAction(payload));
    } else {
        signalCredentialsOK();
        fetchAccount();
    }
}
Also used : PushSocialPayload(org.wordpress.android.fluxc.store.AccountStore.PushSocialPayload) Subscribe(org.greenrobot.eventbus.Subscribe)

Example 5 with PushSocialPayload

use of org.wordpress.android.fluxc.store.AccountStore.PushSocialPayload in project WordPress-Login-Flow-Android by wordpress-mobile.

the class LoginGoogleFragment method onActivityResult.

@Override
public void onActivityResult(int request, int result, Intent data) {
    super.onActivityResult(request, result, data);
    switch(request) {
        case REQUEST_LOGIN:
            if (result == RESULT_OK) {
                GoogleSignInResult signInResult = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
                if (signInResult.isSuccess()) {
                    try {
                        GoogleSignInAccount account = signInResult.getSignInAccount();
                        if (account != null) {
                            mGoogleEmail = account.getEmail() != null ? account.getEmail() : "";
                            mGoogleListener.onGoogleEmailSelected(mGoogleEmail);
                            mIdToken = account.getIdToken() != null ? account.getIdToken() : "";
                        }
                        PushSocialPayload payload = new PushSocialPayload(mIdToken, SERVICE_TYPE_GOOGLE);
                        mDispatcher.dispatch(AccountActionBuilder.newPushSocialLoginAction(payload));
                    } catch (NullPointerException exception) {
                        disconnectGoogleClient();
                        AppLog.e(T.NUX, "Cannot get ID token from Google login account.", exception);
                        showErrorDialog(getString(R.string.login_error_generic));
                    }
                } else {
                    mAnalyticsListener.trackSocialButtonFailure();
                    switch(signInResult.getStatus().getStatusCode()) {
                        // Internal error.
                        case GoogleSignInStatusCodes.INTERNAL_ERROR:
                            AppLog.e(T.NUX, "Google Login Failed: internal error.");
                            showErrorDialog(getString(R.string.login_error_generic));
                            break;
                        // Attempted to connect with an invalid account name specified.
                        case GoogleSignInStatusCodes.INVALID_ACCOUNT:
                            AppLog.e(T.NUX, "Google Login Failed: invalid account name.");
                            showErrorDialog(getString(R.string.login_error_generic) + getString(R.string.login_error_suffix));
                            break;
                        // Network error.
                        case GoogleSignInStatusCodes.NETWORK_ERROR:
                            AppLog.e(T.NUX, "Google Login Failed: network error.");
                            showErrorDialog(getString(R.string.error_generic_network));
                            break;
                        // Cancelled by the user.
                        case GoogleSignInStatusCodes.SIGN_IN_CANCELLED:
                            AppLog.e(T.NUX, "Google Login Failed: cancelled by user.");
                            break;
                        // Attempt didn't succeed with the current account.
                        case GoogleSignInStatusCodes.SIGN_IN_FAILED:
                            AppLog.e(T.NUX, "Google Login Failed: current account failed.");
                            showErrorDialog(getString(R.string.login_error_generic));
                            break;
                        // Attempted to connect, but the user is not signed in.
                        case GoogleSignInStatusCodes.SIGN_IN_REQUIRED:
                            AppLog.e(T.NUX, "Google Login Failed: user is not signed in.");
                            showErrorDialog(getString(R.string.login_error_generic));
                            break;
                        // Timeout error.
                        case GoogleSignInStatusCodes.TIMEOUT:
                            AppLog.e(T.NUX, "Google Login Failed: timeout error.");
                            showErrorDialog(getString(R.string.google_error_timeout));
                            break;
                        // Unknown error.
                        default:
                            AppLog.e(T.NUX, "Google Login Failed: unknown error.");
                            showErrorDialog(getString(R.string.login_error_generic));
                            break;
                    }
                }
            } else if (result == RESULT_CANCELED) {
                mAnalyticsListener.trackSocialButtonFailure();
                AppLog.e(T.NUX, "Google Login Failed: result was CANCELED.");
            } else {
                mAnalyticsListener.trackSocialButtonFailure();
                AppLog.e(T.NUX, "Google Login Failed: result was not OK or CANCELED.");
                showErrorDialog(getString(R.string.login_error_generic));
            }
            break;
    }
}
Also used : GoogleSignInAccount(com.google.android.gms.auth.api.signin.GoogleSignInAccount) PushSocialPayload(org.wordpress.android.fluxc.store.AccountStore.PushSocialPayload) GoogleSignInResult(com.google.android.gms.auth.api.signin.GoogleSignInResult)

Aggregations

PushSocialPayload (org.wordpress.android.fluxc.store.AccountStore.PushSocialPayload)5 Subscribe (org.greenrobot.eventbus.Subscribe)3 GoogleSignInAccount (com.google.android.gms.auth.api.signin.GoogleSignInAccount)2 GoogleSignInResult (com.google.android.gms.auth.api.signin.GoogleSignInResult)2