@@ -41,8 +41,9 @@ public class AccountLinkInitActivity extends AppCompatBase {
41
41
private static final int RC_SAVE_CREDENTIALS = 3 ;
42
42
private static final int RC_WELCOME_BACK_IDP_PROMPT = 4 ;
43
43
private static final int RC_WELCOME_BACK_PASSWORD_PROMPT = 5 ;
44
- private static final List <Integer > REQUEST_CODES = Arrays .asList (
45
- RC_SAVE_CREDENTIALS ,
44
+
45
+ // request codes where we pass the result back to the calling activity
46
+ private static final List <Integer > CHECKED_REQUEST_CODES = Arrays .asList (
46
47
RC_WELCOME_BACK_IDP_PROMPT ,
47
48
RC_WELCOME_BACK_PASSWORD_PROMPT );
48
49
@@ -62,8 +63,10 @@ protected void onCreate(Bundle savedInstanceState) {
62
63
}
63
64
64
65
public void onActivityResult (int requestCode , int resultCode , Intent data ) {
65
- if (REQUEST_CODES .contains (requestCode )) {
66
+ if (CHECKED_REQUEST_CODES .contains (requestCode )) {
66
67
finish (resultCode , data );
68
+ } else if (RC_SAVE_CREDENTIALS == requestCode ){
69
+ finish (RESULT_OK , new Intent ());
67
70
}
68
71
}
69
72
@@ -86,22 +89,22 @@ public void onComplete(@NonNull Task<ProviderQueryResult> task) {
86
89
startActivityForResult (SaveCredentialsActivity .createIntent (
87
90
getApplicationContext (),
88
91
mActivityHelper .flowParams ,
92
+ null ,
89
93
email ,
90
94
password ,
91
95
provider ,
92
- null ,
93
- mActivityHelper .getAppName ()), RC_SAVE_CREDENTIALS );
96
+ null ), RC_SAVE_CREDENTIALS );
94
97
} else if (providers .size () == 1 ) {
95
98
if (providers .get (0 ).equals (provider )) {
96
99
// existing account but has this IDP linked
97
100
startActivityForResult (SaveCredentialsActivity .createIntent (
98
101
AccountLinkInitActivity .this ,
99
102
mActivityHelper .flowParams ,
103
+ null ,
100
104
email ,
101
105
password ,
102
106
provider ,
103
- null ,
104
- mActivityHelper .getAppName ()),
107
+ null ),
105
108
RC_SAVE_CREDENTIALS );
106
109
} else {
107
110
if (providers .get (0 ).equals (EmailAuthProvider .PROVIDER_ID )) {
@@ -124,13 +127,26 @@ public void onComplete(@NonNull Task<ProviderQueryResult> task) {
124
127
}
125
128
} else {
126
129
// more than one providers
127
- startActivityForResult (WelcomeBackIDPPrompt .createIntent (
128
- getApplicationContext (),
129
- mActivityHelper .flowParams ,
130
- provider ,
131
- mIdpResponse ,
132
- email ),
133
- RC_WELCOME_BACK_IDP_PROMPT );
130
+ if (providers .contains (provider )) {
131
+ // this provider is already linked
132
+ startActivityForResult (SaveCredentialsActivity .createIntent (
133
+ AccountLinkInitActivity .this ,
134
+ mActivityHelper .flowParams ,
135
+ null ,
136
+ email ,
137
+ password ,
138
+ provider ,
139
+ null ),
140
+ RC_SAVE_CREDENTIALS );
141
+ } else {
142
+ startActivityForResult (WelcomeBackIDPPrompt .createIntent (
143
+ getApplicationContext (),
144
+ mActivityHelper .flowParams ,
145
+ provider ,
146
+ mIdpResponse ,
147
+ email ),
148
+ RC_WELCOME_BACK_IDP_PROMPT );
149
+ }
134
150
}
135
151
}
136
152
});
0 commit comments