4
4
import android .os .Bundle ;
5
5
import android .text .TextUtils ;
6
6
import android .util .Log ;
7
- import android .widget .Button ;
8
- import android .widget .TextView ;
7
+ import android .view .View ;
9
8
import android .widget .Toast ;
10
9
11
10
import com .firebase .ui .auth .AuthUI ;
14
13
import com .firebase .ui .auth .IdpResponse ;
15
14
import com .firebase .ui .auth .data .model .FirebaseAuthUIAuthenticationResult ;
16
15
import com .firebase .uidemo .R ;
16
+ import com .firebase .uidemo .databinding .ActivityAnonymousUpgradeBinding ;
17
17
import com .firebase .uidemo .util .ConfigurationUtils ;
18
18
import com .google .android .gms .tasks .OnCompleteListener ;
19
19
import com .google .android .gms .tasks .Task ;
29
29
import androidx .annotation .NonNull ;
30
30
import androidx .annotation .Nullable ;
31
31
import androidx .appcompat .app .AppCompatActivity ;
32
- import butterknife .BindView ;
33
- import butterknife .ButterKnife ;
34
- import butterknife .OnClick ;
35
32
36
33
public class AnonymousUpgradeActivity extends AppCompatActivity
37
34
implements ActivityResultCallback <FirebaseAuthUIAuthenticationResult > {
38
35
39
36
private static final String TAG = "AccountLink" ;
40
37
41
- @ BindView (R .id .status_text )
42
- TextView mStatus ;
38
+ private static final int RC_SIGN_IN = 123 ;
43
39
44
- @ BindView (R .id .anon_sign_in )
45
- Button mAnonSignInButton ;
46
-
47
- @ BindView (R .id .begin_flow )
48
- Button mLaunchUIButton ;
49
-
50
- @ BindView (R .id .resolve_merge )
51
- Button mResolveMergeButton ;
52
-
53
- @ BindView (R .id .sign_out )
54
- Button mSignOutButton ;
40
+ private ActivityAnonymousUpgradeBinding mBinding ;
55
41
56
42
private AuthCredential mPendingCredential ;
57
43
@@ -61,8 +47,8 @@ public class AnonymousUpgradeActivity extends AppCompatActivity
61
47
@ Override
62
48
protected void onCreate (@ Nullable Bundle savedInstanceState ) {
63
49
super .onCreate (savedInstanceState );
64
- setContentView ( R . layout . activity_anonymous_upgrade );
65
- ButterKnife . bind ( this );
50
+ mBinding = ActivityAnonymousUpgradeBinding . inflate ( getLayoutInflater () );
51
+ setContentView ( mBinding . getRoot () );
66
52
67
53
updateUI ();
68
54
@@ -72,9 +58,36 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
72
58
if (response != null ) {
73
59
handleSignInResult (ErrorCodes .ANONYMOUS_UPGRADE_MERGE_CONFLICT , response );
74
60
}
61
+
62
+ mBinding .anonSignIn .setOnClickListener (new View .OnClickListener () {
63
+ @ Override
64
+ public void onClick (View view ) {
65
+ signInAnonymously ();
66
+ }
67
+ });
68
+
69
+ mBinding .beginFlow .setOnClickListener (new View .OnClickListener () {
70
+ @ Override
71
+ public void onClick (View view ) {
72
+ startAuthUI ();
73
+ }
74
+ });
75
+
76
+ mBinding .resolveMerge .setOnClickListener (new View .OnClickListener () {
77
+ @ Override
78
+ public void onClick (View view ) {
79
+ resolveMerge ();
80
+ }
81
+ });
82
+
83
+ mBinding .signOut .setOnClickListener (new View .OnClickListener () {
84
+ @ Override
85
+ public void onClick (View view ) {
86
+ signOut ();
87
+ }
88
+ });
75
89
}
76
90
77
- @ OnClick (R .id .anon_sign_in )
78
91
public void signInAnonymously () {
79
92
FirebaseAuth .getInstance ().signInAnonymously ()
80
93
.addOnCompleteListener (this , new OnCompleteListener <AuthResult >() {
@@ -92,7 +105,6 @@ public void onComplete(@NonNull Task<AuthResult> task) {
92
105
});
93
106
}
94
107
95
- @ OnClick (R .id .begin_flow )
96
108
public void startAuthUI () {
97
109
List <AuthUI .IdpConfig > providers = ConfigurationUtils .getConfiguredProviders (this );
98
110
Intent signInIntent = AuthUI .getInstance ().createSignInIntentBuilder ()
@@ -103,7 +115,6 @@ public void startAuthUI() {
103
115
signIn .launch (signInIntent );
104
116
}
105
117
106
- @ OnClick (R .id .resolve_merge )
107
118
public void resolveMerge () {
108
119
if (mPendingCredential == null ) {
109
120
Toast .makeText (this , "Nothing to resolve." , Toast .LENGTH_SHORT ).show ();
@@ -130,7 +141,6 @@ public void onComplete(@NonNull Task<AuthResult> task) {
130
141
});
131
142
}
132
143
133
- @ OnClick (R .id .sign_out )
134
144
public void signOut () {
135
145
AuthUI .getInstance ().signOut (this )
136
146
.addOnCompleteListener (new OnCompleteListener <Void >() {
@@ -142,22 +152,33 @@ public void onComplete(@NonNull Task<Void> task) {
142
152
});
143
153
}
144
154
145
- private void handleSignInResult (int resultCode , @ Nullable IdpResponse response ) {
146
- if (response == null ) {
147
- // User pressed back button
148
- return ;
149
- }
150
- if (resultCode == RESULT_OK ) {
151
- setStatus ("Signed in as " + getUserIdentifier (FirebaseAuth .getInstance ()
152
- .getCurrentUser ()));
153
- } else if (response .getError ().getErrorCode () == ErrorCodes
154
- .ANONYMOUS_UPGRADE_MERGE_CONFLICT ) {
155
- setStatus ("Merge conflict: user already exists." );
156
- mResolveMergeButton .setEnabled (true );
157
- mPendingCredential = response .getCredentialForLinking ();
158
- } else {
159
- Toast .makeText (this , "Auth error, see logs" , Toast .LENGTH_SHORT ).show ();
160
- Log .w (TAG , "Error: " + response .getError ().getMessage (), response .getError ());
155
+ @ Override
156
+ protected void onActivityResult (int requestCode , int resultCode , @ Nullable Intent data ) {
157
+ super .onActivityResult (requestCode , resultCode , data );
158
+ handleSignInResult (requestCode , resultCode , data );
159
+ }
160
+
161
+ private void handleSignInResult (int requestCode , int resultCode , Intent data ) {
162
+ if (requestCode == RC_SIGN_IN ) {
163
+ IdpResponse response = IdpResponse .fromResultIntent (data );
164
+ if (response == null ) {
165
+ // User pressed back button
166
+ return ;
167
+ }
168
+ if (resultCode == RESULT_OK ) {
169
+ setStatus ("Signed in as " + getUserIdentifier (FirebaseAuth .getInstance ()
170
+ .getCurrentUser ()));
171
+ } else if (response .getError ().getErrorCode () == ErrorCodes
172
+ .ANONYMOUS_UPGRADE_MERGE_CONFLICT ) {
173
+ setStatus ("Merge conflict: user already exists." );
174
+ mBinding .resolveMerge .setEnabled (true );
175
+ mPendingCredential = response .getCredentialForLinking ();
176
+ } else {
177
+ Toast .makeText (this , "Auth error, see logs" , Toast .LENGTH_SHORT ).show ();
178
+ Log .w (TAG , "Error: " + response .getError ().getMessage (), response .getError ());
179
+ }
180
+
181
+ updateUI ();
161
182
}
162
183
163
184
updateUI ();
@@ -168,33 +189,33 @@ private void updateUI() {
168
189
169
190
if (currentUser == null ) {
170
191
// Not signed in
171
- mAnonSignInButton .setEnabled (true );
172
- mLaunchUIButton .setEnabled (false );
173
- mResolveMergeButton .setEnabled (false );
174
- mSignOutButton .setEnabled (false );
192
+ mBinding . anonSignIn .setEnabled (true );
193
+ mBinding . beginFlow .setEnabled (false );
194
+ mBinding . resolveMerge .setEnabled (false );
195
+ mBinding . signOut .setEnabled (false );
175
196
} else if (mPendingCredential == null && currentUser .isAnonymous ()) {
176
197
// Anonymous user, waiting for linking
177
- mAnonSignInButton .setEnabled (false );
178
- mLaunchUIButton .setEnabled (true );
179
- mResolveMergeButton .setEnabled (false );
180
- mSignOutButton .setEnabled (true );
198
+ mBinding . anonSignIn .setEnabled (false );
199
+ mBinding . beginFlow .setEnabled (true );
200
+ mBinding . resolveMerge .setEnabled (false );
201
+ mBinding . signOut .setEnabled (true );
181
202
} else if (mPendingCredential == null && !currentUser .isAnonymous ()) {
182
203
// Fully signed in
183
- mAnonSignInButton .setEnabled (false );
184
- mLaunchUIButton .setEnabled (false );
185
- mResolveMergeButton .setEnabled (false );
186
- mSignOutButton .setEnabled (true );
204
+ mBinding . anonSignIn .setEnabled (false );
205
+ mBinding . beginFlow .setEnabled (false );
206
+ mBinding . resolveMerge .setEnabled (false );
207
+ mBinding . signOut .setEnabled (true );
187
208
} else if (mPendingCredential != null ) {
188
209
// Signed in anonymous, awaiting merge conflict
189
- mAnonSignInButton .setEnabled (false );
190
- mLaunchUIButton .setEnabled (false );
191
- mResolveMergeButton .setEnabled (true );
192
- mSignOutButton .setEnabled (true );
210
+ mBinding . anonSignIn .setEnabled (false );
211
+ mBinding . beginFlow .setEnabled (false );
212
+ mBinding . resolveMerge .setEnabled (true );
213
+ mBinding . signOut .setEnabled (true );
193
214
}
194
215
}
195
216
196
217
private void setStatus (String message ) {
197
- mStatus .setText (message );
218
+ mBinding . statusText .setText (message );
198
219
}
199
220
200
221
private String getUserIdentifier (FirebaseUser user ) {
0 commit comments