Skip to content

Commit 71fa34a

Browse files
SUPERCILEXsamtstern
authored andcommitted
Save phone verification ID across process deaths (#1393)
1 parent a108176 commit 71fa34a

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

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

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@
4646
*/
4747
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
4848
public class PhoneActivity extends AppCompatBase {
49+
private PhoneNumberVerificationHandler mPhoneVerifier;
50+
4951
public static Intent createIntent(Context context, FlowParameters params, Bundle args) {
5052
return createBaseIntent(context, PhoneActivity.class, params)
5153
.putExtra(ExtraConstants.PARAMS, args);
@@ -72,10 +74,10 @@ protected void onFailure(@NonNull Exception e) {
7274
}
7375
});
7476

75-
final PhoneNumberVerificationHandler phoneVerifier =
76-
ViewModelProviders.of(this).get(PhoneNumberVerificationHandler.class);
77-
phoneVerifier.init(getFlowParams());
78-
phoneVerifier.getOperation().observe(this, new ResourceObserver<PhoneVerification>(
77+
mPhoneVerifier = ViewModelProviders.of(this).get(PhoneNumberVerificationHandler.class);
78+
mPhoneVerifier.init(getFlowParams());
79+
mPhoneVerifier.onRestoreInstanceState(savedInstanceState);
80+
mPhoneVerifier.getOperation().observe(this, new ResourceObserver<PhoneVerification>(
7981
this, R.string.fui_verifying) {
8082
@Override
8183
protected void onSuccess(@NonNull PhoneVerification verification) {
@@ -121,6 +123,12 @@ protected void onFailure(@NonNull Exception e) {
121123
.commit();
122124
}
123125

126+
@Override
127+
protected void onSaveInstanceState(Bundle outState) {
128+
super.onSaveInstanceState(outState);
129+
mPhoneVerifier.onSaveInstanceState(outState);
130+
}
131+
124132
@Override
125133
public void onBackPressed() {
126134
if (getSupportFragmentManager().getBackStackEntryCount() > 0) {

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.firebase.ui.auth.ui.phone;
22

33
import android.app.Application;
4+
import android.os.Bundle;
45
import android.support.annotation.NonNull;
6+
import android.support.annotation.Nullable;
57

68
import com.firebase.ui.auth.data.model.PhoneNumberVerificationRequiredException;
79
import com.firebase.ui.auth.data.model.Resource;
@@ -15,6 +17,7 @@
1517

1618
public class PhoneNumberVerificationHandler extends AuthViewModelBase<PhoneVerification> {
1719
private static final long AUTO_RETRIEVAL_TIMEOUT_SECONDS = 120;
20+
private static final String VERIFICATION_ID_KEY = "verification_id";
1821

1922
private String mVerificationId;
2023
private PhoneAuthProvider.ForceResendingToken mForceResendingToken;
@@ -60,4 +63,14 @@ public void submitVerificationCode(String number, String code) {
6063
PhoneAuthProvider.getCredential(mVerificationId, code),
6164
false)));
6265
}
66+
67+
public void onSaveInstanceState(@NonNull Bundle outState) {
68+
outState.putString(VERIFICATION_ID_KEY, mVerificationId);
69+
}
70+
71+
public void onRestoreInstanceState(@Nullable Bundle savedInstanceState) {
72+
if (mVerificationId == null && savedInstanceState != null) {
73+
mVerificationId = savedInstanceState.getString(VERIFICATION_ID_KEY);
74+
}
75+
}
6376
}

0 commit comments

Comments
 (0)