Skip to content

Commit b06b9ee

Browse files
authored
Merge branch 'develop' into feat/myGroupList
2 parents 5b0b0cf + 0c2a789 commit b06b9ee

File tree

23 files changed

+252
-21
lines changed

23 files changed

+252
-21
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
<category android:name="android.intent.category.LAUNCHER" />
2424
</intent-filter>
2525
</activity>
26+
<activity android:name="com.whyranoid.presentation.running.RunningActivity" />
2627
</application>
2728

2829
</manifest>

data/src/main/java/com/whyranoid/data/di/running/RunningModule.kt renamed to data/src/main/java/com/whyranoid/data/di/RunningModule.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
package com.whyranoid.data.di.running
1+
package com.whyranoid.data.di
22

33
import com.google.firebase.firestore.FirebaseFirestore
4+
import com.whyranoid.data.running.RunningDataSource
5+
import com.whyranoid.data.running.RunningDataSourceImpl
46
import com.whyranoid.data.running.RunningRepositoryImpl
57
import com.whyranoid.domain.repository.RunningRepository
68
import dagger.Module

data/src/main/java/com/whyranoid/data/group/GroupRepositoryImpl.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,8 @@ class GroupRepositoryImpl @Inject constructor(
4141
override fun getGroupNotifications(groupId: String): Flow<List<GroupNotification>> {
4242
return groupNotificationDataSource.getGroupNotifications(groupId)
4343
}
44+
45+
override suspend fun notifyRunningStart(uid: String, groupIdList: List<String>) {
46+
groupNotificationDataSource.notifyRunningStart(uid, groupIdList)
47+
}
4448
}

data/src/main/java/com/whyranoid/data/groupnotification/GroupNotificationDataSource.kt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,16 @@ import com.whyranoid.data.model.StartNotificationResponse
99
import com.whyranoid.data.model.toFinishNotification
1010
import com.whyranoid.data.model.toStartNotification
1111
import com.whyranoid.domain.model.GroupNotification
12+
import com.whyranoid.domain.model.StartNotification
13+
import kotlinx.coroutines.Dispatchers
1214
import kotlinx.coroutines.FlowPreview
1315
import kotlinx.coroutines.channels.awaitClose
1416
import kotlinx.coroutines.flow.Flow
1517
import kotlinx.coroutines.flow.callbackFlow
1618
import kotlinx.coroutines.flow.flattenMerge
1719
import kotlinx.coroutines.flow.flowOf
20+
import kotlinx.coroutines.withContext
21+
import java.util.UUID
1822
import javax.inject.Inject
1923

2024
class GroupNotificationDataSource @Inject constructor(
@@ -50,6 +54,23 @@ class GroupNotificationDataSource @Inject constructor(
5054
awaitClose()
5155
}
5256

57+
suspend fun notifyRunningStart(uid: String, groupIdList: List<String>) {
58+
withContext(Dispatchers.IO) {
59+
groupIdList.forEach { groupId ->
60+
db.collection(GROUP_NOTIFICATIONS_COLLECTION)
61+
.document(groupId)
62+
.collection(START_NOTIFICATION)
63+
.document(UUID.randomUUID().toString())
64+
.set(
65+
StartNotification(
66+
startedAt = System.currentTimeMillis(),
67+
uid = uid
68+
)
69+
)
70+
}
71+
}
72+
}
73+
5374
private fun getGroupFinishNotifications(groupId: String): Flow<List<GroupNotification>> =
5475
callbackFlow {
5576
db.collection(GROUP_NOTIFICATIONS_COLLECTION)

data/src/main/java/com/whyranoid/data/di/running/RunningDataSource.kt renamed to data/src/main/java/com/whyranoid/data/running/RunningDataSource.kt

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

33
import kotlinx.coroutines.flow.Flow
44

data/src/main/java/com/whyranoid/data/di/running/RunningDataSourceImpl.kt renamed to data/src/main/java/com/whyranoid/data/running/RunningDataSourceImpl.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.whyranoid.data.di.running
1+
package com.whyranoid.data.running
22

33
import com.google.firebase.firestore.FieldValue
44
import com.google.firebase.firestore.FirebaseFirestore
@@ -38,6 +38,7 @@ class RunningDataSourceImpl(private val db: FirebaseFirestore) : RunningDataSour
3838
}
3939

4040
override suspend fun finishRunning(uid: String): Boolean {
41+
// TODO 구현
4142
return suspendCoroutine { continuation ->
4243
db.collection("Runners")
4344
.document("runnersId")

data/src/main/java/com/whyranoid/data/running/RunningRepositoryImpl.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.whyranoid.data.running
22

3-
import com.whyranoid.data.di.running.RunningDataSource
43
import com.whyranoid.domain.repository.RunningRepository
54
import kotlinx.coroutines.flow.Flow
65

@@ -10,7 +9,7 @@ class RunningRepositoryImpl(private val runningDataSource: RunningDataSource) :
109
}
1110

1211
override suspend fun startRunning(uid: String): Boolean {
13-
return true
12+
return runningDataSource.startRunning(uid)
1413
}
1514

1615
override suspend fun finishRunning(uid: String): Boolean {

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,6 @@ interface GroupRepository {
2727

2828
// 혹은 그룹 채팅을 가져오기 + 글 작성하기
2929
fun getGroupNotifications(groupId: String): Flow<List<GroupNotification>>
30+
31+
suspend fun notifyRunningStart(uid: String, groupIdList: List<String>)
3032
}

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

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,26 @@
11
package com.whyranoid.domain.usecase
22

33
import com.whyranoid.domain.repository.AccountRepository
4+
import com.whyranoid.domain.repository.GroupRepository
45
import com.whyranoid.domain.repository.RunningRepository
56
import javax.inject.Inject
67

78
class StartRunningUseCase @Inject constructor(
89
private val runningRepository: RunningRepository,
9-
private val accountRepository: AccountRepository
10+
private val accountRepository: AccountRepository,
11+
private val groupRepository: GroupRepository
1012
) {
1113
suspend operator fun invoke(): Boolean {
1214
accountRepository.getUid().onSuccess { uid ->
13-
return runningRepository.startRunning(uid)
15+
runningRepository.startRunning(uid)
16+
groupRepository.getMyGroupList(uid).onSuccess { groupInfos ->
17+
groupRepository.notifyRunningStart(uid, groupInfos.map { it.groupId })
18+
return true
19+
}.onFailure {
20+
return false
21+
}
1422
}.onFailure {
15-
println("UID 또 이상해")
23+
return false
1624
}
1725
return false
1826
}

presentation/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
33

4+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
45
<application>
56
<activity
67
android:name=".MainActivity"

0 commit comments

Comments
 (0)