Skip to content

Commit 7644175

Browse files
authored
πŸ”€ #55 from boostcampwm-2022/feat/community_create_running_post
μš΄λ™ 기둝 선택 ν›„ 인증글 μž‘μ„± κ΅¬ν˜„ 및 uid Flowμ—μ„œ ν•œλ²ˆλ§Œ λ°›μ•„μ˜€λ„λ‘ μˆ˜μ •
2 parents e9c72c9 + a51d085 commit 7644175

34 files changed

+568
-170
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: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.whyranoid.data.Post
1+
package com.whyranoid.data.post
22

33
import com.google.firebase.firestore.FirebaseFirestore
44
import com.google.firebase.firestore.Query
@@ -24,7 +24,7 @@ import java.util.*
2424
import javax.inject.Inject
2525
import kotlin.coroutines.resume
2626

27-
class PostDataSource @Inject constructor(
27+
class PostDataSourceImpl @Inject constructor(
2828
private val db: FirebaseFirestore
2929
) {
3030

@@ -145,4 +145,33 @@ class PostDataSource @Inject constructor(
145145
}
146146
}
147147
}
148+
149+
suspend fun createRunningPost(
150+
authorUid: String,
151+
runningHistoryId: String,
152+
content: String
153+
): Result<Boolean> {
154+
val postId = UUID.randomUUID().toString()
155+
156+
return runCatching {
157+
suspendCancellableCoroutine { cancellableContinuation ->
158+
159+
db.collection(CollectionId.POST_COLLECTION)
160+
.document(postId)
161+
.set(
162+
RunningPostResponse(
163+
postId = postId,
164+
authorId = authorUid,
165+
updatedAt = System.currentTimeMillis(),
166+
runningHistoryId = runningHistoryId,
167+
content = content
168+
)
169+
).addOnSuccessListener {
170+
cancellableContinuation.resume(true)
171+
}.addOnFailureListener {
172+
cancellableContinuation.resume(false)
173+
}
174+
}
175+
}
176+
}
148177
}

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

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

33
import com.whyranoid.domain.model.Post
4-
import com.whyranoid.domain.model.RunningHistory
5-
import com.whyranoid.domain.model.User
64
import com.whyranoid.domain.repository.PostRepository
75
import kotlinx.coroutines.flow.Flow
86
import javax.inject.Inject
97

108
class PostRepositoryImpl @Inject constructor(
11-
private val postDataSource: PostDataSource
9+
private val postDataSourceImpl: PostDataSourceImpl
1210
) : PostRepository {
1311

1412
// TODO : νŽ˜μ΄μ§•μ²˜λ¦¬ν•˜κΈ°
@@ -17,23 +15,22 @@ class PostRepositoryImpl @Inject constructor(
1715
}
1816

1917
override fun getAllPostFlow(): Flow<List<Post>> {
20-
return postDataSource.getAllPostFlow()
18+
return postDataSourceImpl.getAllPostFlow()
2119
}
2220

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

3229
override suspend fun createRecruitPost(
3330
authorUid: String,
3431
groupUid: String
3532
): Boolean {
36-
return postDataSource.createRecruitPost(authorUid, groupUid)
33+
return postDataSourceImpl.createRecruitPost(authorUid, groupUid)
3734
}
3835

3936
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: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package com.whyranoid.domain.repository
22

33
import com.whyranoid.domain.model.Post
4-
import com.whyranoid.domain.model.RunningHistory
5-
import com.whyranoid.domain.model.User
64
import kotlinx.coroutines.flow.Flow
75

86
interface PostRepository {
@@ -14,12 +12,11 @@ interface PostRepository {
1412
fun getAllPostFlow(): Flow<List<Post>>
1513

1614
// κΈ€ μž‘μ„±ν•˜κΈ° - 리λͺ¨νŠΈ
17-
suspend fun createPost(
18-
user: User,
19-
postContent: String,
20-
runningHistory: RunningHistory,
21-
updatedAt: Long
22-
): Boolean
15+
suspend fun createRunningPost(
16+
authorUid: String,
17+
runningHistoryId: String,
18+
content: String
19+
): Result<Boolean>
2320

2421
suspend fun createRecruitPost(
2522
authorUid: String,

β€Ždomain/src/main/java/com/whyranoid/domain/usecase/CreatePostUseCase.kt

Lines changed: 0 additions & 24 deletions
This file was deleted.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.whyranoid.domain.usecase
2+
3+
import com.whyranoid.domain.repository.AccountRepository
4+
import com.whyranoid.domain.repository.PostRepository
5+
import javax.inject.Inject
6+
7+
class CreateRunningPostUseCase @Inject constructor(
8+
private val postRepository: PostRepository,
9+
private val accountRepository: AccountRepository
10+
) {
11+
suspend operator fun invoke(
12+
postContent: String,
13+
runningHistoryId: String
14+
): Result<Boolean> {
15+
return postRepository.createRunningPost(
16+
accountRepository.getUid(),
17+
runningHistoryId,
18+
postContent
19+
)
20+
}
21+
}

0 commit comments

Comments
Β (0)