Skip to content

Commit 65a07ee

Browse files
committed
✨ 그룹 삭제 로직 구현
1 parent 31c874b commit 65a07ee

File tree

5 files changed

+51
-0
lines changed

5 files changed

+51
-0
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ interface GroupDataSource {
2424
uid: String
2525
): Boolean
2626

27+
suspend fun deleteGroup(
28+
uid: String,
29+
groupId: String
30+
): Boolean
31+
2732
fun getGroupInfoFlow(uid: String, groupId: String): Flow<GroupInfo>
2833

2934
suspend fun isDuplicatedGroupName(groupName: String): Boolean

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,28 @@ class GroupDataSourceImpl @Inject constructor(
143143
}
144144
}
145145

146+
override suspend fun deleteGroup(uid: String, groupId: String): Boolean {
147+
return suspendCancellableCoroutine { cancellableContinuation ->
148+
db.collection(GROUPS_COLLECTION)
149+
.document(groupId)
150+
.delete()
151+
.addOnSuccessListener {
152+
db.collection(USERS_COLLECTION)
153+
.document(uid)
154+
.update(
155+
JOINED_GROUP_LIST,
156+
FieldValue.arrayRemove(groupId)
157+
).addOnSuccessListener {
158+
cancellableContinuation.resume(true)
159+
}.addOnFailureListener {
160+
cancellableContinuation.resume(false)
161+
}
162+
}.addOnFailureListener {
163+
cancellableContinuation.resume(false)
164+
}
165+
}
166+
}
167+
146168
override fun getGroupInfoFlow(uid: String, groupId: String): Flow<GroupInfo> = callbackFlow {
147169
db.collection(GROUPS_COLLECTION)
148170
.document(groupId)

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ class GroupRepositoryImpl @Inject constructor(
6868
return groupDataSource.createGroup(groupName, introduce, rules, uid)
6969
}
7070

71+
override suspend fun deleteGroup(uid: String, groupId: String): Boolean {
72+
return groupDataSource.deleteGroup(uid, groupId)
73+
}
74+
7175
override suspend fun isDuplicatedGroupName(groupName: String): Boolean {
7276
return groupDataSource.isDuplicatedGroupName(groupName)
7377
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,5 +48,10 @@ interface GroupRepository {
4848
uid: String
4949
): Boolean
5050

51+
suspend fun deleteGroup(
52+
uid: String,
53+
groupId: String
54+
): Boolean
55+
5156
suspend fun isDuplicatedGroupName(groupName: String): Boolean
5257
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.whyranoid.domain.usecase
2+
3+
import com.whyranoid.domain.repository.AccountRepository
4+
import com.whyranoid.domain.repository.GroupRepository
5+
import javax.inject.Inject
6+
7+
// TODO : 그룹원들은 어떻게 그룹을 나가게 하지?
8+
class DeleteGroupUseCase @Inject constructor(
9+
private val accountRepository: AccountRepository,
10+
private val groupRepository: GroupRepository
11+
) {
12+
suspend operator fun invoke(groupId: String): Boolean {
13+
return groupRepository.deleteGroup(accountRepository.getUid(), groupId)
14+
}
15+
}

0 commit comments

Comments
 (0)