88import com .firebase .ui .auth .AuthUI ;
99import com .google .android .gms .tasks .OnCompleteListener ;
1010import com .google .android .gms .tasks .OnFailureListener ;
11+ import com .google .android .gms .tasks .OnSuccessListener ;
1112import com .google .android .gms .tasks .Task ;
1213import com .google .firebase .auth .AuthResult ;
1314import com .google .firebase .auth .FirebaseAuth ;
@@ -47,21 +48,63 @@ public boolean execute(String action, JSONArray args, CallbackContext callbackCo
4748 Log .d (TAG , "action : " + action );
4849
4950 if ("initialise" .equals (action )) {
50- return initialise (args , callbackContext );
51+ return initialise (args , callbackContext );
5152 } else if ("signIn" .equals (action )) {
52- return signIn (callbackContext );
53+ return signIn (callbackContext );
5354 } else if ("signOut" .equals (action )) {
54- return signOut (callbackContext );
55+ return signOut (callbackContext );
5556 } else if ("deleteUser" .equals (action )) {
56- return deleteUser (callbackContext );
57+ return deleteUser (callbackContext );
5758 } else if ("getToken" .equals (action )) {
58- return getToken (callbackContext );
59+ return getToken (callbackContext );
60+ } else if ("sendEmailVerification" .equals (action )) {
61+ return sendEmailVerification (callbackContext );
62+ } else if ("reloadUser" .equals (action )) {
63+ return reloadUser (callbackContext );
5964 } else {
60- Log .w (TAG , "Unknown action : " + action );
61- return false ;
65+ Log .w (TAG , "Unknown action : " + action );
66+ return false ;
6267 }
6368 }
6469
70+ private boolean reloadUser (CallbackContext callbackContext ) {
71+ FirebaseUser user = firebaseAuth .getCurrentUser ();
72+
73+ if (user != null ) {
74+ user .reload ().addOnSuccessListener (new OnSuccessListener <Void >() {
75+
76+ @ Override
77+ public void onSuccess (Void aVoid ) {
78+ FirebaseUser user = firebaseAuth .getCurrentUser ();
79+ raiseEventForUser (user );
80+ }
81+ });
82+ }
83+
84+ return true ;
85+ }
86+
87+ private boolean sendEmailVerification (final CallbackContext callbackContext ) {
88+
89+ FirebaseUser user = firebaseAuth .getCurrentUser ();
90+
91+ if (user != null && !anonymous ) {
92+
93+ user .sendEmailVerification ().addOnCompleteListener (new OnCompleteListener () {
94+ @ Override
95+ public void onComplete (@ NonNull Task task ) {
96+ if (task .isSuccessful ()) {
97+ raiseEvent (callbackContext , "emailverificationsent" , null );
98+ } else {
99+ raiseEvent (callbackContext , "emailverificationnotsent" , null );
100+ }
101+ }
102+ });
103+ }
104+
105+ return true ;
106+ }
107+
65108 private boolean initialise (JSONArray args , final CallbackContext callbackContext ) {
66109
67110 Log .d (TAG , "initialise" );
@@ -200,7 +243,7 @@ private AuthUI.SignInIntentBuilder buildCustomInstance() {
200243 }
201244 instance = instance .setIsSmartLockEnabled (smartLockEnabled , smartLockHints );
202245 } catch (JSONException ex ) {
203- Log .e (TAG , "Error in buildCustomInstance " , ex );
246+ Log .e (TAG , "Error in buildCustomInstance " , ex );
204247 }
205248
206249 return instance ;
@@ -286,7 +329,7 @@ private void raiseErrorEvent(String event, int code, String message) {
286329 data .put ("code" , code );
287330 data .put ("message" , message );
288331 } catch (JSONException e ) {
289- Log .e (TAG , "Error in raiseErrorEvent " , e );
332+ Log .e (TAG , "Error in raiseErrorEvent " , e );
290333 }
291334 raiseEvent (callbackContext , event , data );
292335 }
@@ -297,15 +340,23 @@ private void raiseEventForUser(FirebaseUser user) {
297340 Log .d (TAG , "raiseEventForUser" );
298341
299342 try {
343+
344+ anonymous = false ;
345+
300346 resultData .put ("name" , user .getDisplayName ());
301347 resultData .put ("email" , user .getEmail ());
302348 resultData .put ("emailVerified" , user .isEmailVerified ());
303349 resultData .put ("id" , user .getUid ());
350+ if (user .getMetadata ().getCreationTimestamp () == user .getMetadata ().getLastSignInTimestamp ()) {
351+ resultData .put ("newUser" , true );
352+ } else {
353+ resultData .put ("newUser" , false );
354+ }
304355 if (user .getPhotoUrl () != null ) {
305356 resultData .put ("photoUrl" , user .getPhotoUrl ().toString ());
306357 }
307358 } catch (JSONException e ) {
308- Log .e (TAG , "Error in raiseEventForUser " , e );
359+ Log .e (TAG , "Error in raiseEventForUser " , e );
309360 }
310361
311362 raiseEvent (callbackContext , "signinsuccess" , resultData );
@@ -344,7 +395,7 @@ private void raiseEvent(CallbackContext callbackContext, String type, Object dat
344395 event .put ("data" , data );
345396 }
346397 } catch (JSONException e ) {
347- Log .e (TAG , "Error in raiseEvent " , e );
398+ Log .e (TAG , "Error in raiseEvent " , e );
348399 }
349400
350401 PluginResult result = new PluginResult (PluginResult .Status .OK , event );
@@ -363,7 +414,7 @@ public void onComplete(@NonNull Task<AuthResult> task) {
363414 data .put ("code" , err .getClass ().getSimpleName ());
364415 data .put ("message" , err .getMessage ());
365416 } catch (JSONException e ) {
366- Log .e (TAG , "Error in onComplete " , e );
417+ Log .e (TAG , "Error in onComplete " , e );
367418 }
368419 raiseEvent (callbackContext , "signinfailure" , data );
369420 }
0 commit comments