1
1
package com .firebase .ui .auth .ui .credentials ;
2
2
3
- import android .arch .lifecycle .Observer ;
4
3
import android .arch .lifecycle .ViewModelProviders ;
5
4
import android .content .Context ;
6
5
import android .content .Intent ;
10
9
import android .util .Log ;
11
10
12
11
import com .firebase .ui .auth .IdpResponse ;
12
+ import com .firebase .ui .auth .R ;
13
13
import com .firebase .ui .auth .data .model .FlowParameters ;
14
14
import com .firebase .ui .auth .data .model .Resource ;
15
15
import com .firebase .ui .auth .ui .HelperActivityBase ;
16
16
import com .firebase .ui .auth .util .ExtraConstants ;
17
- import com .firebase .ui .auth .util . ui . FlowUtils ;
17
+ import com .firebase .ui .auth .viewmodel . VoidResourceObserver ;
18
18
import com .firebase .ui .auth .viewmodel .smartlock .SmartLockHandler ;
19
19
import com .google .android .gms .auth .api .credentials .Credential ;
20
20
@@ -47,15 +47,18 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
47
47
Credential credential = getIntent ().getParcelableExtra (ExtraConstants .CREDENTIAL );
48
48
mIdpResponse = getIntent ().getParcelableExtra (ExtraConstants .IDP_RESPONSE );
49
49
50
- mHandler .getOperation ().observe (this , new Observer <Resource <Void >>() {
50
+ mHandler .getOperation ().observe (this , new VoidResourceObserver (
51
+ this , R .string .fui_progress_dialog_loading ) {
51
52
@ Override
52
- public void onChanged (@ Nullable Resource <Void > resource ) {
53
- if (resource == null ) {
54
- Log .w (TAG , "getSaveOperation:onChanged:null" );
55
- return ;
56
- }
53
+ protected void onSuccess () {
54
+ finish (RESULT_OK , mIdpResponse .toIntent ());
55
+ }
57
56
58
- if (!resource .isUsed ()) { onSaveOperation (resource ); }
57
+ @ Override
58
+ protected void onFailure (@ NonNull Exception e ) {
59
+ // RESULT_OK since we don't want to halt sign-in just because of a credential save
60
+ // error.
61
+ finish (RESULT_OK , mIdpResponse .toIntent ());
59
62
}
60
63
});
61
64
@@ -74,18 +77,4 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
74
77
super .onActivityResult (requestCode , resultCode , data );
75
78
mHandler .onActivityResult (requestCode , resultCode );
76
79
}
77
-
78
- private void onSaveOperation (@ NonNull Resource <Void > resource ) {
79
- switch (resource .getState ()) {
80
- case LOADING :
81
- // No-op?
82
- break ;
83
- case SUCCESS :
84
- case FAILURE :
85
- if (FlowUtils .unhandled (this , resource .getException ())) {
86
- finish (RESULT_OK , mIdpResponse .toIntent ());
87
- }
88
- break ;
89
- }
90
- }
91
80
}
0 commit comments