44import android .os .Bundle ;
55import android .text .TextUtils ;
66import android .util .Log ;
7- import android .widget .Button ;
8- import android .widget .TextView ;
7+ import android .view .View ;
98import android .widget .Toast ;
109
1110import com .firebase .ui .auth .AuthUI ;
1413import com .firebase .ui .auth .IdpResponse ;
1514import com .firebase .ui .auth .data .model .FirebaseAuthUIAuthenticationResult ;
1615import com .firebase .uidemo .R ;
16+ import com .firebase .uidemo .databinding .ActivityAnonymousUpgradeBinding ;
1717import com .firebase .uidemo .util .ConfigurationUtils ;
1818import com .google .android .gms .tasks .OnCompleteListener ;
1919import com .google .android .gms .tasks .Task ;
2929import androidx .annotation .NonNull ;
3030import androidx .annotation .Nullable ;
3131import androidx .appcompat .app .AppCompatActivity ;
32- import butterknife .BindView ;
33- import butterknife .ButterKnife ;
34- import butterknife .OnClick ;
3532
3633public class AnonymousUpgradeActivity extends AppCompatActivity
3734 implements ActivityResultCallback <FirebaseAuthUIAuthenticationResult > {
3835
3936 private static final String TAG = "AccountLink" ;
4037
41- @ BindView (R .id .status_text )
42- TextView mStatus ;
38+ private static final int RC_SIGN_IN = 123 ;
4339
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 ;
5541
5642 private AuthCredential mPendingCredential ;
5743
@@ -61,8 +47,8 @@ public class AnonymousUpgradeActivity extends AppCompatActivity
6147 @ Override
6248 protected void onCreate (@ Nullable Bundle savedInstanceState ) {
6349 super .onCreate (savedInstanceState );
64- setContentView ( R . layout . activity_anonymous_upgrade );
65- ButterKnife . bind ( this );
50+ mBinding = ActivityAnonymousUpgradeBinding . inflate ( getLayoutInflater () );
51+ setContentView ( mBinding . getRoot () );
6652
6753 updateUI ();
6854
@@ -72,9 +58,36 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
7258 if (response != null ) {
7359 handleSignInResult (ErrorCodes .ANONYMOUS_UPGRADE_MERGE_CONFLICT , response );
7460 }
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+ });
7589 }
7690
77- @ OnClick (R .id .anon_sign_in )
7891 public void signInAnonymously () {
7992 FirebaseAuth .getInstance ().signInAnonymously ()
8093 .addOnCompleteListener (this , new OnCompleteListener <AuthResult >() {
@@ -92,7 +105,6 @@ public void onComplete(@NonNull Task<AuthResult> task) {
92105 });
93106 }
94107
95- @ OnClick (R .id .begin_flow )
96108 public void startAuthUI () {
97109 List <AuthUI .IdpConfig > providers = ConfigurationUtils .getConfiguredProviders (this );
98110 Intent signInIntent = AuthUI .getInstance ().createSignInIntentBuilder ()
@@ -103,7 +115,6 @@ public void startAuthUI() {
103115 signIn .launch (signInIntent );
104116 }
105117
106- @ OnClick (R .id .resolve_merge )
107118 public void resolveMerge () {
108119 if (mPendingCredential == null ) {
109120 Toast .makeText (this , "Nothing to resolve." , Toast .LENGTH_SHORT ).show ();
@@ -130,7 +141,6 @@ public void onComplete(@NonNull Task<AuthResult> task) {
130141 });
131142 }
132143
133- @ OnClick (R .id .sign_out )
134144 public void signOut () {
135145 AuthUI .getInstance ().signOut (this )
136146 .addOnCompleteListener (new OnCompleteListener <Void >() {
@@ -142,22 +152,33 @@ public void onComplete(@NonNull Task<Void> task) {
142152 });
143153 }
144154
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 ();
161182 }
162183
163184 updateUI ();
@@ -168,33 +189,33 @@ private void updateUI() {
168189
169190 if (currentUser == null ) {
170191 // 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 );
175196 } else if (mPendingCredential == null && currentUser .isAnonymous ()) {
176197 // 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 );
181202 } else if (mPendingCredential == null && !currentUser .isAnonymous ()) {
182203 // 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 );
187208 } else if (mPendingCredential != null ) {
188209 // 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 );
193214 }
194215 }
195216
196217 private void setStatus (String message ) {
197- mStatus .setText (message );
218+ mBinding . statusText .setText (message );
198219 }
199220
200221 private String getUserIdentifier (FirebaseUser user ) {
0 commit comments