Skip to content

Commit 4b363d4

Browse files
committed
Finish the check and register email flows
Change-Id: I95e08b3f2150387918ddf6a7455eda54a71f8296
1 parent d688455 commit 4b363d4

File tree

8 files changed

+191
-86
lines changed

8 files changed

+191
-86
lines changed

auth/src/main/java/com/firebase/ui/auth/ui/FragmentBase.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import com.google.firebase.auth.FirebaseUser;
1212

1313
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
14-
public class FragmentBase extends Fragment {
14+
public class FragmentBase extends Fragment implements ProgressView {
1515
private HelperActivityBase mActivity;
1616
private ProgressDialogHolder mProgressDialogHolder;
1717

@@ -44,4 +44,14 @@ public void startSaveCredentials(
4444
@Nullable String password) {
4545
mActivity.startSaveCredentials(firebaseUser, response, password);
4646
}
47+
48+
@Override
49+
public void showProgress(int message) {
50+
mActivity.showProgress(message);
51+
}
52+
53+
@Override
54+
public void hideProgress() {
55+
mActivity.hideProgress();
56+
}
4757
}

auth/src/main/java/com/firebase/ui/auth/ui/HelperActivityBase.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
@SuppressWarnings("Registered")
2727
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
28-
public class HelperActivityBase extends AppCompatActivity {
28+
public class HelperActivityBase extends AppCompatActivity implements ProgressView {
2929
private FlowParameters mParams;
3030

3131
private AuthHelper mAuthHelper;
@@ -95,10 +95,12 @@ public void startSaveCredentials(
9595
startActivityForResult(intent, RequestCodes.CRED_SAVE_FLOW);
9696
}
9797

98+
@Override
9899
public void showProgress(@StringRes int message) {
99100
getDialogHolder().showLoadingDialog(message);
100101
}
101102

103+
@Override
102104
public void hideProgress() {
103105
getDialogHolder().dismissDialog();
104106
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.firebase.ui.auth.ui;
2+
3+
import android.support.annotation.RestrictTo;
4+
import android.support.annotation.StringRes;
5+
6+
/**
7+
* View (Activity or Fragment, normally) that can respond to progress events.
8+
*/
9+
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
10+
public interface ProgressView {
11+
12+
void showProgress(@StringRes int message);
13+
14+
void hideProgress();
15+
16+
}

auth/src/main/java/com/firebase/ui/auth/ui/email/CheckEmailFragment.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
import android.view.LayoutInflater;
1313
import android.view.View;
1414
import android.view.ViewGroup;
15+
import android.widget.Button;
1516
import android.widget.EditText;
17+
import android.widget.ProgressBar;
1618

1719
import com.firebase.ui.auth.R;
1820
import com.firebase.ui.auth.data.model.User;
@@ -59,6 +61,9 @@ interface CheckEmailListener {
5961

6062
private CheckEmailHandler mHandler;
6163

64+
private Button mNextButton;
65+
private ProgressBar mProgressBar;
66+
6267
private EditText mEmailEditText;
6368
private TextInputLayout mEmailLayout;
6469

@@ -82,6 +87,9 @@ public View onCreateView(@NonNull LayoutInflater inflater,
8287

8388
@Override
8489
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
90+
mNextButton = view.findViewById(R.id.button_next);
91+
mProgressBar = view.findViewById(R.id.top_progress_bar);
92+
8593
// Email field and validator
8694
mEmailLayout = view.findViewById(R.id.email_layout);
8795
mEmailEditText = view.findViewById(R.id.email);
@@ -95,7 +103,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
95103
mEmailEditText.setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO);
96104
}
97105

98-
view.findViewById(R.id.button_next).setOnClickListener(this);
106+
mNextButton.setOnClickListener(this);
99107
}
100108

101109
@Override
@@ -175,4 +183,16 @@ private void validateAndProceed() {
175183
mHandler.fetchProvider(email);
176184
}
177185
}
186+
187+
@Override
188+
public void showProgress(int message) {
189+
mNextButton.setEnabled(false);
190+
mProgressBar.setVisibility(View.VISIBLE);
191+
}
192+
193+
@Override
194+
public void hideProgress() {
195+
mNextButton.setEnabled(true);
196+
mProgressBar.setVisibility(View.INVISIBLE);
197+
}
178198
}

auth/src/main/java/com/firebase/ui/auth/ui/email/RegisterEmailFragment.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111
import android.view.LayoutInflater;
1212
import android.view.View;
1313
import android.view.ViewGroup;
14+
import android.widget.Button;
1415
import android.widget.EditText;
16+
import android.widget.ProgressBar;
1517
import android.widget.TextView;
1618

1719
import com.firebase.ui.auth.AuthUI;
@@ -44,6 +46,9 @@ public class RegisterEmailFragment extends FragmentBase implements
4446

4547
private EmailProviderResponseHandler mHandler;
4648

49+
private Button mNextButton;
50+
private ProgressBar mProgressBar;
51+
4752
private EditText mEmailEditText;
4853
private EditText mNameEditText;
4954
private EditText mPasswordEditText;
@@ -110,6 +115,9 @@ public View onCreateView(@NonNull LayoutInflater inflater,
110115

111116
@Override
112117
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
118+
mNextButton = view.findViewById(R.id.button_create);
119+
mProgressBar = view.findViewById(R.id.top_progress_bar);
120+
113121
mEmailEditText = view.findViewById(R.id.email);
114122
mNameEditText = view.findViewById(R.id.name);
115123
mPasswordEditText = view.findViewById(R.id.password);
@@ -135,7 +143,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
135143
mEmailEditText.setOnFocusChangeListener(this);
136144
mNameEditText.setOnFocusChangeListener(this);
137145
mPasswordEditText.setOnFocusChangeListener(this);
138-
view.findViewById(R.id.button_create).setOnClickListener(this);
146+
mNextButton.setOnClickListener(this);
139147

140148
// Only show the name field if required
141149
nameInput.setVisibility(requireName ? View.VISIBLE : View.GONE);
@@ -223,6 +231,18 @@ public void onDonePressed() {
223231
validateAndRegisterUser();
224232
}
225233

234+
@Override
235+
public void showProgress(int message) {
236+
mNextButton.setEnabled(false);
237+
mProgressBar.setVisibility(View.VISIBLE);
238+
}
239+
240+
@Override
241+
public void hideProgress() {
242+
mNextButton.setEnabled(true);
243+
mProgressBar.setVisibility(View.INVISIBLE);
244+
}
245+
226246
private void validateAndRegisterUser() {
227247
String email = mEmailEditText.getText().toString();
228248
String password = mPasswordEditText.getText().toString();

auth/src/main/java/com/firebase/ui/auth/viewmodel/ResourceObserver.java

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,41 +4,52 @@
44
import android.support.annotation.NonNull;
55
import android.support.annotation.RestrictTo;
66
import android.support.annotation.StringRes;
7-
import android.util.Log;
87

98
import com.firebase.ui.auth.data.model.Resource;
109
import com.firebase.ui.auth.data.model.State;
1110
import com.firebase.ui.auth.ui.FragmentBase;
1211
import com.firebase.ui.auth.ui.HelperActivityBase;
12+
import com.firebase.ui.auth.ui.ProgressView;
1313
import com.firebase.ui.auth.util.ui.FlowUtils;
1414

1515
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
1616
public abstract class ResourceObserver<T> implements Observer<Resource<T>> {
17+
18+
private final ProgressView mProgressView;
1719
private final HelperActivityBase mActivity;
1820
private final FragmentBase mFragment;
1921
private final int mLoadingMessage;
2022

2123
protected ResourceObserver(@NonNull HelperActivityBase activity, @StringRes int message) {
22-
this(activity, null, message);
24+
this(activity, null, activity, message);
2325
}
2426

2527
protected ResourceObserver(@NonNull FragmentBase fragment, @StringRes int message) {
26-
this((HelperActivityBase) fragment.getActivity(), fragment, message);
28+
this(null, fragment, fragment, message);
2729
}
2830

29-
private ResourceObserver(HelperActivityBase activity, FragmentBase fragment, int message) {
31+
private ResourceObserver(HelperActivityBase activity,
32+
FragmentBase fragment,
33+
ProgressView progressView,
34+
int message) {
3035
mActivity = activity;
3136
mFragment = fragment;
37+
38+
if (mActivity == null && mFragment == null) {
39+
throw new IllegalStateException("ResourceObserver must be attached to an Activity or a Fragment");
40+
}
41+
42+
mProgressView = progressView;
3243
mLoadingMessage = message;
3344
}
3445

3546
@Override
3647
public final void onChanged(Resource<T> resource) {
3748
if (resource.getState() == State.LOADING) {
38-
mActivity.showProgress(mLoadingMessage);
49+
mProgressView.showProgress(mLoadingMessage);
3950
return;
4051
}
41-
mActivity.hideProgress();
52+
mProgressView.hideProgress();
4253

4354
if (resource.isUsed()) { return; }
4455

auth/src/main/res/layout/fui_check_email_layout.xml

Lines changed: 34 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,31 +7,44 @@
77
android:layout_height="match_parent">
88

99
<LinearLayout
10-
style="@style/FirebaseUI.WrapperStyle"
10+
android:layout_width="match_parent"
1111
android:layout_height="wrap_content"
1212
android:orientation="vertical">
1313

14-
<android.support.design.widget.TextInputLayout
15-
android:id="@+id/email_layout"
16-
style="@style/FirebaseUI.TextInputLayout.EmailField"
17-
android:layout_width="match_parent"
14+
<ProgressBar
15+
android:id="@+id/top_progress_bar"
16+
style="@style/FirebaseUI.TopProgressBar"
17+
android:visibility="invisible"
18+
tools:visibility="visible" />
19+
20+
<LinearLayout
21+
style="@style/FirebaseUI.WrapperStyle"
1822
android:layout_height="wrap_content"
19-
android:layout_marginTop="@dimen/fui_field_padding_vert"
20-
android:transitionGroup="true"
21-
android:transitionName="@string/fui_email_field_name"
22-
app:errorEnabled="true"
23-
tools:ignore="UnusedAttribute">
24-
25-
<android.support.design.widget.TextInputEditText
26-
android:id="@+id/email"
27-
style="@style/FirebaseUI.TextInputEditText.EmailField" />
28-
29-
</android.support.design.widget.TextInputLayout>
30-
31-
<Button
32-
android:id="@+id/button_next"
33-
style="@style/FirebaseUI.Button"
34-
android:text="@string/fui_next_default" />
23+
android:orientation="vertical">
24+
25+
<android.support.design.widget.TextInputLayout
26+
android:id="@+id/email_layout"
27+
style="@style/FirebaseUI.TextInputLayout.EmailField"
28+
android:layout_width="match_parent"
29+
android:layout_height="wrap_content"
30+
android:layout_marginTop="@dimen/fui_field_padding_vert"
31+
android:transitionGroup="true"
32+
android:transitionName="@string/fui_email_field_name"
33+
app:errorEnabled="true"
34+
tools:ignore="UnusedAttribute">
35+
36+
<android.support.design.widget.TextInputEditText
37+
android:id="@+id/email"
38+
style="@style/FirebaseUI.TextInputEditText.EmailField" />
39+
40+
</android.support.design.widget.TextInputLayout>
41+
42+
<Button
43+
android:id="@+id/button_next"
44+
style="@style/FirebaseUI.Button"
45+
android:text="@string/fui_next_default" />
46+
47+
</LinearLayout>
3548

3649
</LinearLayout>
3750

0 commit comments

Comments
 (0)