@@ -2,18 +2,15 @@ package com.ninecraft.booket.feature.settings
22
33import android.content.pm.PackageManager
44import androidx.compose.foundation.background
5- import androidx.compose.foundation.layout.Arrangement
65import androidx.compose.foundation.layout.Column
76import androidx.compose.foundation.layout.Row
87import androidx.compose.foundation.layout.Spacer
98import androidx.compose.foundation.layout.fillMaxSize
109import androidx.compose.foundation.layout.fillMaxWidth
1110import androidx.compose.foundation.layout.height
1211import androidx.compose.foundation.layout.padding
13- import androidx.compose.foundation.layout.width
1412import androidx.compose.material3.ExperimentalMaterial3Api
1513import androidx.compose.material3.Icon
16- import androidx.compose.material3.SheetState
1714import androidx.compose.material3.Text
1815import androidx.compose.material3.rememberModalBottomSheetState
1916import androidx.compose.runtime.Composable
@@ -26,19 +23,14 @@ import androidx.compose.ui.graphics.vector.ImageVector
2623import androidx.compose.ui.platform.LocalContext
2724import androidx.compose.ui.res.stringResource
2825import androidx.compose.ui.res.vectorResource
29- import androidx.compose.ui.text.style.TextAlign
30- import androidx.compose.ui.unit.dp
3126import com.ninecraft.booket.core.common.extensions.clickableSingle
3227import com.ninecraft.booket.core.designsystem.DevicePreview
3328import com.ninecraft.booket.core.designsystem.component.appbar.ReedBackTopAppBar
34- import com.ninecraft.booket.core.designsystem.component.bottomsheet.ReedBottomSheet
35- import com.ninecraft.booket.core.designsystem.component.button.ReedButton
36- import com.ninecraft.booket.core.designsystem.component.button.ReedButtonColorStyle
37- import com.ninecraft.booket.core.designsystem.component.button.largeButtonStyle
38- import com.ninecraft.booket.core.designsystem.component.checkbox.SquareCheckBox
3929import com.ninecraft.booket.core.designsystem.component.divider.ReedDivider
4030import com.ninecraft.booket.core.designsystem.theme.ReedTheme
4131import com.ninecraft.booket.core.designsystem.theme.White
32+ import com.ninecraft.booket.feature.settings.component.LogoutConfirmationBottomSheet
33+ import com.ninecraft.booket.feature.settings.component.WithdrawConfirmationBottomSheet
4234import com.ninecraft.booket.screens.SettingsScreen
4335import com.orhanobut.logger.Logger
4436import com.slack.circuit.codegen.annotations.CircuitInject
@@ -147,12 +139,15 @@ internal fun Settings(
147139 if (state.isLogoutBottomSheetVisible) {
148140 LogoutConfirmationBottomSheet (
149141 onDismissRequest = {
142+ state.eventSink(SettingsUiEvent .OnBottomSheetDismissed )
143+ },
144+ sheetState = logoutSheetState,
145+ onCancelButtonClick = {
150146 coroutineScope.launch {
151147 logoutSheetState.hide()
152148 state.eventSink(SettingsUiEvent .OnBottomSheetDismissed )
153149 }
154150 },
155- sheetState = logoutSheetState,
156151 onLogoutButtonClick = {
157152 state.eventSink(SettingsUiEvent .Logout )
158153 },
@@ -162,16 +157,19 @@ internal fun Settings(
162157 if (state.isWithdrawBottomSheetVisible) {
163158 WithdrawConfirmationBottomSheet (
164159 onDismissRequest = {
165- coroutineScope.launch {
166- withDrawSheetState.hide()
167- state.eventSink(SettingsUiEvent .OnBottomSheetDismissed )
168- }
160+ state.eventSink(SettingsUiEvent .OnBottomSheetDismissed )
169161 },
170162 sheetState = withDrawSheetState,
171163 isCheckBoxChecked = state.isWithdrawConfirmed,
172164 onCheckBoxCheckedChange = {
173165 state.eventSink(SettingsUiEvent .OnWithdrawConfirmationToggled )
174166 },
167+ onCancelButtonClick = {
168+ coroutineScope.launch {
169+ withDrawSheetState.hide()
170+ state.eventSink(SettingsUiEvent .OnBottomSheetDismissed )
171+ }
172+ },
175173 onWithdrawButtonClick = {
176174 state.eventSink(SettingsUiEvent .Withdraw )
177175 },
@@ -213,155 +211,6 @@ private fun SettingItem(
213211 }
214212}
215213
216- @OptIn(ExperimentalMaterial3Api ::class )
217- @Composable
218- private fun LogoutConfirmationBottomSheet (
219- onDismissRequest : () -> Unit ,
220- sheetState : SheetState ,
221- onLogoutButtonClick : () -> Unit ,
222- ) {
223- ReedBottomSheet (
224- onDismissRequest = {
225- onDismissRequest()
226- },
227- sheetState = sheetState,
228- ) {
229- Column (
230- modifier = Modifier
231- .padding(
232- start = ReedTheme .spacing.spacing5,
233- top = ReedTheme .spacing.spacing5,
234- end = ReedTheme .spacing.spacing5,
235- ),
236- ) {
237- Text (
238- text = stringResource(R .string.settings_logout_title),
239- modifier = Modifier
240- .fillMaxWidth()
241- .padding(vertical = ReedTheme .spacing.spacing3),
242- color = ReedTheme .colors.contentPrimary,
243- textAlign = TextAlign .Center ,
244- style = ReedTheme .typography.heading2SemiBold,
245- )
246- Row (
247- modifier = Modifier
248- .fillMaxWidth()
249- .padding(vertical = 16 .dp),
250- horizontalArrangement = Arrangement .SpaceBetween ,
251- ) {
252- ReedButton (
253- onClick = {
254- onDismissRequest()
255- },
256- sizeStyle = largeButtonStyle,
257- colorStyle = ReedButtonColorStyle .SECONDARY ,
258- modifier = Modifier .weight(1f ),
259- text = stringResource(R .string.settings_cancel),
260- )
261- Spacer (modifier = Modifier .width(ReedTheme .spacing.spacing2))
262- ReedButton (
263- onClick = {
264- onLogoutButtonClick()
265- },
266- sizeStyle = largeButtonStyle,
267- colorStyle = ReedButtonColorStyle .PRIMARY ,
268- modifier = Modifier .weight(1f ),
269- text = stringResource(R .string.settings_logout),
270- )
271- }
272- }
273- }
274- }
275-
276- @OptIn(ExperimentalMaterial3Api ::class )
277- @Composable
278- private fun WithdrawConfirmationBottomSheet (
279- onDismissRequest : () -> Unit ,
280- sheetState : SheetState ,
281- isCheckBoxChecked : Boolean ,
282- onCheckBoxCheckedChange : () -> Unit ,
283- onWithdrawButtonClick : () -> Unit ,
284- ) {
285- ReedBottomSheet (
286- onDismissRequest = {
287- onDismissRequest()
288- },
289- sheetState = sheetState,
290- ) {
291- Column (
292- modifier = Modifier
293- .padding(
294- start = ReedTheme .spacing.spacing5,
295- top = ReedTheme .spacing.spacing5,
296- end = ReedTheme .spacing.spacing5,
297- ),
298- horizontalAlignment = Alignment .CenterHorizontally ,
299- ) {
300- Text (
301- text = stringResource(R .string.settings_withdraw_title),
302- modifier = Modifier
303- .fillMaxWidth()
304- .padding(top = ReedTheme .spacing.spacing3),
305- color = ReedTheme .colors.contentPrimary,
306- textAlign = TextAlign .Center ,
307- style = ReedTheme .typography.heading2SemiBold,
308- )
309- Spacer (modifier = Modifier .height(ReedTheme .spacing.spacing1))
310- Text (
311- text = stringResource(R .string.settings_withdraw_detail),
312- modifier = Modifier .fillMaxWidth(),
313- color = ReedTheme .colors.contentSecondary,
314- textAlign = TextAlign .Center ,
315- style = ReedTheme .typography.body1Medium,
316- )
317- Spacer (modifier = Modifier .height(ReedTheme .spacing.spacing5))
318- Row {
319- SquareCheckBox (
320- checked = isCheckBoxChecked,
321- onCheckedChange = {
322- onCheckBoxCheckedChange()
323- },
324- )
325- Spacer (modifier = Modifier .width(ReedTheme .spacing.spacing2))
326- Text (
327- text = stringResource(R .string.settings_withdraw_agreement),
328- color = ReedTheme .colors.contentPrimary,
329- textAlign = TextAlign .Center ,
330- style = ReedTheme .typography.body1Medium,
331- )
332- }
333- Spacer (modifier = Modifier .height(ReedTheme .spacing.spacing3))
334- Row (
335- modifier = Modifier
336- .fillMaxWidth()
337- .padding(vertical = 16 .dp),
338- horizontalArrangement = Arrangement .SpaceBetween ,
339- ) {
340- ReedButton (
341- onClick = {
342- onDismissRequest()
343- },
344- sizeStyle = largeButtonStyle,
345- colorStyle = ReedButtonColorStyle .SECONDARY ,
346- modifier = Modifier .weight(1f ),
347- text = stringResource(R .string.settings_cancel),
348- )
349- Spacer (modifier = Modifier .width(ReedTheme .spacing.spacing2))
350- ReedButton (
351- onClick = {
352- onWithdrawButtonClick()
353- },
354- sizeStyle = largeButtonStyle,
355- colorStyle = ReedButtonColorStyle .PRIMARY ,
356- modifier = Modifier .weight(1f ),
357- enabled = isCheckBoxChecked,
358- text = stringResource(R .string.settings_withdraw_action),
359- )
360- }
361- }
362- }
363- }
364-
365214@DevicePreview
366215@Composable
367216private fun SettingsScreenPreview () {
0 commit comments