Skip to content

Commit ae6afde

Browse files
authored
Merge pull request #8 from anotherdev/pk/firebase-user-improvements
Firebase user improvements
2 parents f68c3e6 + 27333e3 commit ae6afde

File tree

18 files changed

+508
-100
lines changed

18 files changed

+508
-100
lines changed

app/src/main/java/com/anotherdev/sample/firebase/auth/BaseActivity.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import com.anotherdev.sample.firebase.auth.intent.LoginIntent;
2323
import com.github.florent37.inlineactivityresult.rx.RxInlineActivityResult;
2424
import com.google.android.gms.common.SupportErrorDialogFragment;
25-
import com.google.firebase.FirebaseApp;
2625
import com.yarolegovich.lovelydialog.LovelyInfoDialog;
2726

2827
import java.util.List;
@@ -122,8 +121,7 @@ private boolean findAndDismissGmsDialog() {
122121
}
123122

124123
protected void requestAuthIfNeeded() {
125-
FirebaseApp app = FirebaseApp.getInstance();
126-
FirebaseAuth auth = FirebaseAuthRest.getInstance(app);
124+
FirebaseAuth auth = FirebaseAuthRest.getInstance();
127125
FirebaseUser currentUser = auth.getCurrentUser();
128126

129127
if (currentUser == null) {

app/src/main/java/com/anotherdev/sample/firebase/auth/LoginActivity.java

Lines changed: 164 additions & 57 deletions
Large diffs are not rendered by default.
840 Bytes
Loading
588 Bytes
Loading

app/src/main/res/layout/activity_login.xml

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,10 @@
1111
android:layout_width="match_parent"
1212
android:layout_height="wrap_content" />
1313

14-
<TextView
15-
android:id="@+id/auth_library_info_textview"
16-
android:text="@string/app_title"
17-
android:layout_margin="16dp"
18-
android:layout_below="@id/toolbar"
19-
android:layout_centerHorizontal="true"
20-
android:layout_width="wrap_content"
21-
android:layout_height="wrap_content" />
22-
2314
<LinearLayout
2415
android:id="@+id/auth_user_info_layout"
2516
android:orientation="vertical"
26-
android:layout_below="@id/auth_library_info_textview"
17+
android:layout_below="@id/toolbar"
2718
android:layout_width="match_parent"
2819
android:layout_height="wrap_content">
2920

@@ -46,7 +37,6 @@
4637
android:orientation="vertical"
4738
android:gravity="bottom"
4839
android:padding="8dp"
49-
android:layout_marginTop="8dp"
5040
android:layout_width="match_parent"
5141
android:layout_height="wrap_content">
5242

@@ -66,7 +56,7 @@
6656

6757
<androidx.appcompat.widget.AppCompatButton
6858
android:id="@+id/auth_sign_in_email_button"
69-
android:text="@string/sign_in__with_email"
59+
android:text="@string/sign_in_with_email"
7060
android:layout_margin="8dp"
7161
android:layout_width="match_parent"
7262
android:layout_height="@android:dimen/app_icon_size" />
@@ -86,15 +76,15 @@
8676

8777
<androidx.appcompat.widget.AppCompatButton
8878
android:id="@+id/auth_sign_in_with_facebook_button"
89-
android:text="@string/sign_in__with_facebook"
79+
android:text="@string/facebook"
9080
android:layout_width="match_parent"
9181
android:layout_height="@android:dimen/app_icon_size" />
9282

9383
</RelativeLayout>
9484

9585
<androidx.appcompat.widget.AppCompatButton
9686
android:id="@+id/auth_sign_in_with_google_button"
97-
android:text="@string/sign_in__with_google"
87+
android:text="@string/google"
9888
android:layout_margin="8dp"
9989
android:layout_width="match_parent"
10090
android:layout_height="@android:dimen/app_icon_size" />
@@ -106,6 +96,14 @@
10696
android:layout_width="match_parent"
10797
android:layout_height="@android:dimen/app_icon_size" />
10898

99+
<TextView
100+
android:id="@+id/auth_library_info_textview"
101+
android:text="@string/app_title"
102+
android:gravity="center_horizontal"
103+
android:layout_margin="16dp"
104+
android:layout_width="match_parent"
105+
android:layout_height="wrap_content" />
106+
109107
<TextView
110108
android:id="@+id/app_info_textview"
111109
android:text="@string/app_title"

app/src/main/res/menu/menu_login.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,18 @@
99
android:title="@string/edit_profile"
1010
app:showAsAction="ifRoom"/>
1111

12+
<item
13+
android:id="@+id/action_change_email"
14+
android:icon="@drawable/ic_email_white_48dp"
15+
android:title="@string/change_email"
16+
app:showAsAction="ifRoom"/>
17+
18+
<item
19+
android:id="@+id/action_verify_email"
20+
android:icon="@drawable/ic_email_read_white_48dp"
21+
android:title="@string/verify_email"
22+
app:showAsAction="ifRoom"/>
23+
1224
<item
1325
android:id="@+id/action_change_password"
1426
android:icon="@drawable/ic_vpn_key_white_24dp"

app/src/main/res/values/strings.xml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,19 @@
55
<string name="password">Password</string>
66
<string name="register">Register</string>
77

8+
<string name="sign_in_with_x">Sign in with %s</string>
9+
<string name="link_with_x">Link with %s</string>
10+
<string name="unlink_from_x">Unlink from %s</string>
811
<string name="sign_in_anonymously">Sign In Anonymously</string>
912
<string name="register_email_password">Register Email/Password</string>
10-
<string name="sign_in__with_email">Sign In With Email</string>
11-
<string name="sign_in__with_facebook">Sign In With Facebook</string>
12-
<string name="sign_in__with_google">Sign In With Google</string>
13+
<string name="sign_in_with_email">Sign In With Email</string>
14+
<string name="facebook">Facebook</string>
15+
<string name="google">Google</string>
1316
<string name="log_out">Log Out</string>
1417

1518
<string name="edit_profile">Edit Profile</string>
19+
<string name="change_email">Change Email</string>
20+
<string name="verify_email">Verify Email</string>
1621
<string name="change_password">Change Password</string>
1722
<string name="current_password">Current Password</string>
1823
<string name="new_password">New Password</string>

firebase-auth-rest/core/src/main/java/com/anotherdev/firebase/auth/FirebaseAuth.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@
55

66
import com.anotherdev.firebase.auth.provider.EmailAuthCredential;
77
import com.anotherdev.firebase.auth.provider.IdpAuthCredential;
8+
import com.anotherdev.firebase.auth.provider.Provider;
89
import com.anotherdev.firebase.auth.rest.api.model.SendPasswordResetEmailRequest;
910
import com.anotherdev.firebase.auth.rest.api.model.SendPasswordResetEmailResponse;
1011
import com.google.firebase.FirebaseApp;
1112

1213
import io.reactivex.rxjava3.annotations.CheckReturnValue;
14+
import io.reactivex.rxjava3.core.Completable;
1315
import io.reactivex.rxjava3.core.Observable;
1416
import io.reactivex.rxjava3.core.Single;
1517

@@ -28,6 +30,8 @@ public interface FirebaseAuth {
2830

2931
boolean isSignedIn();
3032

33+
boolean isSignedInWith(Provider provider);
34+
3135
@NonNull
3236
@CheckReturnValue
3337
Observable<FirebaseAuth> authStateChanges();
@@ -64,6 +68,10 @@ public interface FirebaseAuth {
6468
@CheckReturnValue
6569
Single<SignInResponse> linkWithCredential(@NonNull FirebaseUser user, @NonNull IdpAuthCredential credential);
6670

71+
@NonNull
72+
@CheckReturnValue
73+
Completable unlink(@NonNull FirebaseUser user, @NonNull String provider);
74+
6775
@NonNull
6876
@CheckReturnValue
6977
Single<SendPasswordResetEmailResponse> sendPasswordResetEmail(SendPasswordResetEmailRequest request);

firebase-auth-rest/core/src/main/java/com/anotherdev/firebase/auth/FirebaseAuthRest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ public class FirebaseAuthRest {
1515
Collections.unmodifiableCollection(TOKEN_REFRESHER_MAP.values());
1616

1717

18+
public static FirebaseAuth getInstance() {
19+
return getInstance(FirebaseApp.getInstance());
20+
}
21+
1822
public static FirebaseAuth getInstance(FirebaseApp app) {
1923
final String name = app.getName();
2024
RestAuthTokenRefresher tokenRefresher = TOKEN_REFRESHER_MAP.get(name);

firebase-auth-rest/core/src/main/java/com/anotherdev/firebase/auth/FirebaseUser.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import androidx.annotation.Nullable;
55

66
import com.anotherdev.firebase.auth.provider.AuthCredential;
7+
import com.anotherdev.firebase.auth.provider.Provider;
8+
import com.anotherdev.firebase.auth.rest.api.model.SendEmailVerificationResponse;
79
import com.google.gson.JsonObject;
810

911
import java.util.List;
@@ -31,15 +33,23 @@ public interface FirebaseUser {
3133
@Nullable
3234
String getEmail();
3335

36+
boolean isEmailVerified();
37+
3438
@NonNull
3539
List<UserInfo> getProviderData();
3640

3741
boolean isAnonymous();
3842

43+
boolean isSignedInWith(@NonNull Provider provider);
44+
3945
@NonNull
4046
@CheckReturnValue
4147
Single<SignInResponse> linkWithCredential(@NonNull AuthCredential credential);
4248

49+
@NonNull
50+
@CheckReturnValue
51+
Completable unlink(@NonNull String provider);
52+
4353
@NonNull
4454
@CheckReturnValue
4555
Single<SignInResponse> reauthenticate(@NonNull AuthCredential credential);
@@ -52,7 +62,15 @@ public interface FirebaseUser {
5262
@CheckReturnValue
5363
Completable updateProfile(@NonNull UserProfileChangeRequest request);
5464

65+
@NonNull
66+
@CheckReturnValue
67+
Completable updateEmail(@NonNull String newEmail);
68+
5569
@NonNull
5670
@CheckReturnValue
5771
Completable updatePassword(@NonNull String newPassword);
72+
73+
@NonNull
74+
@CheckReturnValue
75+
Single<SendEmailVerificationResponse> sendEmailVerification();
5876
}

0 commit comments

Comments
 (0)