Skip to content

Commit 884c25a

Browse files
authored
Merge pull request #130 from Nico1eKim/api/#125-rooms_delete
[API] 오늘의 한마디 삭제, 방 나가기 api 연동
2 parents 60ff42c + 140f7fb commit 884c25a

File tree

12 files changed

+220
-113
lines changed

12 files changed

+220
-113
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.texthip.thip.data.model.rooms.response
2+
3+
import kotlinx.serialization.Serializable
4+
5+
@Serializable
6+
data class RoomsDeleteDailyGreetingResponse (
7+
val roomId: Int,
8+
)

app/src/main/java/com/texthip/thip/data/repository/RoomsRepository.kt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,16 @@ class RoomsRepository @Inject constructor(
289289
).handleBaseResponse().getOrThrow()
290290
}
291291

292+
suspend fun deleteRoomsDailyGreeting(
293+
roomId: Int,
294+
attendanceCheckId: Int
295+
) = runCatching {
296+
roomsService.deleteRoomsDailyGreeting(
297+
roomId = roomId,
298+
attendanceCheckId = attendanceCheckId
299+
).handleBaseResponse().getOrThrow()
300+
}
301+
292302
suspend fun getRoomsRecordsPin(
293303
roomId: Int,
294304
recordId: Int
@@ -298,4 +308,12 @@ class RoomsRepository @Inject constructor(
298308
recordId = recordId
299309
).handleBaseResponse().getOrThrow()
300310
}
311+
312+
suspend fun leaveRoom(
313+
roomId: Int,
314+
) = runCatching {
315+
roomsService.leaveRoom(
316+
roomId = roomId,
317+
).handleBaseResponse().getOrThrow()
318+
}
301319
}

app/src/main/java/com/texthip/thip/data/service/RoomsService.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import com.texthip.thip.data.model.rooms.response.RoomsBookPageResponse
2121
import com.texthip.thip.data.model.rooms.response.RoomsCreateDailyGreetingResponse
2222
import com.texthip.thip.data.model.rooms.response.RoomsCreateVoteResponse
2323
import com.texthip.thip.data.model.rooms.response.RoomsDailyGreetingResponse
24+
import com.texthip.thip.data.model.rooms.response.RoomsDeleteDailyGreetingResponse
2425
import com.texthip.thip.data.model.rooms.response.RoomsDeleteRecordResponse
2526
import com.texthip.thip.data.model.rooms.response.RoomsDeleteVoteResponse
2627
import com.texthip.thip.data.model.rooms.response.RoomsPlayingResponse
@@ -178,9 +179,20 @@ interface RoomsService {
178179
@Body request: RoomsCreateDailyGreetingRequest
179180
): BaseResponse<RoomsCreateDailyGreetingResponse>
180181

182+
@DELETE("rooms/{roomId}/daily-greeting/{attendanceCheckId}")
183+
suspend fun deleteRoomsDailyGreeting(
184+
@Path("roomId") roomId: Int,
185+
@Path("attendanceCheckId") attendanceCheckId: Int
186+
): BaseResponse<RoomsDeleteDailyGreetingResponse>
187+
181188
@GET("rooms/{roomId}/records/{recordId}/pin")
182189
suspend fun getRoomsRecordsPin(
183190
@Path("roomId") roomId: Int,
184191
@Path("recordId") recordId: Int
185192
): BaseResponse<RoomsRecordsPinResponse>
193+
194+
@DELETE("rooms/{roomId}/leave")
195+
suspend fun leaveRoom(
196+
@Path("roomId") roomId: Int
197+
): BaseResponse<Unit>
186198
}

app/src/main/java/com/texthip/thip/ui/feed/screen/FeedCommentScreen.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ import androidx.compose.ui.focus.FocusRequester
4343
import androidx.compose.ui.focus.focusRequester
4444
import androidx.compose.ui.input.pointer.pointerInput
4545
import androidx.compose.ui.layout.ContentScale
46-
import androidx.compose.ui.platform.LocalContext
4746
import androidx.compose.ui.platform.LocalDensity
4847
import androidx.compose.ui.platform.LocalFocusManager
4948
import androidx.compose.ui.res.stringResource
@@ -207,7 +206,6 @@ private fun FeedCommentContent(
207206
var showDeleteDialog by remember { mutableStateOf(false) }
208207
var showToast by remember { mutableStateOf(false) }
209208
var toastMessage by remember { mutableStateOf("") }
210-
val context = LocalContext.current
211209

212210
LaunchedEffect(showToast) {
213211
if (showToast) {

app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupMySectionHeader.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ fun GroupMySectionHeader(onClick: (() -> Unit)? = null) {
2828
verticalAlignment = Alignment.CenterVertically
2929
) {
3030
Text(
31-
text = stringResource(R.string.my_group),
31+
text = stringResource(R.string.my_group_room),
3232
style = typography.title_b700_s20_h24,
3333
color = colors.White
3434
)

app/src/main/java/com/texthip/thip/ui/group/myroom/screen/GroupMyScreen.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ fun GroupMyScreen(
4848
) {
4949
val uiState by viewModel.uiState.collectAsState()
5050

51+
LaunchedEffect(key1 = Unit) {
52+
viewModel.refreshData()
53+
}
54+
5155
GroupMyContent(
5256
uiState = uiState,
5357
onCardClick = onCardClick,

app/src/main/java/com/texthip/thip/ui/group/room/mock/GroupRoomChatData.kt

Lines changed: 0 additions & 57 deletions
This file was deleted.

app/src/main/java/com/texthip/thip/ui/group/room/screen/GroupRoomChatScreen.kt

Lines changed: 57 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.texthip.thip.ui.group.room.screen
22

3+
import android.widget.Toast
34
import androidx.compose.animation.AnimatedVisibility
45
import androidx.compose.animation.core.tween
56
import androidx.compose.animation.slideInVertically
@@ -28,6 +29,8 @@ import androidx.compose.runtime.setValue
2829
import androidx.compose.ui.Alignment
2930
import androidx.compose.ui.Modifier
3031
import androidx.compose.ui.draw.blur
32+
import androidx.compose.ui.graphics.Color
33+
import androidx.compose.ui.platform.LocalContext
3134
import androidx.compose.ui.res.stringResource
3235
import androidx.compose.ui.tooling.preview.Preview
3336
import androidx.compose.ui.unit.dp
@@ -60,21 +63,52 @@ fun GroupRoomChatScreen(
6063
) {
6164
var inputText by remember { mutableStateOf("") }
6265
val uiState by viewModel.uiState.collectAsState()
66+
val context = LocalContext.current
6367

64-
var activeToast by remember { mutableStateOf<ToastType?>(null) }
68+
var showToast by remember { mutableStateOf(false) }
69+
var toastMessage by remember { mutableStateOf("") }
70+
val colorWhite = colors.White
71+
val colorRed = colors.Red
72+
var toastColor by remember { mutableStateOf(colorWhite) }
73+
74+
val dailyGreetingLimitMessage = stringResource(R.string.group_room_chat_max)
75+
val deleteSuccessMessage = stringResource(R.string.group_room_chat_delete_success)
6576

6677
LaunchedEffect(key1 = Unit) {
6778
viewModel.eventFlow.collectLatest { event ->
6879
when (event) {
6980
is GroupRoomChatEvent.ShowToast -> {
70-
activeToast = event.type
81+
when (event.type) {
82+
ToastType.DAILY_GREETING_LIMIT -> {
83+
toastMessage = dailyGreetingLimitMessage
84+
toastColor = colorRed
85+
}
86+
ToastType.FIRST_WRITE -> {
87+
toastMessage = dailyGreetingLimitMessage
88+
toastColor = colorWhite
89+
}
90+
ToastType.DELETE_GREETING_SUCCESS -> {
91+
toastMessage = deleteSuccessMessage
92+
toastColor = colorWhite
93+
}
94+
}
95+
showToast = true
96+
}
97+
is GroupRoomChatEvent.ShowErrorToast -> {
98+
Toast.makeText(context, event.message, Toast.LENGTH_SHORT).show()
7199
}
72-
73100
else -> Unit
74101
}
75102
}
76103
}
77104

105+
LaunchedEffect(showToast) {
106+
if (showToast) {
107+
delay(3000)
108+
showToast = false
109+
}
110+
}
111+
78112
GroupRoomChatContent(
79113
uiState = uiState,
80114
onEvent = viewModel::onEvent,
@@ -85,8 +119,9 @@ fun GroupRoomChatScreen(
85119
inputText = ""
86120
},
87121
onNavigateBack = onBackClick,
88-
activeToast = activeToast,
89-
onDismissToast = { activeToast = null }
122+
showToast = showToast,
123+
toastMessage = toastMessage,
124+
toastColor = toastColor
90125
)
91126
}
92127

@@ -98,8 +133,9 @@ fun GroupRoomChatContent(
98133
onInputTextChanged: (String) -> Unit,
99134
onSendClick: () -> Unit,
100135
onNavigateBack: () -> Unit,
101-
activeToast: ToastType?,
102-
onDismissToast: () -> Unit
136+
showToast: Boolean,
137+
toastMessage: String,
138+
toastColor: Color,
103139
) {
104140
var isBottomSheetVisible by remember { mutableStateOf(false) }
105141
var selectedMessage by remember { mutableStateOf<TodayCommentList?>(null) }
@@ -240,54 +276,25 @@ fun GroupRoomChatContent(
240276
}
241277

242278
AnimatedVisibility(
243-
visible = activeToast != null,
279+
// visible 조건을 showToast로 변경
280+
visible = showToast,
244281
enter = slideInVertically(
245-
initialOffsetY = { -it }, // 위에서 아래로
282+
initialOffsetY = { -it },
246283
animationSpec = tween(durationMillis = 2000)
247284
),
248285
exit = slideOutVertically(
249-
targetOffsetY = { -it }, // 위로 사라짐
286+
targetOffsetY = { -it },
250287
animationSpec = tween(durationMillis = 2000)
251288
),
252289
modifier = Modifier
253290
.align(Alignment.TopCenter)
254291
.padding(horizontal = 20.dp, vertical = 16.dp)
255292
.zIndex(3f)
256293
) {
257-
LaunchedEffect(activeToast) {
258-
if (activeToast != null) {
259-
delay(3000L)
260-
onDismissToast()
261-
}
262-
}
263-
264-
AnimatedVisibility(
265-
visible = activeToast != null,
266-
enter = slideInVertically(
267-
initialOffsetY = { -it },
268-
animationSpec = tween(durationMillis = 2000)
269-
),
270-
exit = slideOutVertically(
271-
targetOffsetY = { -it },
272-
animationSpec = tween(durationMillis = 2000)
273-
),
274-
modifier = Modifier
275-
.align(Alignment.TopCenter)
276-
.padding(horizontal = 20.dp, vertical = 16.dp)
277-
.zIndex(3f)
278-
) {
279-
when (activeToast) {
280-
ToastType.DAILY_GREETING_LIMIT -> {
281-
ToastWithDate(color = colors.Red)
282-
}
283-
284-
ToastType.FIRST_WRITE -> {
285-
ToastWithDate()
286-
}
287-
288-
null -> {}
289-
}
290-
}
294+
ToastWithDate(
295+
message = toastMessage,
296+
color = toastColor
297+
)
291298
}
292299
}
293300

@@ -298,7 +305,9 @@ fun GroupRoomChatContent(
298305
text = stringResource(R.string.delete),
299306
color = colors.Red,
300307
onClick = {
301-
// TODO: 삭제 처리
308+
selectedMessage?.let { message ->
309+
onEvent(GroupRoomChatEvent.DeleteGreeting(message.attendanceCheckId))
310+
}
302311
isBottomSheetVisible = false
303312
}
304313
)
@@ -352,8 +361,9 @@ private fun GroupRoomChatScreenPreview() {
352361
onInputTextChanged = { newText -> inputText = newText },
353362
onSendClick = {},
354363
onNavigateBack = {},
355-
activeToast = null,
356-
onDismissToast = {}
364+
showToast = false,
365+
toastMessage = "",
366+
toastColor = colors.White
357367
)
358368
}
359369
}

0 commit comments

Comments
 (0)