Skip to content

Commit b102010

Browse files
committed
✨ getUid 로직 구현
1 parent 6cc5d27 commit b102010

File tree

11 files changed

+58
-62
lines changed

11 files changed

+58
-62
lines changed

data/src/main/java/com/whyranoid/data/account/AccountDataSource.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@ import kotlinx.coroutines.flow.Flow
55
interface AccountDataSource {
66
fun getUserNickName(): Flow<String>
77
fun getUserProfileImgUri(): Flow<String>
8-
suspend fun updateUserNickName(newNickName: String): Result<String>
8+
fun getUserUid(): Flow<String>
9+
suspend fun updateUserNickName(uid: String, newNickName: String): Result<String>
910
}

data/src/main/java/com/whyranoid/data/account/AccountDataSourceImpl.kt

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,60 +8,45 @@ import com.google.firebase.firestore.FirebaseFirestore
88
import com.whyranoid.data.account.AccountDataSourceImpl.PreferenceKeys.nickName
99
import com.whyranoid.data.account.AccountDataSourceImpl.PreferenceKeys.profileImgUri
1010
import com.whyranoid.data.account.AccountDataSourceImpl.PreferenceKeys.uid
11-
import kotlinx.coroutines.CoroutineScope
12-
import kotlinx.coroutines.Dispatchers
13-
import kotlinx.coroutines.flow.launchIn
1411
import kotlinx.coroutines.flow.map
15-
import kotlinx.coroutines.flow.onEach
1612
import javax.inject.Inject
1713

1814
class AccountDataSourceImpl @Inject constructor(
1915
private val dataStoreDb: DataStore<Preferences>,
2016
private val fireBaseDb: FirebaseFirestore
2117
) : AccountDataSource {
2218

23-
init {
24-
getUid()
25-
}
26-
27-
private var userUid = EMPTY_STRING
28-
2919
private object PreferenceKeys {
3020
val uid = stringPreferencesKey(UID_KEY)
3121
val email = stringPreferencesKey(EMAIL_KEY)
3222
val nickName = stringPreferencesKey(NICK_NAME_KEY)
3323
val profileImgUri = stringPreferencesKey(PROFILE_IMG_URI)
3424
}
3525

36-
// TODO : flow -> suspend로 변경해야 함.
3726
override fun getUserNickName() = dataStoreDb.data
3827
.map { preferences ->
3928
preferences[nickName] ?: EMPTY_STRING
4029
}
4130

42-
// TODO : flow -> suspend로 변경해야 함.
4331
override fun getUserProfileImgUri() = dataStoreDb.data
4432
.map { preferences ->
4533
preferences[profileImgUri] ?: EMPTY_STRING
4634
}
4735

48-
// TODO : flow -> suspend로 변경해야 함.
49-
private fun getUid() = dataStoreDb.data
36+
override fun getUserUid() = dataStoreDb.data
5037
.map { preferences ->
51-
preferences[uid]
52-
}.onEach {
53-
userUid = it ?: EMPTY_STRING
54-
}.launchIn(CoroutineScope(Dispatchers.IO))
38+
preferences[uid] ?: EMPTY_STRING
39+
}
5540

56-
override suspend fun updateUserNickName(newNickName: String) = runCatching {
41+
override suspend fun updateUserNickName(uid: String, newNickName: String) = runCatching {
5742
// 로컬에 업데이트
5843
dataStoreDb.edit { preferences ->
5944
preferences[nickName] = newNickName
6045
}
6146

6247
// 리모트에 업데이트
6348
fireBaseDb.collection(USER_COLLECTION_PATH)
64-
.document(userUid).update(USER_FIELD_NICK_NAME, newNickName)
49+
.document(uid).update(USER_FIELD_NICK_NAME, newNickName)
6550

6651
newNickName
6752
}

data/src/main/java/com/whyranoid/data/account/AccountRepositoryImpl.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,19 @@ class AccountRepositoryImpl @Inject constructor(
1717
return true
1818
}
1919

20-
override suspend fun getUid(): Result<String> {
21-
return Result.success("byeonghee-uid")
20+
override fun getUid(): Flow<String> {
21+
return accountDataSource.getUserUid()
2222
}
2323

24-
override suspend fun getNickname(): Flow<String> {
24+
override fun getNickname(): Flow<String> {
2525
return accountDataSource.getUserNickName()
2626
}
2727

28-
override suspend fun updateNickname(newNickName: String): Result<String> {
29-
return accountDataSource.updateUserNickName(newNickName)
28+
override suspend fun updateNickname(uid: String, newNickName: String): Result<String> {
29+
return accountDataSource.updateUserNickName(uid, newNickName)
3030
}
3131

32-
override suspend fun getProfileUri(): Flow<String> {
32+
override fun getProfileUri(): Flow<String> {
3333
return accountDataSource.getUserProfileImgUri()
3434
}
3535

domain/src/main/java/com/whyranoid/domain/repository/AccountRepository.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,17 @@ interface AccountRepository {
1212
suspend fun loginUser(): Boolean
1313

1414
// 데이터스토어에서 uid 가져오기
15-
suspend fun getUid(): Result<String>
15+
fun getUid(): Flow<String>
1616

1717
// 데이터스토어에서 닉네임 가져오기
18-
suspend fun getNickname(): Flow<String>
18+
fun getNickname(): Flow<String>
1919

2020
// 닉네임 수정, 서버에 먼저 보내고 성공하면 로컬에 반영
2121
// 실패하면 실패 사용자에게 알리기
22-
suspend fun updateNickname(newNickName: String): Result<String>
22+
suspend fun updateNickname(uid: String, newNickName: String): Result<String>
2323

2424
// 데이터스토어에서 프로필 이미지 가져오기
25-
suspend fun getProfileUri(): Flow<String>
25+
fun getProfileUri(): Flow<String>
2626

2727
// 프로필 사진 서버에 업데이트
2828
suspend fun updateProfileUrl(newProfileUrl: String): Boolean

domain/src/main/java/com/whyranoid/domain/usecase/FinishRunningUseCase.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,9 @@ class FinishRunningUseCase @Inject constructor(
99
private val accountRepository: AccountRepository
1010
) {
1111
suspend operator fun invoke(): Boolean {
12-
accountRepository.getUid().onSuccess { uid ->
13-
return runningRepository.finishRunning(uid)
14-
}.onFailure {
15-
println("uid 이상해 희희")
12+
accountRepository.getUid().collect { uid ->
13+
runningRepository.finishRunning(uid)
1614
}
17-
return false
15+
return true
1816
}
1917
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package com.whyranoid.domain.usecase
22

33
import com.whyranoid.domain.repository.AccountRepository
4+
import kotlinx.coroutines.flow.Flow
45
import javax.inject.Inject
56

67
class GetUidUseCase @Inject constructor(private val accountRepository: AccountRepository) {
7-
suspend operator fun invoke(): Result<String> {
8+
operator fun invoke(): Flow<String> {
89
return accountRepository.getUid()
910
}
1011
}

domain/src/main/java/com/whyranoid/domain/usecase/JoinGroupUseCase.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,9 @@ class JoinGroupUseCase @Inject constructor(
99
private val accountRepository: AccountRepository
1010
) {
1111
suspend operator fun invoke(groupId: String): Boolean {
12-
accountRepository.getUid().onSuccess { uid ->
13-
return groupRepository.joinGroup(uid, groupId)
14-
}.onFailure {
15-
println("UID 이상해 병희희")
12+
accountRepository.getUid().collect { uid ->
13+
groupRepository.joinGroup(uid, groupId)
1614
}
17-
return false
15+
return true
1816
}
1917
}

domain/src/main/java/com/whyranoid/domain/usecase/StartRunningUseCase.kt

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,11 @@ class StartRunningUseCase @Inject constructor(
1111
private val groupRepository: GroupRepository
1212
) {
1313
suspend operator fun invoke(): Boolean {
14-
accountRepository.getUid().onSuccess { uid ->
14+
accountRepository.getUid().collect { uid ->
1515
runningRepository.startRunning(uid)
1616
groupRepository.getMyGroupList(uid).onSuccess { groupInfos ->
1717
groupRepository.notifyRunningStart(uid, groupInfos.map { it.groupId })
18-
return true
19-
}.onFailure {
20-
return false
2118
}
22-
}.onFailure {
23-
return false
2419
}
2520
return false
2621
}

domain/src/main/java/com/whyranoid/domain/usecase/UpdateNicknameUseCase.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import com.whyranoid.domain.repository.AccountRepository
44
import javax.inject.Inject
55

66
class UpdateNicknameUseCase @Inject constructor(private val accountRepository: AccountRepository) {
7-
suspend operator fun invoke(newNickname: String): Result<String> {
8-
return accountRepository.updateNickname(newNickname)
7+
suspend operator fun invoke(uid: String, newNickname: String): Result<String> {
8+
return accountRepository.updateNickname(uid, newNickname)
99
}
1010
}

presentation/src/main/java/com/whyranoid/presentation/myrun/MyRunFragment.kt

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,14 @@ internal class MyRunFragment : BaseFragment<FragmentMyRunBinding>(R.layout.fragm
3131
observeInfo()
3232
}
3333

34-
private fun initViews() {
35-
viewModel.getNickName()
36-
viewModel.getProfileImgUri()
37-
binding.ivEditNickName.setOnClickListener {
34+
private fun initViews() = with(binding) {
35+
ivEditNickName.setOnClickListener {
3836
popUpEditNickNameDialog()
3937
}
4038

41-
binding.rvMyRunningHistory.adapter = runningHistoryAdapter
39+
rvMyRunningHistory.adapter = runningHistoryAdapter
4240

43-
binding.topAppBar.setOnMenuItemClickListener { menuItem ->
41+
topAppBar.setOnMenuItemClickListener { menuItem ->
4442
when (menuItem.itemId) {
4543
R.id.my_run_setting ->
4644
findNavController().navigate(R.id.action_myRunFragment_to_settingFragment)
@@ -79,7 +77,7 @@ internal class MyRunFragment : BaseFragment<FragmentMyRunBinding>(R.layout.fragm
7977
.setPositiveButton(
8078
getString(R.string.my_run_edit_nick_name_dialog_positive)
8179
) { dialog, _ ->
82-
viewModel.updateNickName(dialogView.findViewById<EditText>(R.id.et_change_nick_name).text.toString())
80+
viewModel.updateNickName(viewModel.uid.value, dialogView.findViewById<EditText>(R.id.et_change_nick_name).text.toString())
8381
dialog.dismiss()
8482
}
8583
.setNegativeButton(

0 commit comments

Comments
 (0)