private void signInWithWebUIHelper()

in aws-auth-cognito/src/main/java/com/amplifyframework/auth/cognito/AWSCognitoAuthPlugin.java [1169:1242]


    private void signInWithWebUIHelper(
        @Nullable AuthProvider authProvider,
        @NonNull Activity callingActivity,
        @NonNull AuthWebUISignInOptions options,
        @NonNull Consumer<AuthSignInResult> onSuccess,
        @NonNull Consumer<AuthException> onException
    ) {
        HostedUIOptions.Builder optionsBuilder = HostedUIOptions.builder();
        SignInUIOptions.Builder signInUIOptionsBuilder = SignInUIOptions.builder();

        if (options != null) {
            if (options.getScopes() != null) {
                optionsBuilder.scopes(options.getScopes().toArray(new String[options.getScopes().size()]));
            }

            if (!options.getSignInQueryParameters().isEmpty()) {
                optionsBuilder.signInQueryParameters(options.getSignInQueryParameters());
            }

            if (!options.getSignOutQueryParameters().isEmpty()) {
                optionsBuilder.signOutQueryParameters(options.getSignOutQueryParameters());
            }

            if (!options.getTokenQueryParameters().isEmpty()) {
                optionsBuilder.tokenQueryParameters(options.getTokenQueryParameters());
            }

            if (options instanceof AWSCognitoAuthWebUISignInOptions) {
                AWSCognitoAuthWebUISignInOptions cognitoOptions = (AWSCognitoAuthWebUISignInOptions) options;
                optionsBuilder.idpIdentifier(cognitoOptions.getIdpIdentifier())
                        .federationProviderName(cognitoOptions.getFederationProviderName());
                signInUIOptionsBuilder.browserPackage(cognitoOptions.getBrowserPackage());
            }

            if (authProvider != null) {
                optionsBuilder.identityProvider(AuthProviderConverter.getIdentityProvider(authProvider));
            }
        }

        SignInUIOptions signInUIOptions = signInUIOptionsBuilder
                .hostedUIOptions(optionsBuilder.build())
                .build();

        awsMobileClient.showSignIn(callingActivity, signInUIOptions, new Callback<UserStateDetails>() {
            @Override
            public void onResult(UserStateDetails details) {
                fetchAndSetUserId(() -> onSuccess.accept(
                        new AuthSignInResult(
                                UserState.SIGNED_IN.equals(details.getUserState()),
                                new AuthNextSignInStep(
                                        AuthSignInStep.DONE,
                                        details.getDetails(),
                                        null
                                )
                        )
                ));
            }

            @Override
            public void onError(Exception error) {
                if (error instanceof AuthNavigationException) {
                    onException.accept(new AuthException.UserCancelledException(
                        "The user cancelled the sign-in attempt, so it did not complete.",
                        error, "To recover: catch this error, and show the sign-in screen again."
                    ));
                } else {
                    onException.accept(new AuthException(
                        "Sign-in with web UI failed", error,
                        "See attached exception for more details"
                    ));
                }
            }
        });
    }