From 95f734638b641f9ea14b4bbacf64a20e7f90ecc3 Mon Sep 17 00:00:00 2001 From: jeongjaino Date: Wed, 18 Sep 2024 21:06:37 +0900 Subject: [PATCH] =?UTF-8?q?[FEATURE]#155=20:=20SideEffectState=20=EB=B0=8F?= =?UTF-8?q?=20SideEffect=EC=97=90=20=EB=94=B0=EB=A5=B8=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/bff/wespot/model/SideEffectState.kt | 8 +++++ .../com/bff/wespot/ui/SideEffectHandler.kt | 35 +++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 core/ui/src/main/kotlin/com/bff/wespot/model/SideEffectState.kt create mode 100644 core/ui/src/main/kotlin/com/bff/wespot/ui/SideEffectHandler.kt diff --git a/core/ui/src/main/kotlin/com/bff/wespot/model/SideEffectState.kt b/core/ui/src/main/kotlin/com/bff/wespot/model/SideEffectState.kt new file mode 100644 index 00000000..c140043f --- /dev/null +++ b/core/ui/src/main/kotlin/com/bff/wespot/model/SideEffectState.kt @@ -0,0 +1,8 @@ +package com.bff.wespot.model + +data class SideEffectState( + val show: Boolean, + val sideEffect: SideEffect, +) { + constructor() : this(false, SideEffect.ShowToast("")) +} diff --git a/core/ui/src/main/kotlin/com/bff/wespot/ui/SideEffectHandler.kt b/core/ui/src/main/kotlin/com/bff/wespot/ui/SideEffectHandler.kt new file mode 100644 index 00000000..1e24df18 --- /dev/null +++ b/core/ui/src/main/kotlin/com/bff/wespot/ui/SideEffectHandler.kt @@ -0,0 +1,35 @@ +package com.bff.wespot.ui + +import androidx.compose.runtime.Composable +import com.bff.wespot.designsystem.component.indicator.WSToastType +import com.bff.wespot.designsystem.component.modal.WSDialog +import com.bff.wespot.designsystem.component.modal.WSDialogType +import com.bff.wespot.model.SideEffect +import com.bff.wespot.model.SideEffectState + +@Composable +fun SideEffectHandler( + state: SideEffectState, + onDismiss: () -> Unit, + onNavigate: () -> Unit, +) { + if (state.show) { + when (state.sideEffect) { + is SideEffect.ShowToast -> TopToast( + message = state.sideEffect.message, + toastType = WSToastType.Error, + showToast = true, + closeToast = onDismiss, + ) + + is SideEffect.ShowDialog -> WSDialog( + dialogType = WSDialogType.OneButton, + title = state.sideEffect.message, + okButtonClick = onDismiss, + onDismissRequest = { }, + ) + + SideEffect.Redirect -> onNavigate() + } + } +}