@@ -43,6 +43,8 @@ METHOD_LOOKUP_DEFINITION(tokenresult,
43
43
X (ProviderData, " getProviderData" , " ()Ljava/util/List;" ), \
44
44
X (UpdateEmail, " updateEmail" , " (Ljava/lang/String;)" \
45
45
" Lcom/google/android/gms/tasks/Task;" ), \
46
+ X (VerifyBeforeUpdateEmail, " verifyBeforeUpdateEmail" , \
47
+ " (Ljava/lang/String;)Lcom/google/android/gms/tasks/Task;" ), \
46
48
X (UpdatePassword, " updatePassword" , " (Ljava/lang/String;)" \
47
49
" Lcom/google/android/gms/tasks/Task;" ), \
48
50
X (UpdateUserProfile, " updateProfile" , \
@@ -782,6 +784,28 @@ Future<void> User::SendEmailVerification() {
782
784
return MakeFuture (&futures, handle);
783
785
}
784
786
787
+ Future<void > User::SendEmailVerificationBeforeUpdatingEmail (const char * email) {
788
+ if (!ValidUser (auth_data_)) {
789
+ return Future<void >();
790
+ }
791
+ ReferenceCountedFutureImpl& futures = auth_data_->future_impl ;
792
+ const auto handle =
793
+ futures.SafeAlloc <void >(kUserFn_SendEmailVerificationBeforeUpdatingEmail );
794
+ JNIEnv* env = Env (auth_data_);
795
+
796
+ jstring j_email = env->NewStringUTF (email);
797
+ jobject pending_result = env->CallObjectMethod (
798
+ UserImpl (auth_data_), user::GetMethodId (user::kVerifyBeforeUpdateEmail ),
799
+ j_email);
800
+ env->DeleteLocalRef (j_email);
801
+
802
+ if (!CheckAndCompleteFutureOnError (env, &futures, handle)) {
803
+ RegisterCallback (pending_result, handle, auth_data_, nullptr );
804
+ env->DeleteLocalRef (pending_result);
805
+ }
806
+ return MakeFuture (&futures, handle);
807
+ }
808
+
785
809
Future<void > User::Delete () {
786
810
if (!ValidUser (auth_data_)) {
787
811
return Future<void >();
0 commit comments