Skip to content

Commit 0c2a789

Browse files
authored
๐Ÿ”€ #24 from boostcampwm-2022/feat/running_tab
๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ์ƒํƒœ ๊ด€๋ฆฌ ๋ชจ๋“ˆ ์ถ”๊ฐ€ ๋ฐ Running Tab ์™„์„ฑ
2 parents 6ddeba0 + 1fd3758 commit 0c2a789

27 files changed

+334
-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>
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.whyranoid.data.account
2+
3+
import com.whyranoid.domain.model.User
4+
import com.whyranoid.domain.repository.AccountRepository
5+
import javax.inject.Inject
6+
7+
class AccountRepositoryImpl @Inject constructor() : AccountRepository {
8+
override suspend fun getUser(): Result<User> {
9+
return Result.success(User("byeonghee-uid", "๋ณ‘ํฌ", "github.com/bngsh"))
10+
}
11+
12+
override suspend fun loginUser(): Boolean {
13+
return true
14+
}
15+
16+
override suspend fun getUid(): Result<String> {
17+
return Result.success("byeonghee-uid")
18+
}
19+
20+
override suspend fun getNickname(): Result<String> {
21+
return Result.success("๋ณ‘ํฌ")
22+
}
23+
24+
override suspend fun updateNickname(newNickname: String): Boolean {
25+
return true
26+
}
27+
28+
override suspend fun getProfileUrl(): Result<String> {
29+
return Result.success("github.com/bngsh")
30+
}
31+
32+
override suspend fun updateProfileUrl(newProfileUrl: String): Boolean {
33+
return true
34+
}
35+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.whyranoid.data.di
2+
3+
import com.whyranoid.data.account.AccountRepositoryImpl
4+
import com.whyranoid.domain.repository.AccountRepository
5+
import dagger.Binds
6+
import dagger.Module
7+
import dagger.hilt.InstallIn
8+
import dagger.hilt.components.SingletonComponent
9+
10+
@Module
11+
@InstallIn(SingletonComponent::class)
12+
abstract class AccountModule {
13+
14+
@Binds
15+
abstract fun bindAccountRepository(accountRepositoryImpl: AccountRepositoryImpl): AccountRepository
16+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.whyranoid.data.di
2+
3+
import com.whyranoid.data.group.GroupRepositoryImpl
4+
import com.whyranoid.domain.repository.GroupRepository
5+
import dagger.Binds
6+
import dagger.Module
7+
import dagger.hilt.InstallIn
8+
import dagger.hilt.components.SingletonComponent
9+
10+
@Module
11+
@InstallIn(SingletonComponent::class)
12+
abstract class GroupModule {
13+
14+
@Binds
15+
abstract fun bindGroupRepository(groupRepositoryImpl: GroupRepositoryImpl): GroupRepository
16+
}

โ€Ž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
@@ -39,4 +39,8 @@ class GroupRepositoryImpl @Inject constructor(
3939
override fun getGroupNotifications(groupId: String): Flow<List<GroupNotification>> {
4040
return groupNotificationDataSource.getGroupNotifications(groupId)
4141
}
42+
43+
override suspend fun notifyRunningStart(uid: String, groupIdList: List<String>) {
44+
groupNotificationDataSource.notifyRunningStart(uid, groupIdList)
45+
}
4246
}

โ€Ž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 {

0 commit comments

Comments
ย (0)