Skip to content

Commit 3a201ff

Browse files
committed
refactor data storage to store UserProfile
1 parent 578e071 commit 3a201ff

File tree

2 files changed

+77
-30
lines changed

2 files changed

+77
-30
lines changed

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

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import androidx.annotation.NonNull;
77

88
import com.anotherdev.firebase.auth.data.model.FirebaseUserImpl;
9+
import com.anotherdev.firebase.auth.data.model.UserProfile;
10+
import com.anotherdev.firebase.auth.init.AppContext;
911
import com.anotherdev.firebase.auth.util.FarGson;
1012
import com.f2prateek.rx.preferences2.Preference;
1113
import com.f2prateek.rx.preferences2.RxSharedPreferences;
@@ -15,37 +17,40 @@ public class Data {
1517

1618
private static final Gson GSON = FarGson.get();
1719

18-
private final RxSharedPreferences rxSharedPreferences;
20+
private static class DataHolder {
21+
private static final SharedPreferences SHARED_PREFERENCES;
22+
private static final RxSharedPreferences RX_SHARED_PREFERENCES;
23+
24+
static {
25+
Context context = AppContext.get();
26+
SHARED_PREFERENCES = context.getSharedPreferences(Data.class.getName(), Context.MODE_PRIVATE);
27+
RX_SHARED_PREFERENCES = RxSharedPreferences.create(SHARED_PREFERENCES);
28+
}
29+
}
1930

2031

2132
private Data(Context context) {
22-
SharedPreferences pref = context.getSharedPreferences(Data.class.getName(), Context.MODE_PRIVATE);
23-
rxSharedPreferences = RxSharedPreferences.create(pref);
2433
}
2534

2635
public Preference<String> getApiKey() {
27-
return rxSharedPreferences.getString("google_api_key", "");
36+
return DataHolder.RX_SHARED_PREFERENCES.getString("google_api_key", "");
2837
}
2938

3039
public Preference<FirebaseUserImpl> getCurrentUser(@NonNull FirebaseUserImpl defaultValue) {
31-
return rxSharedPreferences.getObject(
40+
return DataHolder.RX_SHARED_PREFERENCES.getObject(
3241
"current_user_info",
3342
defaultValue,
34-
new Preference.Converter<FirebaseUserImpl>() {
35-
@NonNull
36-
@Override
37-
public FirebaseUserImpl deserialize(@NonNull String json) {
38-
return GSON.fromJson(json, FirebaseUserImpl.class);
39-
}
40-
41-
@NonNull
42-
@Override
43-
public String serialize(@NonNull FirebaseUserImpl user) {
44-
return GSON.toJson(user);
45-
}
46-
});
43+
new RxPreferenceGsonConverter<>(FirebaseUserImpl.class));
4744
}
4845

46+
public Preference<UserProfile> getUserProfile(@NonNull final String uid) {
47+
return DataHolder.RX_SHARED_PREFERENCES.getObject(
48+
uid,
49+
UserProfile.builder().localId(uid).build(),
50+
new RxPreferenceGsonConverter<>(UserProfile.class));
51+
}
52+
53+
4954
public static Data from(Context context) {
5055
return new Data(context);
5156
}

firebase-auth-rest/core/src/main/java/com/anotherdev/firebase/auth/data/model/UserProfile.java

Lines changed: 54 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,46 +6,88 @@
66
import org.immutables.gson.Gson;
77
import org.immutables.value.Value;
88

9+
import java.util.Collections;
910
import java.util.List;
1011

1112
@Value.Immutable
1213
@Value.Style(strictBuilder = true)
1314
@Gson.TypeAdapters
1415
public interface UserProfile {
1516

17+
@Value.Default
1618
@SerializedName("localId")
17-
String getLocalId();
19+
default String getLocalId() {
20+
return "";
21+
}
1822

23+
@Value.Default
1924
@SerializedName("email")
20-
String getEmail();
25+
default String getEmail() {
26+
return "";
27+
}
2128

29+
@Value.Default
2230
@SerializedName("emailVerified")
23-
boolean isEmailVerified();
31+
default boolean isEmailVerified() {
32+
return false;
33+
}
2434

35+
@Value.Default
2536
@SerializedName("disabled")
26-
boolean isDisabled();
37+
default boolean isDisabled() {
38+
return false;
39+
}
2740

41+
@Value.Default
2842
@SerializedName("customAuth")
29-
boolean isCustomAuth();
43+
default boolean isCustomAuth() {
44+
return false;
45+
}
3046

47+
@Value.Default
3148
@SerializedName("displayName")
32-
String getDisplayName();
49+
default String getDisplayName() {
50+
return "";
51+
}
3352

53+
@Value.Default
3454
@SerializedName("providerUserInfo")
35-
List<UserInfo> providerUserInfo();
55+
default List<UserInfo> providerUserInfo() {
56+
return Collections.emptyList();
57+
}
3658

59+
@Value.Default
3760
@SerializedName("photoUrl")
38-
String getPhotoUrl();
61+
default String getPhotoUrl() {
62+
return "";
63+
}
3964

65+
@Value.Default
4066
@SerializedName("validSince")
41-
String getValidSince();
67+
default String getValidSince() {
68+
return "";
69+
}
4270

71+
@Value.Default
4372
@SerializedName("lastLoginAt")
44-
String getLastLoginAt();
73+
default String getLastLoginAt() {
74+
return "";
75+
}
4576

77+
@Value.Default
4678
@SerializedName("createdAt")
47-
String getCreatedAt();
79+
default String getCreatedAt() {
80+
return "";
81+
}
4882

83+
@Value.Default
4984
@SerializedName("lastRefreshAt")
50-
String getLastRefreshAt();
85+
default String getLastRefreshAt() {
86+
return "";
87+
}
88+
89+
90+
static ImmutableUserProfile.Builder builder() {
91+
return ImmutableUserProfile.builder();
92+
}
5193
}

0 commit comments

Comments
 (0)