Skip to content

Commit ee1fd47

Browse files
authored
Merge pull request #105 from YAPP-Github/ui/#103-withdrawal
2 parents d197df0 + 89c095f commit ee1fd47

File tree

18 files changed

+569
-34
lines changed

18 files changed

+569
-34
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
tools:targetApi="31">
1818
<activity
1919
android:name=".MainActivity"
20+
android:windowSoftInputMode="adjustResize"
2021
android:exported="true"
2122
android:theme="@style/Theme.Bitnagil">
2223
<intent-filter>

app/src/main/java/com/threegap/bitnagil/MainNavHost.kt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import com.threegap.bitnagil.presentation.setting.SettingScreenContainer
1616
import com.threegap.bitnagil.presentation.splash.SplashScreenContainer
1717
import com.threegap.bitnagil.presentation.terms.TermsAgreementScreenContainer
1818
import com.threegap.bitnagil.presentation.webview.BitnagilWebViewScreen
19+
import com.threegap.bitnagil.presentation.withdrawal.WithdrawalScreenContainer
1920
import com.threegap.bitnagil.presentation.writeroutine.WriteRoutineScreenContainer
2021
import com.threegap.bitnagil.presentation.writeroutine.WriteRoutineViewModel
2122
import com.threegap.bitnagil.presentation.writeroutine.model.navarg.WriteRoutineScreenArg
@@ -166,6 +167,9 @@ fun MainNavHost(
166167
}
167168
}
168169
},
170+
navigateToWithdrawal = {
171+
navigator.navController.navigate(Route.Withdrawal)
172+
},
169173
)
170174
}
171175

@@ -223,5 +227,22 @@ fun MainNavHost(
223227
},
224228
)
225229
}
230+
231+
composable<Route.Withdrawal> {
232+
WithdrawalScreenContainer(
233+
navigateToBack = {
234+
if (navigator.navController.previousBackStackEntry != null) {
235+
navigator.navController.popBackStack()
236+
}
237+
},
238+
navigateToLogin = {
239+
navigator.navController.navigate(Route.Login) {
240+
popUpTo(0) {
241+
inclusive = true
242+
}
243+
}
244+
},
245+
)
246+
}
226247
}
227248
}

app/src/main/java/com/threegap/bitnagil/MainScreen.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package com.threegap.bitnagil
22

33
import androidx.compose.foundation.layout.WindowInsets
4-
import androidx.compose.foundation.layout.WindowInsetsSides
4+
import androidx.compose.foundation.layout.exclude
55
import androidx.compose.foundation.layout.fillMaxSize
6-
import androidx.compose.foundation.layout.only
6+
import androidx.compose.foundation.layout.ime
7+
import androidx.compose.foundation.layout.navigationBars
78
import androidx.compose.foundation.layout.padding
8-
import androidx.compose.foundation.layout.systemBars
99
import androidx.compose.material3.Scaffold
1010
import androidx.compose.runtime.Composable
1111
import androidx.compose.ui.Modifier
@@ -18,7 +18,7 @@ fun MainScreen(
1818
) {
1919
Scaffold(
2020
modifier = modifier.fillMaxSize(),
21-
contentWindowInsets = WindowInsets.systemBars.only(WindowInsetsSides.Bottom),
21+
contentWindowInsets = WindowInsets.navigationBars.exclude(WindowInsets.ime),
2222
containerColor = BitnagilTheme.colors.white,
2323
) { innerPadding ->
2424
MainNavHost(

app/src/main/java/com/threegap/bitnagil/Route.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,7 @@ sealed interface Route {
3838

3939
@Serializable
4040
data object Emotion : Route
41+
42+
@Serializable
43+
data object Withdrawal : Route
4144
}

core/designsystem/src/main/java/com/threegap/bitnagil/designsystem/component/atom/BitnagilSelectButton.kt

Lines changed: 72 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,57 @@
11
package com.threegap.bitnagil.designsystem.component.atom
22

3+
import androidx.compose.animation.core.animateFloatAsState
4+
import androidx.compose.animation.core.tween
35
import androidx.compose.foundation.background
46
import androidx.compose.foundation.clickable
57
import androidx.compose.foundation.interaction.MutableInteractionSource
68
import androidx.compose.foundation.interaction.collectIsPressedAsState
7-
import androidx.compose.foundation.layout.Arrangement
89
import androidx.compose.foundation.layout.Column
10+
import androidx.compose.foundation.layout.Row
911
import androidx.compose.foundation.layout.Spacer
1012
import androidx.compose.foundation.layout.fillMaxWidth
1113
import androidx.compose.foundation.layout.height
1214
import androidx.compose.foundation.layout.padding
15+
import androidx.compose.foundation.layout.size
1316
import androidx.compose.foundation.shape.RoundedCornerShape
1417
import androidx.compose.material3.Text
1518
import androidx.compose.runtime.Composable
1619
import androidx.compose.runtime.Immutable
1720
import androidx.compose.runtime.getValue
1821
import androidx.compose.runtime.remember
22+
import androidx.compose.ui.Alignment
1923
import androidx.compose.ui.Modifier
24+
import androidx.compose.ui.draw.alpha
2025
import androidx.compose.ui.draw.clip
2126
import androidx.compose.ui.graphics.Color
2227
import androidx.compose.ui.graphics.Shape
2328
import androidx.compose.ui.semantics.Role
2429
import androidx.compose.ui.semantics.role
2530
import androidx.compose.ui.semantics.semantics
31+
import androidx.compose.ui.text.TextStyle
2632
import androidx.compose.ui.tooling.preview.Preview
2733
import androidx.compose.ui.unit.dp
2834
import com.threegap.bitnagil.designsystem.BitnagilTheme
35+
import com.threegap.bitnagil.designsystem.R
2936

3037
@Composable
3138
fun BitnagilSelectButton(
3239
title: String,
3340
onClick: (() -> Unit)?,
3441
modifier: Modifier = Modifier,
42+
titleTextStyle: TextStyle = BitnagilTheme.typography.subtitle1SemiBold,
3543
description: String? = null,
3644
selected: Boolean = false,
3745
colors: BitnagilSelectButtonColor = BitnagilSelectButtonColor.default(),
3846
shape: Shape = RoundedCornerShape(12.dp),
3947
) {
40-
val interactionSource = remember { MutableInteractionSource() }
48+
val interactionSource = remember(onClick) { MutableInteractionSource() }
4149
val isPressed by interactionSource.collectIsPressedAsState()
50+
val iconAlpha by animateFloatAsState(
51+
targetValue = if (selected) 1f else 0f,
52+
animationSpec = tween(200),
53+
label = "iconAlpha",
54+
)
4255

4356
val backgroundColor = when {
4457
isPressed -> colors.pressedBackgroundColor
@@ -52,7 +65,7 @@ fun BitnagilSelectButton(
5265
else -> colors.defaultContentColor
5366
}
5467

55-
Column(
68+
Row(
5669
modifier = modifier
5770
.fillMaxWidth()
5871
.clip(shape)
@@ -68,30 +81,38 @@ fun BitnagilSelectButton(
6881
it
6982
}
7083
}
71-
.padding(horizontal = 20.dp, vertical = 16.dp)
84+
.padding(horizontal = 20.dp, vertical = 14.dp)
7285
.semantics {
7386
role = Role.Button
7487
},
75-
verticalArrangement = Arrangement.Center,
88+
verticalAlignment = Alignment.CenterVertically,
7689
) {
77-
Text(
78-
text = title,
79-
color = contentColor,
80-
style = if (description == null) {
81-
BitnagilTheme.typography.body1Regular
82-
} else {
83-
BitnagilTheme.typography.subtitle1SemiBold
84-
},
85-
)
86-
87-
description?.let {
88-
Spacer(modifier = Modifier.height(4.dp))
90+
Column(
91+
modifier = Modifier.weight(1f),
92+
) {
8993
Text(
90-
text = description,
94+
text = title,
9195
color = contentColor,
92-
style = BitnagilTheme.typography.body2Regular,
96+
style = titleTextStyle,
9397
)
98+
99+
description?.let {
100+
Spacer(modifier = Modifier.height(2.dp))
101+
Text(
102+
text = description,
103+
color = contentColor,
104+
style = BitnagilTheme.typography.body2Medium,
105+
)
106+
}
94107
}
108+
109+
BitnagilIcon(
110+
id = R.drawable.ic_check_circle_orange,
111+
tint = null,
112+
modifier = Modifier
113+
.size(28.dp)
114+
.alpha(iconAlpha),
115+
)
95116
}
96117
}
97118

@@ -107,12 +128,22 @@ data class BitnagilSelectButtonColor(
107128
companion object {
108129
@Composable
109130
fun default(): BitnagilSelectButtonColor = BitnagilSelectButtonColor(
110-
defaultBackgroundColor = BitnagilTheme.colors.white,
111-
selectedBackgroundColor = BitnagilTheme.colors.lightBlue200,
112-
pressedBackgroundColor = BitnagilTheme.colors.lightBlue200,
131+
defaultBackgroundColor = BitnagilTheme.colors.coolGray99,
132+
selectedBackgroundColor = BitnagilTheme.colors.orange50,
133+
pressedBackgroundColor = BitnagilTheme.colors.orange50,
113134
defaultContentColor = BitnagilTheme.colors.coolGray50,
114-
selectedContentColor = BitnagilTheme.colors.navy500,
115-
pressedContentColor = BitnagilTheme.colors.navy500,
135+
selectedContentColor = BitnagilTheme.colors.orange500,
136+
pressedContentColor = BitnagilTheme.colors.orange500,
137+
)
138+
139+
@Composable
140+
fun withdrawal(): BitnagilSelectButtonColor = BitnagilSelectButtonColor(
141+
defaultBackgroundColor = BitnagilTheme.colors.coolGray99,
142+
selectedBackgroundColor = BitnagilTheme.colors.orange50,
143+
pressedBackgroundColor = BitnagilTheme.colors.orange50,
144+
defaultContentColor = BitnagilTheme.colors.coolGray80,
145+
selectedContentColor = BitnagilTheme.colors.orange500,
146+
pressedContentColor = BitnagilTheme.colors.orange500,
116147
)
117148
}
118149
}
@@ -128,9 +159,26 @@ private fun Preview() {
128159

129160
Spacer(modifier = Modifier.height(12.dp))
130161

162+
BitnagilSelectButton(
163+
title = "루틴명",
164+
selected = true,
165+
onClick = {},
166+
)
167+
168+
Spacer(modifier = Modifier.height(12.dp))
169+
170+
BitnagilSelectButton(
171+
title = "루틴명",
172+
description = "세부 루틴 한 줄 설명",
173+
onClick = {},
174+
)
175+
176+
Spacer(modifier = Modifier.height(12.dp))
177+
131178
BitnagilSelectButton(
132179
title = "루틴명",
133180
description = "세부 루틴 한 줄 설명",
181+
selected = true,
134182
onClick = {},
135183
)
136184
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="24"
5+
android:viewportHeight="24">
6+
<path
7+
android:fillColor="#FE7120"
8+
android:pathData="M12.174,21.19C11.914,21.19 11.634,21.46 11.374,21.44C11.114,21.42 10.844,21.31 10.594,21.26C10.344,21.21 10.104,21.02 9.854,20.95C9.604,20.88 9.384,20.72 9.134,20.63C8.884,20.54 8.654,20.44 8.414,20.33C8.174,20.22 7.954,20.11 7.724,19.98C7.494,19.85 7.374,19.58 7.164,19.43C6.954,19.28 6.464,19.48 6.264,19.31C6.064,19.14 6.064,18.74 5.884,18.56C5.704,18.38 5.414,18.28 5.244,18.08C5.074,17.88 5.034,17.59 4.884,17.37C4.734,17.15 4.404,17.06 4.274,16.83C4.144,16.6 3.934,16.4 3.824,16.16C3.714,15.92 3.614,15.66 3.524,15.41C3.434,15.16 3.284,14.92 3.214,14.66C3.144,14.4 3.314,14.09 3.274,13.83C3.234,13.57 3.344,13.3 3.324,13.03C3.304,12.76 3.184,12.52 3.184,12.25C3.184,11.98 3.184,11.72 3.204,11.46C3.224,11.2 3.204,10.93 3.244,10.67C3.284,10.41 3.154,10.1 3.224,9.85C3.294,9.6 3.514,9.37 3.604,9.13C3.694,8.89 3.744,8.61 3.854,8.37C3.964,8.13 4.254,7.98 4.384,7.75C4.514,7.52 4.714,7.34 4.864,7.13C5.014,6.92 4.904,6.49 5.074,6.29C5.244,6.09 5.724,6.17 5.904,5.98C6.084,5.79 6.194,5.53 6.394,5.36C6.594,5.19 6.884,5.15 7.104,5C7.324,4.85 7.544,4.74 7.764,4.61C7.984,4.48 8.204,4.37 8.444,4.26C8.684,4.15 8.844,3.88 9.094,3.79C9.344,3.7 9.624,3.78 9.884,3.71C10.144,3.64 10.374,3.6 10.634,3.55C10.894,3.5 11.114,3.28 11.384,3.26C11.654,3.24 11.904,2.97 12.174,2.97C12.444,2.97 12.674,3.5 12.934,3.53C13.194,3.56 13.474,3.34 13.734,3.39C13.994,3.44 14.184,3.74 14.434,3.81C14.684,3.88 14.924,3.91 15.174,4C15.424,4.09 15.734,3.99 15.974,4.1C16.214,4.21 16.574,4.1 16.794,4.24C17.014,4.38 17.274,4.51 17.484,4.66C17.694,4.81 17.734,5.22 17.934,5.38C18.134,5.54 18.514,5.54 18.694,5.72C18.874,5.9 19.074,6.11 19.244,6.31C19.414,6.51 19.374,6.88 19.524,7.1C19.674,7.32 19.814,7.53 19.944,7.76C20.074,7.99 20.084,8.27 20.204,8.5C20.324,8.73 20.614,8.89 20.704,9.14C20.794,9.39 20.674,9.69 20.744,9.95C20.814,10.21 20.824,10.45 20.864,10.71C20.904,10.97 21.324,11.18 21.344,11.44C21.364,11.7 21.314,11.98 21.314,12.24C21.314,12.5 21.304,12.78 21.284,13.04C21.264,13.3 20.904,13.52 20.854,13.77C20.804,14.02 21.164,14.38 21.104,14.63C21.044,14.88 20.684,15.06 20.594,15.3C20.504,15.54 20.314,15.74 20.204,15.98C20.094,16.22 19.914,16.4 19.784,16.63C19.654,16.86 19.494,17.04 19.344,17.26C19.194,17.48 19.244,17.83 19.084,18.03C18.924,18.23 18.664,18.35 18.474,18.53C18.284,18.71 18.154,18.94 17.954,19.11C17.754,19.28 17.704,19.66 17.494,19.81C17.284,19.96 16.894,19.87 16.674,20C16.454,20.13 16.224,20.26 15.984,20.37C15.744,20.48 15.464,20.47 15.224,20.56C14.984,20.65 14.774,20.85 14.524,20.92C14.274,20.99 13.994,20.9 13.734,20.95C13.474,21 13.224,20.99 12.964,21.02C12.704,21.05 12.464,21.15 12.194,21.15L12.174,21.19Z" />
9+
<path
10+
android:fillColor="#00000000"
11+
android:pathData="M12.174,21.19C11.914,21.19 11.634,21.46 11.374,21.44C11.114,21.42 10.844,21.31 10.594,21.26C10.344,21.21 10.104,21.02 9.854,20.95C9.604,20.88 9.384,20.72 9.134,20.63C8.884,20.54 8.654,20.44 8.414,20.33C8.174,20.22 7.954,20.11 7.724,19.98C7.494,19.85 7.374,19.58 7.164,19.43C6.954,19.28 6.464,19.48 6.264,19.31C6.064,19.14 6.064,18.74 5.884,18.56C5.704,18.38 5.414,18.28 5.244,18.08C5.074,17.88 5.034,17.59 4.884,17.37C4.734,17.15 4.404,17.06 4.274,16.83C4.144,16.6 3.934,16.4 3.824,16.16C3.714,15.92 3.614,15.66 3.524,15.41C3.434,15.16 3.284,14.92 3.214,14.66C3.144,14.4 3.314,14.09 3.274,13.83C3.234,13.57 3.344,13.3 3.324,13.03C3.304,12.76 3.184,12.52 3.184,12.25C3.184,11.98 3.184,11.72 3.204,11.46C3.224,11.2 3.204,10.93 3.244,10.67C3.284,10.41 3.154,10.1 3.224,9.85C3.294,9.6 3.514,9.37 3.604,9.13C3.694,8.89 3.744,8.61 3.854,8.37C3.964,8.13 4.254,7.98 4.384,7.75C4.514,7.52 4.714,7.34 4.864,7.13C5.014,6.92 4.904,6.49 5.074,6.29C5.244,6.09 5.724,6.17 5.904,5.98C6.084,5.79 6.194,5.53 6.394,5.36C6.594,5.19 6.884,5.15 7.104,5C7.324,4.85 7.544,4.74 7.764,4.61C7.984,4.48 8.204,4.37 8.444,4.26C8.684,4.15 8.844,3.88 9.094,3.79C9.344,3.7 9.624,3.78 9.884,3.71C10.144,3.64 10.374,3.6 10.634,3.55C10.894,3.5 11.114,3.28 11.384,3.26C11.654,3.24 11.904,2.97 12.174,2.97C12.444,2.97 12.674,3.5 12.934,3.53C13.194,3.56 13.474,3.34 13.734,3.39C13.994,3.44 14.184,3.74 14.434,3.81C14.684,3.88 14.924,3.91 15.174,4C15.424,4.09 15.734,3.99 15.974,4.1C16.214,4.21 16.574,4.1 16.794,4.24C17.014,4.38 17.274,4.51 17.484,4.66C17.694,4.81 17.734,5.22 17.934,5.38C18.134,5.54 18.514,5.54 18.694,5.72C18.874,5.9 19.074,6.11 19.244,6.31C19.414,6.51 19.374,6.88 19.524,7.1C19.674,7.32 19.814,7.53 19.944,7.76C20.074,7.99 20.084,8.27 20.204,8.5C20.324,8.73 20.614,8.89 20.704,9.14C20.794,9.39 20.674,9.69 20.744,9.95C20.814,10.21 20.824,10.45 20.864,10.71C20.904,10.97 21.324,11.18 21.344,11.44C21.364,11.7 21.314,11.98 21.314,12.24C21.314,12.5 21.304,12.78 21.284,13.04C21.264,13.3 20.904,13.52 20.854,13.77C20.804,14.02 21.164,14.38 21.104,14.63C21.044,14.88 20.684,15.06 20.594,15.3C20.504,15.54 20.314,15.74 20.204,15.98C20.094,16.22 19.914,16.4 19.784,16.63C19.654,16.86 19.494,17.04 19.344,17.26C19.194,17.48 19.244,17.83 19.084,18.03C18.924,18.23 18.664,18.35 18.474,18.53C18.284,18.71 18.154,18.94 17.954,19.11C17.754,19.28 17.704,19.66 17.494,19.81C17.284,19.96 16.894,19.87 16.674,20C16.454,20.13 16.224,20.26 15.984,20.37C15.744,20.48 15.464,20.47 15.224,20.56C14.984,20.65 14.774,20.85 14.524,20.92C14.274,20.99 13.994,20.9 13.734,20.95C13.474,21 13.224,20.99 12.964,21.02C12.704,21.05 12.464,21.15 12.194,21.15L12.174,21.19Z"
12+
android:strokeWidth="2"
13+
android:strokeColor="#FE7120"
14+
android:strokeLineCap="round"
15+
android:strokeLineJoin="round" />
16+
<path
17+
android:fillColor="#00000000"
18+
android:pathData="M15.284,10.39C15.004,10.67 15.054,10.72 14.764,11.01C14.474,11.3 14.364,11.18 14.084,11.47C13.804,11.76 13.694,11.65 13.404,11.93C13.114,12.21 13.034,12.13 12.744,12.41C12.454,12.69 12.564,12.8 12.274,13.09C11.984,13.38 11.994,13.38 11.704,13.67C11.414,13.96 11.554,13.98 11.144,14.01C10.794,14.03 10.824,14.12 10.574,13.87C10.324,13.62 10.394,13.55 10.144,13.3C9.894,13.05 9.784,13.16 9.534,12.91C9.284,12.66 9.334,12.61 9.084,12.35"
19+
android:strokeWidth="2"
20+
android:strokeColor="#ffffff"
21+
android:strokeLineCap="round"
22+
android:strokeLineJoin="round" />
23+
</vector>

presentation/src/main/java/com/threegap/bitnagil/presentation/setting/SettingScreen.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import com.threegap.bitnagil.designsystem.modifier.clickableWithoutRipple
3030
import com.threegap.bitnagil.presentation.common.flow.collectAsEffect
3131
import com.threegap.bitnagil.presentation.setting.component.atom.settingtitle.SettingTitle
3232
import com.threegap.bitnagil.presentation.setting.component.block.LogoutConfirmDialog
33+
import com.threegap.bitnagil.presentation.setting.model.mvi.SettingIntent
3334
import com.threegap.bitnagil.presentation.setting.model.mvi.SettingSideEffect
3435
import com.threegap.bitnagil.presentation.setting.model.mvi.SettingState
3536

@@ -40,12 +41,14 @@ fun SettingScreenContainer(
4041
navigateToTermsOfService: () -> Unit,
4142
navigateToPrivacyPolicy: () -> Unit,
4243
navigateToLogin: () -> Unit,
44+
navigateToWithdrawal: () -> Unit,
4345
) {
4446
val state by viewModel.stateFlow.collectAsState()
4547

4648
viewModel.sideEffectFlow.collectAsEffect { sideEffect ->
4749
when (sideEffect) {
4850
SettingSideEffect.NavigateToLogin -> navigateToLogin()
51+
SettingSideEffect.NavigateToWithdrawal -> navigateToWithdrawal()
4952
}
5053
}
5154

@@ -65,7 +68,7 @@ fun SettingScreenContainer(
6568
onClickTermsOfService = navigateToTermsOfService,
6669
onClickPrivacyPolicy = navigateToPrivacyPolicy,
6770
onClickLogout = viewModel::showLogoutDialog,
68-
onClickWithdrawal = {},
71+
onClickWithdrawal = { viewModel.sendIntent(SettingIntent.OnWithdrawalClick) },
6972
)
7073
}
7174

presentation/src/main/java/com/threegap/bitnagil/presentation/setting/SettingViewModel.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,11 @@ class SettingViewModel @Inject constructor(
6565
SettingIntent.LogoutFailure -> {
6666
return state.copy(loading = false)
6767
}
68+
69+
SettingIntent.OnWithdrawalClick -> {
70+
sendSideEffect(SettingSideEffect.NavigateToWithdrawal)
71+
return null
72+
}
6873
}
6974
}
7075

presentation/src/main/java/com/threegap/bitnagil/presentation/setting/model/mvi/SettingIntent.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@ sealed class SettingIntent : MviIntent {
1717
data object LogoutLoading : SettingIntent()
1818
data object LogoutSuccess : SettingIntent()
1919
data object LogoutFailure : SettingIntent()
20+
data object OnWithdrawalClick : SettingIntent()
2021
}

presentation/src/main/java/com/threegap/bitnagil/presentation/setting/model/mvi/SettingSideEffect.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ import com.threegap.bitnagil.presentation.common.mviviewmodel.MviSideEffect
44

55
sealed class SettingSideEffect : MviSideEffect {
66
data object NavigateToLogin : SettingSideEffect()
7+
data object NavigateToWithdrawal : SettingSideEffect()
78
}

0 commit comments

Comments
 (0)