Skip to content

Commit 29f8885

Browse files
ashwinraghavsamtstern
authored andcommitted
Fixing race between user code submission and verification callback (#931)
1 parent 9dc4c12 commit 29f8885

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

auth/src/main/java/com/firebase/ui/auth/ui/phone/PhoneVerificationActivity.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ protected void onCreate(final Bundle savedInstance) {
8888
mVerificationState = VerificationState.VERIFICATION_NOT_STARTED;
8989
if (savedInstance != null && !savedInstance.isEmpty()) {
9090
mPhoneNumber = savedInstance.getString(KEY_VERIFICATION_PHONE);
91+
9192
if (savedInstance.getSerializable(KEY_STATE) != null) {
9293
mVerificationState = (VerificationState) savedInstance.getSerializable(KEY_STATE);
9394
}
@@ -156,7 +157,18 @@ void verifyPhoneNumber(String phoneNumber, boolean forceResend) {
156157
}
157158
}
158159

159-
public void submitConfirmationCode(String confirmationCode) {
160+
public void submitConfirmationCode(@NonNull String confirmationCode) {
161+
if (TextUtils.isEmpty(mVerificationId) || TextUtils.isEmpty(confirmationCode)) {
162+
// This situation should never happen except in the case of an extreme race
163+
// condition, so we will just ignore the submission.
164+
// See: https://github.com/firebase/FirebaseUI-Android/issues/922
165+
Log.w(PHONE_VERIFICATION_LOG_TAG,
166+
String.format("submitConfirmationCode: mVerificationId is %s ; " +
167+
"confirmationCode is %s", TextUtils.isEmpty(mVerificationId) ? "empty" : "not empty",
168+
TextUtils.isEmpty(confirmationCode) ? "empty" : "not empty"));
169+
return;
170+
}
171+
160172
showLoadingDialog(getString(R.string.fui_verifying));
161173
signIn(PhoneAuthProvider.getCredential(mVerificationId, confirmationCode));
162174
}

0 commit comments

Comments
 (0)