30
30
import com .google .firebase .auth .FirebaseAuth ;
31
31
import com .google .firebase .auth .ProviderQueryResult ;
32
32
33
+ import java .util .Arrays ;
33
34
import java .util .List ;
34
35
35
36
public class AccountLinkInitActivity extends NoControllerBaseActivity {
36
- FirebaseAuthWrapper mApiWrapper ;
37
+ protected FirebaseAuthWrapper mApiWrapper ;
38
+ private static final int RC_SAVE_CREDENTIALS = 3 ;
39
+ private static final int RC_WELCOME_BACK_IDP_PROMPT = 4 ;
40
+ private static final int RC_WELCOME_BACK_PASSWORD_PROMPT = 5 ;
41
+ private static final List <Integer > REQUEST_CODES = Arrays .asList (
42
+ RC_SAVE_CREDENTIALS ,
43
+ RC_WELCOME_BACK_IDP_PROMPT ,
44
+ RC_WELCOME_BACK_PASSWORD_PROMPT );
37
45
38
46
@ Override
39
47
protected void onCreate (Bundle savedInstanceState ) {
@@ -54,9 +62,15 @@ public static Intent createStartIntent(Context context, String appName, String i
54
62
.putExtra (ControllerConstants .EXTRA_PROVIDER , provider );
55
63
}
56
64
65
+ public void onActivityResult (int requestCode , int resultCode , Intent data ) {
66
+ if (REQUEST_CODES .contains (requestCode )) {
67
+ finish (resultCode , data );
68
+ }
69
+ }
70
+
57
71
void next (final String email , final String password , final String provider ) {
58
72
if (email == null ) {
59
- finish ();
73
+ finish (RESULT_OK , new Intent () );
60
74
return ;
61
75
}
62
76
FirebaseAuth firebaseAuth = getFirebaseAuth ();
@@ -69,44 +83,56 @@ public void onComplete(@NonNull Task<ProviderQueryResult> task) {
69
83
List <String > providers = task .getResult ().getProviders ();
70
84
if (providers .size () == 0 ) {
71
85
// new account for this email
72
- startActivity (SaveCredentialsActivity .createIntent (
86
+ startActivityForResult (SaveCredentialsActivity .createIntent (
73
87
getApplicationContext (),
74
88
null ,
75
89
email ,
76
90
password ,
77
91
provider ,
78
92
null ,
79
- mAppName ));
80
- finish ();
93
+ mAppName ), RC_SAVE_CREDENTIALS );
81
94
} else if (providers .size () == 1 ) {
82
95
if (providers .get (0 ).equals (provider )) {
83
96
// existing account but has this IDP linked
84
- startActivity (
85
- new Intent (getApplicationContext (), SaveCredentialsActivity .class )
86
- .putExtra (ControllerConstants .EXTRA_EMAIL , email )
87
- .putExtra (ControllerConstants .EXTRA_PROVIDER , provider )
88
- .putExtra (ControllerConstants .EXTRA_PASSWORD , password ));
89
- finish ();
97
+ startActivityForResult (
98
+ SaveCredentialsActivity .createIntent (
99
+ AccountLinkInitActivity .this ,
100
+ null ,
101
+ email ,
102
+ password ,
103
+ provider ,
104
+ null ,
105
+ mAppName ),
106
+ RC_SAVE_CREDENTIALS );
90
107
} else {
91
108
if (providers .get (0 ).equals (EmailAuthProvider .PROVIDER_ID )) {
92
- startActivity (
93
- new Intent (getApplicationContext (), WelcomeBackPasswordPrompt .class )
94
- .putExtra (ControllerConstants .EXTRA_EMAIL , email )
95
- .putExtra (ControllerConstants .EXTRA_APP_NAME , mAppName ));
96
- finish ();
109
+ startActivityForResult (
110
+ WelcomeBackPasswordPrompt .createIntent (
111
+ getApplicationContext (), email , mAppName ),
112
+ RC_WELCOME_BACK_PASSWORD_PROMPT );
97
113
} else {
98
114
// existing account but has a different IDP linked
99
- startActivity (
100
- new Intent (getApplicationContext (), WelcomeBackIDPPrompt .class )
101
- .putExtra (ControllerConstants .EXTRA_EMAIL , email )
102
- .putExtra (ControllerConstants .EXTRA_PROVIDER , provider )
115
+ startActivityForResult (
116
+ WelcomeBackIDPPrompt .createIntent (
117
+ getApplicationContext (),
118
+ provider ,
119
+ mAppName ,
120
+ email
121
+ ),
122
+ RC_WELCOME_BACK_IDP_PROMPT
103
123
);
104
124
}
105
125
}
106
126
} else {
107
127
// more than one providers
108
- startActivity (new Intent (getApplicationContext (), WelcomeBackIDPPrompt .class )
109
- .putExtra (ControllerConstants .EXTRA_EMAIL , email ));
128
+ startActivityForResult (
129
+ WelcomeBackIDPPrompt .createIntent (
130
+ getApplicationContext (),
131
+ provider ,
132
+ mAppName ,
133
+ email
134
+ ),
135
+ RC_WELCOME_BACK_IDP_PROMPT );
110
136
finish ();
111
137
}
112
138
}
0 commit comments