@@ -43,6 +43,8 @@ METHOD_LOOKUP_DEFINITION(tokenresult,
4343 X (ProviderData, " getProviderData" , " ()Ljava/util/List;" ), \
4444 X (UpdateEmail, " updateEmail" , " (Ljava/lang/String;)" \
4545 " Lcom/google/android/gms/tasks/Task;" ), \
46+ X (VerifyBeforeUpdateEmail, " verifyBeforeUpdateEmail" , \
47+ " (Ljava/lang/String;)Lcom/google/android/gms/tasks/Task;" ), \
4648 X (UpdatePassword, " updatePassword" , " (Ljava/lang/String;)" \
4749 " Lcom/google/android/gms/tasks/Task;" ), \
4850 X (UpdateUserProfile, " updateProfile" , \
@@ -782,6 +784,28 @@ Future<void> User::SendEmailVerification() {
782784 return MakeFuture (&futures, handle);
783785}
784786
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+
785809Future<void > User::Delete () {
786810 if (!ValidUser (auth_data_)) {
787811 return Future<void >();
0 commit comments