Skip to content

Commit 2fec554

Browse files
committed
Start removing progress dialogs
Change-Id: Ie8e5a0c5dd0105b1b9d79ef385836286cfe6375f
1 parent 633da76 commit 2fec554

File tree

8 files changed

+121
-15
lines changed

8 files changed

+121
-15
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@
1212
import com.firebase.ui.auth.data.model.FlowParameters;
1313
import com.firebase.ui.auth.data.model.UserCancellationException;
1414
import com.firebase.ui.auth.data.remote.SignInKickstarter;
15-
import com.firebase.ui.auth.ui.HelperActivityBase;
15+
import com.firebase.ui.auth.ui.InvisibleActivityBase;
1616
import com.firebase.ui.auth.viewmodel.ResourceObserver;
1717
import com.google.android.gms.common.GoogleApiAvailability;
1818
import com.google.android.gms.tasks.OnFailureListener;
1919
import com.google.android.gms.tasks.OnSuccessListener;
2020

2121
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
22-
public class KickoffActivity extends HelperActivityBase {
22+
public class KickoffActivity extends InvisibleActivityBase {
2323
private SignInKickstarter mKickstarter;
2424

2525
public static Intent createIntent(Context context, FlowParameters flowParams) {

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

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import android.support.annotation.NonNull;
88
import android.support.annotation.Nullable;
99
import android.support.annotation.RestrictTo;
10+
import android.support.annotation.StringRes;
1011
import android.support.v7.app.AppCompatActivity;
1112

1213
import com.firebase.ui.auth.IdpResponse;
@@ -74,10 +75,6 @@ public AuthHelper getAuthHelper() {
7475
return mAuthHelper;
7576
}
7677

77-
public ProgressDialogHolder getDialogHolder() {
78-
return mProgressDialogHolder;
79-
}
80-
8178
public void finish(int resultCode, @Nullable Intent intent) {
8279
setResult(resultCode, intent);
8380
finish();
@@ -97,4 +94,16 @@ public void startSaveCredentials(
9794
this, getFlowParams(), credential, response);
9895
startActivityForResult(intent, RequestCodes.CRED_SAVE_FLOW);
9996
}
97+
98+
public void showProgress(@StringRes int message) {
99+
getDialogHolder().showLoadingDialog(message);
100+
}
101+
102+
public void hideProgress() {
103+
getDialogHolder().dismissDialog();
104+
}
105+
106+
protected ProgressDialogHolder getDialogHolder() {
107+
return mProgressDialogHolder;
108+
}
100109
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package com.firebase.ui.auth.ui;
2+
3+
import android.content.Intent;
4+
import android.os.Bundle;
5+
import android.os.Handler;
6+
import android.support.annotation.Nullable;
7+
import android.support.annotation.RestrictTo;
8+
import android.view.View;
9+
import android.widget.ProgressBar;
10+
11+
import com.firebase.ui.auth.R;
12+
13+
14+
/**
15+
* Base classes for activities that are just simple overlays.
16+
*/
17+
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
18+
public class InvisibleActivityBase extends HelperActivityBase {
19+
20+
private static final long MIN_SPINNER_MS = 1000;
21+
22+
private Handler mHandler = new Handler();
23+
private ProgressBar mProgressBar;
24+
private long mLastShownTime = 0;
25+
26+
@Override
27+
protected void onCreate(@Nullable Bundle savedInstanceState) {
28+
super.onCreate(savedInstanceState);
29+
setContentView(R.layout.fui_activity_kickoff);
30+
31+
// TODO: Set the color based on passed in theme
32+
mProgressBar = findViewById(R.id.progress_spinner);
33+
}
34+
35+
@Override
36+
public void showProgress(int message) {
37+
if (mProgressBar.getVisibility() == View.VISIBLE) {
38+
mHandler.removeCallbacksAndMessages(null);
39+
return;
40+
}
41+
42+
mLastShownTime = System.currentTimeMillis();
43+
mProgressBar.setVisibility(View.VISIBLE);
44+
}
45+
46+
@Override
47+
public void hideProgress() {
48+
doAfterTimeout(new Runnable() {
49+
@Override
50+
public void run() {
51+
mLastShownTime = 0;
52+
mProgressBar.setVisibility(View.INVISIBLE);
53+
}
54+
});
55+
}
56+
57+
@Override
58+
public void finish(int resultCode, @Nullable Intent intent) {
59+
setResult(resultCode, intent);
60+
doAfterTimeout(new Runnable() {
61+
@Override
62+
public void run() {
63+
finish();
64+
}
65+
});
66+
}
67+
68+
private void doAfterTimeout(Runnable runnable) {
69+
long currentTime = System.currentTimeMillis();
70+
long diff = currentTime - mLastShownTime;
71+
long remaining = Math.max(MIN_SPINNER_MS - diff, 0);
72+
73+
mHandler.postDelayed(runnable, remaining);
74+
}
75+
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ public ProgressDialogHolder(Context context) {
1818

1919
private void showLoadingDialog(String message) {
2020
dismissDialog();
21-
2221
if (mProgressDialog == null) {
2322
mProgressDialog = new ProgressDialog(mContext);
2423
mProgressDialog.setIndeterminate(true);
@@ -34,10 +33,11 @@ public void showLoadingDialog(@StringRes int stringResource) {
3433
}
3534

3635
public void dismissDialog() {
37-
if (mProgressDialog != null) {
36+
if (isProgressDialogShowing()) {
3837
mProgressDialog.dismiss();
39-
mProgressDialog = null;
4038
}
39+
40+
mProgressDialog = null;
4141
}
4242

4343
public boolean isProgressDialogShowing() {

auth/src/main/java/com/firebase/ui/auth/ui/credentials/CredentialSaveActivity.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import com.firebase.ui.auth.R;
1313
import com.firebase.ui.auth.data.model.FlowParameters;
1414
import com.firebase.ui.auth.data.model.Resource;
15-
import com.firebase.ui.auth.ui.HelperActivityBase;
15+
import com.firebase.ui.auth.ui.InvisibleActivityBase;
1616
import com.firebase.ui.auth.util.ExtraConstants;
1717
import com.firebase.ui.auth.viewmodel.ResourceObserver;
1818
import com.firebase.ui.auth.viewmodel.smartlock.SmartLockHandler;
@@ -21,7 +21,7 @@
2121
/**
2222
* Invisible Activity used for saving credentials to SmartLock.
2323
*/
24-
public class CredentialSaveActivity extends HelperActivityBase {
24+
public class CredentialSaveActivity extends InvisibleActivityBase {
2525
private static final String TAG = "CredentialSaveActivity";
2626

2727
private SmartLockHandler mHandler;

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

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

89
import com.firebase.ui.auth.data.model.Resource;
910
import com.firebase.ui.auth.data.model.State;
@@ -34,10 +35,10 @@ private ResourceObserver(HelperActivityBase activity, FragmentBase fragment, int
3435
@Override
3536
public final void onChanged(Resource<T> resource) {
3637
if (resource.getState() == State.LOADING) {
37-
mActivity.getDialogHolder().showLoadingDialog(mLoadingMessage);
38+
mActivity.showProgress(mLoadingMessage);
3839
return;
3940
}
40-
mActivity.getDialogHolder().dismissDialog();
41+
mActivity.hideProgress();
4142

4243
if (resource.isUsed()) { return; }
4344

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<android.support.constraint.ConstraintLayout
3+
xmlns:android="http://schemas.android.com/apk/res/android"
4+
xmlns:app="http://schemas.android.com/apk/res-auto"
5+
xmlns:tools="http://schemas.android.com/tools"
6+
android:layout_width="match_parent"
7+
android:layout_height="match_parent">
8+
9+
<ProgressBar
10+
android:id="@+id/progress_spinner"
11+
android:layout_width="wrap_content"
12+
android:layout_height="wrap_content"
13+
android:indeterminate="true"
14+
android:visibility="invisible"
15+
app:layout_constraintStart_toStartOf="parent"
16+
app:layout_constraintEnd_toEndOf="parent"
17+
app:layout_constraintTop_toTopOf="parent"
18+
app:layout_constraintBottom_toBottomOf="parent"
19+
tools:visibility="visible" />
20+
21+
</android.support.constraint.ConstraintLayout>

auth/src/main/res/values/styles.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212

1313
<style name="FirebaseUI.Transparent" parent="FirebaseUI">
1414
<item name="android:windowIsTranslucent">true</item>
15-
<item name="android:windowBackground">@android:color/transparent</item>
15+
<item name="android:windowBackground">@color/fui_transparent</item>
1616
<item name="android:windowContentOverlay">@null</item>
1717
<item name="android:windowNoTitle">true</item>
1818
<item name="android:windowIsFloating">true</item>
19-
<item name="android:backgroundDimEnabled">false</item>
19+
<item name="android:backgroundDimEnabled">true</item>
2020
</style>
2121

2222
<style name="FirebaseUI.WrapperStyle">

0 commit comments

Comments
 (0)