Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#213 : 쪽지 내 버그 수정해요 #216

Merged
merged 9 commits into from
Jan 13, 2025
Merged
6 changes: 3 additions & 3 deletions app/src/main/kotlin/com/bff/wespot/AppNavGraphs.kt
Original file line number Diff line number Diff line change
Expand Up @@ -128,13 +128,13 @@ object AppNavGraphs {

private val bottomBarScreenNames = listOf(
"vote/vote_home_screen",
"message/message_screen?toastMessage={toastMessage}&type={type}&messageId={messageId}",
"message/message_screen?type={type}&messageId={messageId}",
"entire/entire_screen",
)

private val topBarScreenNames = listOf(
"vote/vote_home_screen",
"message/message_screen?toastMessage={toastMessage}&type={type}&messageId={messageId}",
"message/message_screen&type={type}&messageId={messageId}",
"entire/entire_screen",
)

Expand Down Expand Up @@ -164,7 +164,7 @@ internal fun NavDestination.checkDestination(position: NavigationBarPosition): B
when (destination.route) {
"entire/entire_screen" -> return BarType.ENTIRE
"vote/vote_home_screen" -> return BarType.DEFAULT
"message/message_screen?toastMessage={toastMessage}&type={type}&messageId={messageId}" -> return BarType.DEFAULT
"message/message_screen?type={type}&messageId={messageId}" -> return BarType.DEFAULT
}
}
BarType.NONE
Expand Down
23 changes: 12 additions & 11 deletions app/src/main/kotlin/com/bff/wespot/CommonNavGraphNavigator.kt
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import com.bff.wespot.message.screen.MessageReportNavigator
import com.bff.wespot.message.screen.MessageReportScreenArgs
import com.bff.wespot.message.screen.MessageScreenArgs
import com.bff.wespot.message.screen.ReservedMessageNavigator
import com.bff.wespot.message.screen.ReservedMessageScreenArgs
import com.bff.wespot.message.screen.destinations.MessageEditScreenDestination
import com.bff.wespot.message.screen.destinations.MessageReportScreenDestination
import com.bff.wespot.message.screen.destinations.MessageScreenDestination
Expand Down Expand Up @@ -89,24 +88,26 @@ class CommonNavGraphNavigator(
navController.navigate(MessageWriteScreenDestination(args) within navGraph)
}

override fun navigateMessageScreen(args: MessageScreenArgs) {
navController.navigate(MessageScreenDestination(args) within navGraph) {
popUpTo((MessageScreenDestination(args) within navGraph).route) { inclusive = true }
}
override fun popUpToMessageScreen() {
navController.popBackStack(
route = (MessageScreenDestination() within navGraph).route,
inclusive = false,
)
}

override fun navigateMessageEditScreen(args: EditMessageScreenArgs) {
navController.navigate(MessageEditScreenDestination(args) within navGraph)
}

override fun navigateToReservedMessageScreen(args: ReservedMessageScreenArgs) {
navController.navigate(ReservedMessageScreenDestination(args) within navGraph)
override fun navigateToReservedMessageScreen() {
navController.navigate(ReservedMessageScreenDestination() within navGraph)
}

override fun navigateToReservedMessageScreenFromEdit(args: ReservedMessageScreenArgs) {
navController.navigate(ReservedMessageScreenDestination(args) within navGraph) {
popUpTo((ReservedMessageScreenDestination(args) within navGraph).route) { inclusive = true }
}
override fun popUpToReservedMessageScreen() {
navController.popBackStack(
route = (ReservedMessageScreenDestination() within navGraph).route,
inclusive = false
)
}

override fun navigateToVoteHome() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,17 @@ import androidx.compose.ui.zIndex
import androidx.hilt.navigation.compose.hiltViewModel
import com.bff.wespot.designsystem.component.button.WSButton
import com.bff.wespot.designsystem.component.header.WSTopBar
import com.bff.wespot.designsystem.component.indicator.WSToastType
import com.bff.wespot.designsystem.theme.StaticTypeScale
import com.bff.wespot.designsystem.theme.WeSpotThemeManager
import com.bff.wespot.message.R
import com.bff.wespot.message.model.ReportReason
import com.bff.wespot.message.state.report.ReportAction
import com.bff.wespot.message.state.report.ReportSideEffect
import com.bff.wespot.message.viewmodel.ReportViewModel
import com.bff.wespot.model.notification.NotificationType
import com.bff.wespot.ui.component.ListBottomGradient
import com.bff.wespot.ui.component.WSSelectionItem
import com.bff.wespot.ui.model.ToastState
import com.bff.wespot.ui.util.handleSideEffect
import com.ramcosta.composedestinations.annotation.Destination
import kotlinx.collections.immutable.persistentListOf
Expand All @@ -44,7 +45,7 @@ import org.orbitmvi.orbit.compose.collectSideEffect

interface MessageReportNavigator {
fun navigateUp()
fun navigateMessageScreen(args: MessageScreenArgs)
fun popUpToMessageScreen()
}

data class MessageReportScreenArgs(
Expand All @@ -56,6 +57,7 @@ data class MessageReportScreenArgs(
@Composable
fun MessageReportScreen(
viewModel: ReportViewModel = hiltViewModel(),
showToast: (ToastState) -> Unit,
navigator: MessageReportNavigator,
) {
val scrollState = rememberScrollState()
Expand All @@ -67,11 +69,16 @@ fun MessageReportScreen(

viewModel.collectSideEffect {
when (it) {
is ReportSideEffect.NavigateToMessage -> {
navigator.navigateMessageScreen(
args = MessageScreenArgs(
toastMessage = R.string.report_message_success,
type = NotificationType.MESSAGE_RECEIVED,
ReportSideEffect.NavigateToMessage -> {
navigator.popUpToMessageScreen()
}

is ReportSideEffect.ShowToast -> {
showToast(
ToastState(
message = it.message,
show = true,
type = WSToastType.Success,
),
)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.bff.wespot.message.screen

import androidx.annotation.StringRes
import androidx.compose.animation.Crossfade
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
Expand All @@ -15,7 +14,6 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import com.bff.wespot.designsystem.component.indicator.WSHomeTabRow
import com.bff.wespot.designsystem.component.indicator.WSToastType
import com.bff.wespot.message.R
import com.bff.wespot.message.common.HOME_SCREEN_INDEX
import com.bff.wespot.message.common.STORAGE_SCREEN_INDEX
Expand All @@ -33,11 +31,10 @@ interface MessageNavigator {
fun navigateUp()
fun navigateMessageReportScreen(args: MessageReportScreenArgs)
fun navigateReceiverSelectionScreen(args: ReceiverSelectionScreenArgs)
fun navigateToReservedMessageScreen(args: ReservedMessageScreenArgs)
fun navigateToReservedMessageScreen()
}

data class MessageScreenArgs(
@StringRes val toastMessage: Int? = null,
val type: NotificationType = NotificationType.IDLE,
val messageId: Int? = null,
)
Expand Down Expand Up @@ -77,9 +74,7 @@ internal fun MessageScreen(
HOME_SCREEN_INDEX -> {
MessageHomeScreen(
navigateToReservedMessageScreen = {
messageNavigator.navigateToReservedMessageScreen(
args = ReservedMessageScreenArgs(false),
)
messageNavigator.navigateToReservedMessageScreen()
},
navigateToMessageStorageScreen = {
selectedTabIndex = STORAGE_SCREEN_INDEX
Expand All @@ -98,9 +93,7 @@ internal fun MessageScreen(
type = navArgs.type,
messageId = navArgs.messageId,
navigateToReservedMessageScreen = {
messageNavigator.navigateToReservedMessageScreen(
args = ReservedMessageScreenArgs(false),
)
messageNavigator.navigateToReservedMessageScreen()
},
navigateToMessageReportScreen = { args ->
messageNavigator.navigateMessageReportScreen(args)
Expand All @@ -114,16 +107,6 @@ internal fun MessageScreen(
}

LaunchedEffect(Unit) {
if (navArgs.toastMessage != null) {
showToast(
ToastState(
message = navArgs.toastMessage,
show = true,
type = WSToastType.Success,
),
)
}

when (navArgs.type) {
NotificationType.MESSAGE_RECEIVED, NotificationType.MESSAGE_SENT -> {
selectedTabIndex = STORAGE_SCREEN_INDEX
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,13 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.bff.wespot.designsystem.component.header.WSTopBar
import com.bff.wespot.designsystem.component.indicator.WSToastType
import com.bff.wespot.designsystem.theme.StaticTypeScale
import com.bff.wespot.designsystem.theme.WeSpotThemeManager
import com.bff.wespot.message.R
Expand All @@ -35,7 +31,6 @@ import com.bff.wespot.message.viewmodel.SendViewModel
import com.bff.wespot.ui.component.LoadingAnimation
import com.bff.wespot.ui.component.NetworkDialog
import com.bff.wespot.ui.component.ReservedMessageItem
import com.bff.wespot.ui.component.TopToast
import com.bff.wespot.ui.util.handleSideEffect
import com.ramcosta.composedestinations.annotation.Destination
import org.orbitmvi.orbit.compose.collectAsState
Expand All @@ -45,21 +40,14 @@ interface ReservedMessageNavigator {
fun navigateMessageEditScreen(args: EditMessageScreenArgs)
}

data class ReservedMessageScreenArgs(
val isMessageEdit: Boolean,
)

@OptIn(ExperimentalMaterial3Api::class)
@Destination(navArgsDelegate = ReservedMessageScreenArgs::class)
@Destination
@Composable
fun ReservedMessageScreen(
navigator: ReservedMessageNavigator,
navArgs: ReservedMessageScreenArgs,
sendViewModel: SendViewModel,
viewModel: MessageViewModel = hiltViewModel(),
) {
var showToast by remember { mutableStateOf(false) }

val state by viewModel.collectAsState()
val action = viewModel::onAction

Expand Down Expand Up @@ -121,19 +109,10 @@ fun ReservedMessageScreen(
}
}

TopToast(
message = stringResource(id = R.string.edit_done),
toastType = WSToastType.Success,
showToast = showToast,
) {
showToast = false
}

NetworkDialog(context = context, networkState = networkState)

LaunchedEffect(Unit) {
action(MessageAction.OnReservedMessageScreenEntered)
sendViewModel.onAction(SendAction.OnReservedMessageScreenEntered)
showToast = navArgs.isMessageEdit
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,14 @@ import com.bff.wespot.designsystem.theme.StaticTypeScale
import com.bff.wespot.designsystem.theme.WeSpotThemeManager
import com.bff.wespot.message.R
import com.bff.wespot.message.component.SendExitDialog
import com.bff.wespot.message.screen.MessageScreenArgs
import com.bff.wespot.message.screen.ReservedMessageScreenArgs
import com.bff.wespot.message.state.send.SendAction
import com.bff.wespot.message.state.send.SendSideEffect
import com.bff.wespot.message.viewmodel.SendViewModel
import com.bff.wespot.ui.component.LetterCountIndicator
import com.bff.wespot.ui.component.LoadingAnimation
import com.bff.wespot.ui.component.NetworkDialog
import com.bff.wespot.ui.component.TopToast
import com.bff.wespot.ui.model.ToastState
import com.bff.wespot.ui.util.handleSideEffect
import com.ramcosta.composedestinations.annotation.Destination
import org.orbitmvi.orbit.compose.collectAsState
Expand All @@ -58,8 +57,8 @@ interface MessageEditNavigator {
fun navigateUp()
fun navigateReceiverSelectionScreen(args: ReceiverSelectionScreenArgs)
fun navigateMessageWriteScreen(args: MessageWriteScreenArgs)
fun navigateMessageScreen(args: MessageScreenArgs)
fun navigateToReservedMessageScreenFromEdit(args: ReservedMessageScreenArgs)
fun popUpToMessageScreen()
fun popUpToReservedMessageScreen()
}

data class EditMessageScreenArgs(
Expand All @@ -73,6 +72,7 @@ data class EditMessageScreenArgs(
fun MessageEditScreen(
navigator: MessageEditNavigator,
navArgs: EditMessageScreenArgs,
showToast: (ToastState) -> Unit,
viewModel: SendViewModel,
) {
var exitDialog by remember { mutableStateOf(false) }
Expand All @@ -95,19 +95,25 @@ fun MessageEditScreen(
reserveDialog = false
}

is SendSideEffect.ShowTimeoutDialog -> {
SendSideEffect.ShowTimeoutDialog -> {
timeoutDialog = true
}

is SendSideEffect.NavigateToMessage -> {
navigator.navigateMessageScreen(
args = MessageScreenArgs(toastMessage = R.string.message_reserve_success),
)
SendSideEffect.NavigateToMessage -> {
navigator.popUpToMessageScreen()
}

SendSideEffect.NavigateToReservedMessage -> {
navigator.popUpToReservedMessageScreen()
}

is SendSideEffect.NavigateToReservedMessage -> {
navigator.navigateToReservedMessageScreenFromEdit(
args = ReservedMessageScreenArgs(true),
is SendSideEffect.ShowToast -> {
showToast(
ToastState(
message = it.message,
show = true,
type = WSToastType.Success,
),
)
}
}
Expand Down Expand Up @@ -234,7 +240,7 @@ fun MessageEditScreen(
isReservedMessage = state.isReservedMessage,
okButtonClick = {
exitDialog = false
navigator.navigateMessageScreen(args = MessageScreenArgs())
navigator.popUpToMessageScreen()
},
cancelButtonClick = { exitDialog = false },
)
Expand All @@ -258,9 +264,7 @@ fun MessageEditScreen(
subTitle = state.messageSendFailedDialogContent,
okButtonText = stringResource(R.string.positive_answer),
cancelButtonText = stringResource(R.string.close),
okButtonClick = {
navigator.navigateMessageScreen(args = MessageScreenArgs())
},
okButtonClick = navigator::popUpToMessageScreen,
cancelButtonClick = { timeoutDialog = false },
onDismissRequest = { },
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ import com.bff.wespot.designsystem.theme.WeSpotThemeManager
import com.bff.wespot.message.R
import com.bff.wespot.message.common.MESSAGE_MAX_LENGTH
import com.bff.wespot.message.component.SendExitDialog
import com.bff.wespot.message.screen.MessageScreenArgs
import com.bff.wespot.message.state.send.SendAction
import com.bff.wespot.message.viewmodel.SendViewModel
import com.bff.wespot.ui.component.LetterCountIndicator
Expand All @@ -47,7 +46,7 @@ import org.orbitmvi.orbit.compose.collectAsState

interface MessageWriteNavigator {
fun navigateUp()
fun navigateMessageScreen(args: MessageScreenArgs)
fun popUpToMessageScreen()
fun navigateMessageEditScreen(args: EditMessageScreenArgs)
}

Expand Down Expand Up @@ -175,7 +174,7 @@ fun MessageWriteScreen(
isReservedMessage = state.isReservedMessage,
okButtonClick = {
dialogState = false
navigator.navigateMessageScreen(args = MessageScreenArgs())
navigator.popUpToMessageScreen()
},
cancelButtonClick = { dialogState = false },
)
Expand Down
Loading
Loading