Skip to content

Commit dbba00d

Browse files
committed
♻️ Flow로 받아오던 uid를 1번만 받아서 string으로 반환하도록 수정
1 parent fc961b1 commit dbba00d

File tree

19 files changed

+180
-60
lines changed

19 files changed

+180
-60
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import kotlinx.coroutines.flow.Flow
55
interface AccountDataSource {
66
fun getUserNickName(): Flow<String>
77
fun getUserProfileImgUri(): Flow<String>
8-
fun getUserUid(): Flow<String>
8+
suspend fun getUserUid(): String
99
fun getEmail(): Flow<Result<String>>
1010
suspend fun updateUserNickName(uid: String, newNickName: String): Result<String>
1111
suspend fun signOut(): Result<Boolean>

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import com.whyranoid.data.account.AccountDataSourceImpl.PreferenceKeys.nickName
1111
import com.whyranoid.data.account.AccountDataSourceImpl.PreferenceKeys.profileImgUri
1212
import com.whyranoid.data.account.AccountDataSourceImpl.PreferenceKeys.uid
1313
import kotlinx.coroutines.flow.Flow
14+
import kotlinx.coroutines.flow.first
1415
import kotlinx.coroutines.flow.map
1516
import javax.inject.Inject
1617

@@ -39,10 +40,10 @@ class AccountDataSourceImpl @Inject constructor(
3940
preferences[profileImgUri] ?: EMPTY_STRING
4041
}
4142

42-
override fun getUserUid() = dataStoreDb.data
43+
override suspend fun getUserUid(): String = dataStoreDb.data
4344
.map { preferences ->
4445
preferences[uid] ?: EMPTY_STRING
45-
}
46+
}.first()
4647

4748
override fun getEmail(): Flow<Result<String>> {
4849
return dataStoreDb.data

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class AccountRepositoryImpl @Inject constructor(
1717
return true
1818
}
1919

20-
override fun getUid(): Flow<String> {
20+
override suspend fun getUid(): String {
2121
return accountDataSource.getUserUid()
2222
}
2323

data/src/main/java/com/whyranoid/data/di/PostModule.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.whyranoid.data.di
22

3-
import com.whyranoid.data.Post.PostRepositoryImpl
3+
import com.whyranoid.data.post.PostRepositoryImpl
44
import com.whyranoid.domain.repository.PostRepository
55
import dagger.Binds
66
import dagger.Module

data/src/main/java/com/whyranoid/data/Post/PostDataSource.kt renamed to data/src/main/java/com/whyranoid/data/post/PostDataSourceImpl.kt

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
package com.whyranoid.data.Post
1+
package com.whyranoid.data.post
22

3+
import android.util.Log
34
import com.google.firebase.firestore.FirebaseFirestore
45
import com.google.firebase.firestore.Query
56
import com.whyranoid.data.constant.CollectionId
@@ -24,7 +25,7 @@ import java.util.*
2425
import javax.inject.Inject
2526
import kotlin.coroutines.resume
2627

27-
class PostDataSource @Inject constructor(
28+
class PostDataSourceImpl @Inject constructor(
2829
private val db: FirebaseFirestore
2930
) {
3031

@@ -145,4 +146,35 @@ class PostDataSource @Inject constructor(
145146
}
146147
}
147148
}
149+
150+
suspend fun createRunningPost(
151+
authorUid: String,
152+
runningHistory: RunningHistory,
153+
content: String
154+
): Result<Boolean> {
155+
val postId = UUID.randomUUID().toString()
156+
Log.d("createRunningPost: 파이어베이스 성공", "ㅛㅅ")
157+
return runCatching {
158+
suspendCancellableCoroutine { cancellableContinuation ->
159+
160+
db.collection(CollectionId.POST_COLLECTION)
161+
.document(postId)
162+
.set(
163+
RunningPostResponse(
164+
postId = "seungmin_post_id",
165+
authorId = "seungmin",
166+
updatedAt = 879696,
167+
runningHistoryId = "asdf",
168+
content = "jkkjkjg"
169+
)
170+
).addOnSuccessListener {
171+
Log.d("createRunningPost: 파이어베이스 성공", "ㅛㅅ")
172+
cancellableContinuation.resume(true)
173+
}.addOnFailureListener {
174+
Log.d("createRunningPost: 파이어베이스 실패", "ㅛㅅ")
175+
cancellableContinuation.resume(false)
176+
}
177+
}
178+
}
179+
}
148180
}

data/src/main/java/com/whyranoid/data/Post/PostRepositoryImpl.kt renamed to data/src/main/java/com/whyranoid/data/post/PostRepositoryImpl.kt

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
package com.whyranoid.data.Post
1+
package com.whyranoid.data.post
22

33
import com.whyranoid.domain.model.Post
44
import com.whyranoid.domain.model.RunningHistory
5-
import com.whyranoid.domain.model.User
65
import com.whyranoid.domain.repository.PostRepository
76
import kotlinx.coroutines.flow.Flow
87
import javax.inject.Inject
98

109
class PostRepositoryImpl @Inject constructor(
11-
private val postDataSource: PostDataSource
10+
private val postDataSourceImpl: PostDataSourceImpl
1211
) : PostRepository {
1312

1413
// TODO : 페이징처리하기
@@ -17,23 +16,22 @@ class PostRepositoryImpl @Inject constructor(
1716
}
1817

1918
override fun getAllPostFlow(): Flow<List<Post>> {
20-
return postDataSource.getAllPostFlow()
19+
return postDataSourceImpl.getAllPostFlow()
2120
}
2221

23-
override suspend fun createPost(
24-
user: User,
25-
postContent: String,
22+
override suspend fun createRunningPost(
23+
authorUid: String,
2624
runningHistory: RunningHistory,
27-
updatedAt: Long
28-
): Boolean {
29-
TODO("Not yet implemented")
25+
content: String
26+
): Result<Boolean> {
27+
return postDataSourceImpl.createRunningPost(authorUid, runningHistory, content)
3028
}
3129

3230
override suspend fun createRecruitPost(
3331
authorUid: String,
3432
groupUid: String
3533
): Boolean {
36-
return postDataSource.createRecruitPost(authorUid, groupUid)
34+
return postDataSourceImpl.createRecruitPost(authorUid, groupUid)
3735
}
3836

3937
override suspend fun deletePost(postId: String): Boolean {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ interface AccountRepository {
1212
suspend fun loginUser(): Boolean
1313

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

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

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

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package com.whyranoid.domain.repository
22

33
import com.whyranoid.domain.model.Post
44
import com.whyranoid.domain.model.RunningHistory
5-
import com.whyranoid.domain.model.User
65
import kotlinx.coroutines.flow.Flow
76

87
interface PostRepository {
@@ -14,12 +13,11 @@ interface PostRepository {
1413
fun getAllPostFlow(): Flow<List<Post>>
1514

1615
// 글 작성하기 - 리모트
17-
suspend fun createPost(
18-
user: User,
19-
postContent: String,
16+
suspend fun createRunningPost(
17+
authorUid: String,
2018
runningHistory: RunningHistory,
21-
updatedAt: Long
22-
): Boolean
19+
content: String
20+
): Result<Boolean>
2321

2422
suspend fun createRecruitPost(
2523
authorUid: String,

domain/src/main/java/com/whyranoid/domain/usecase/CreatePostUseCase.kt renamed to domain/src/main/java/com/whyranoid/domain/usecase/CreateRunningPostUseCase.kt

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,14 @@ import com.whyranoid.domain.repository.AccountRepository
55
import com.whyranoid.domain.repository.PostRepository
66
import javax.inject.Inject
77

8-
class CreatePostUseCase @Inject constructor(
8+
class CreateRunningPostUseCase @Inject constructor(
99
private val postRepository: PostRepository,
1010
private val accountRepository: AccountRepository
1111
) {
1212
suspend operator fun invoke(
1313
postContent: String,
14-
runningHistory: RunningHistory,
15-
updatedAt: Long
16-
): Boolean {
17-
accountRepository.getUser().onSuccess { user ->
18-
return postRepository.createPost(user, postContent, runningHistory, updatedAt)
19-
}.onFailure {
20-
println("User 정보 없음")
21-
}
22-
return false
14+
runningHistory: RunningHistory
15+
): Result<Boolean> {
16+
return postRepository.createRunningPost(accountRepository.getUid(), runningHistory, postContent)
2317
}
2418
}

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,7 @@ class FinishRunningUseCase @Inject constructor(
99
private val accountRepository: AccountRepository
1010
) {
1111
suspend operator fun invoke(): Boolean {
12-
accountRepository.getUid().collect { uid ->
13-
runnerRepository.finishRunning(uid)
14-
}
12+
runnerRepository.finishRunning(accountRepository.getUid())
1513
return true
1614
}
1715
}

0 commit comments

Comments
 (0)