Skip to content

Commit 5ceb73e

Browse files
committed
✨ 앱을 지웠다가 다시 깔거나 다른 기기에서 로그인을 해도 닉네임과 프로필 이미지가 유지되도록 구현
1 parent 0ed4cec commit 5ceb73e

File tree

1 file changed

+35
-16
lines changed

1 file changed

+35
-16
lines changed

signin/src/main/java/com/whyranoid/SignInDataSourceImpl.kt

Lines changed: 35 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,30 +26,48 @@ class SignInDataSourceImpl @Inject constructor(
2626
}
2727

2828
override suspend fun saveLogInUserInfo(userInfo: SignInUserInfo): Boolean {
29-
dataStoreDb.edit { preferences ->
30-
preferences[PreferenceKeys.uid] = userInfo.uid
31-
preferences[PreferenceKeys.email] = userInfo.email ?: EMPTY_STRING
32-
preferences[PreferenceKeys.nickName] = userInfo.nickName ?: EMPTY_STRING
33-
preferences[PreferenceKeys.profileImgUri] = userInfo.profileImgUri ?: EMPTY_STRING
34-
}
29+
val existedUser =
30+
fireBaseDb.collection(USER_COLLECTION_PATH).document(userInfo.uid).get().await()
31+
val existedUserInfo = existedUser.toObject(UserResponse::class.java)
32+
33+
if (existedUserInfo == null) {
34+
dataStoreDb.edit { preferences ->
35+
preferences[PreferenceKeys.uid] = userInfo.uid
36+
preferences[PreferenceKeys.email] = userInfo.email ?: EMPTY_STRING
37+
preferences[PreferenceKeys.nickName] = userInfo.nickName ?: EMPTY_STRING
38+
preferences[PreferenceKeys.profileImgUri] = userInfo.profileImgUri ?: EMPTY_STRING
39+
}
3540

36-
fireBaseDb.collection(USER_COLLECTION_PATH)
37-
.document(userInfo.uid).set(
38-
UserResponse(
39-
userInfo.uid,
40-
userInfo.nickName,
41-
userInfo.profileImgUri,
42-
emptyList()
41+
fireBaseDb.collection(USER_COLLECTION_PATH)
42+
.document(userInfo.uid).set(
43+
UserResponse(
44+
userInfo.uid,
45+
userInfo.nickName,
46+
userInfo.profileImgUri,
47+
emptyList()
48+
)
4349
)
44-
)
50+
} else {
51+
dataStoreDb.edit { preferences ->
52+
preferences[PreferenceKeys.uid] = existedUserInfo.uid
53+
preferences[PreferenceKeys.email] = userInfo.email ?: EMPTY_STRING
54+
preferences[PreferenceKeys.nickName] = existedUserInfo.name ?: EMPTY_STRING
55+
preferences[PreferenceKeys.profileImgUri] =
56+
existedUserInfo.profileUrl ?: EMPTY_STRING
57+
}
58+
}
4559

4660
return true
4761
}
4862

4963
override suspend fun restoreRunningHistoryData(uid: String): Result<Boolean> = runCatching {
50-
val runningHistoryData = fireBaseDb.collection("RunningHistory").whereEqualTo("uid", uid).get().await()
64+
val runningHistoryData =
65+
fireBaseDb.collection(RUNNING_HISTORY_COLLECTION_PATH).whereEqualTo(UID_KEY, uid).get()
66+
.await()
5167
runningHistoryData.forEach { runningHistory ->
52-
runningHistoryDao.addRunningHistory(runningHistory.toObject(RunningHistoryResponse::class.java).toRunningHistoryEntity())
68+
runningHistoryDao.addRunningHistory(
69+
runningHistory.toObject(RunningHistoryResponse::class.java).toRunningHistoryEntity()
70+
)
5371
}
5472
true
5573
}
@@ -61,5 +79,6 @@ class SignInDataSourceImpl @Inject constructor(
6179
private const val PROFILE_IMG_URI = "profile_img_uri"
6280
private const val EMPTY_STRING = ""
6381
private const val USER_COLLECTION_PATH = "Users"
82+
private const val RUNNING_HISTORY_COLLECTION_PATH = "RunningHistory"
6483
}
6584
}

0 commit comments

Comments
 (0)