@@ -73,11 +73,15 @@ internal fun AlarmMissionBottomSheet(
7373 onSaveMission : (MissionType , Int ) -> Unit ,
7474 onPreviewMission : (MissionType , Int ) -> Unit ,
7575) {
76+ val initialMissionType = missionState.missionType
77+ val initialMissionCount = missionState.missionCount
78+
7679 var stepStack by rememberSaveable(saver = StepStackSaver ) {
7780 mutableStateOf(listOf (AlarmMissionSelectBottomSheetType .MISSION_SETTING ))
7881 }
79- var selectedMissionType by rememberSaveable { mutableStateOf(missionState.missionType) }
80- var selectedMissionCount by rememberSaveable { mutableIntStateOf(missionState.missionCount) }
82+
83+ var currentSelectedMissionType by rememberSaveable { mutableStateOf(initialMissionType) }
84+ var currentSelectedMissionCount by rememberSaveable { mutableIntStateOf(initialMissionCount) }
8185
8286 fun push (step : AlarmMissionSelectBottomSheetType ) {
8387 stepStack = stepStack + step
@@ -93,22 +97,22 @@ internal fun AlarmMissionBottomSheet(
9397
9498 when (currentStep) {
9599 AlarmMissionSelectBottomSheetType .MISSION_SETTING -> {
96- if (selectedMissionType == MissionType .NONE ) {
100+ if (currentSelectedMissionType == MissionType .NONE ) {
97101 MissionAddContent {
98102 push(AlarmMissionSelectBottomSheetType .MISSION_SELECT )
99103 }
100104 } else {
101105 MissionSettingContent (
102- missionType = selectedMissionType ,
103- missionCount = selectedMissionCount ,
106+ missionType = currentSelectedMissionType ,
107+ missionCount = currentSelectedMissionCount ,
104108 onDetail = { push(AlarmMissionSelectBottomSheetType .MISSION_DETAIL ) },
105109 onDelete = {
106- selectedMissionType = MissionType .NONE
107- onSaveMission(selectedMissionType, selectedMissionCount )
110+ currentSelectedMissionType = MissionType .NONE
111+ onSaveMission(currentSelectedMissionType, currentSelectedMissionCount )
108112 },
109113 onChange = { push(AlarmMissionSelectBottomSheetType .MISSION_SELECT ) },
110114 onDone = {
111- onSaveMission(selectedMissionType, selectedMissionCount )
115+ onSaveMission(currentSelectedMissionType, currentSelectedMissionCount )
112116 onDismiss()
113117 },
114118 )
@@ -118,31 +122,28 @@ internal fun AlarmMissionBottomSheet(
118122 AlarmMissionSelectBottomSheetType .MISSION_SELECT -> {
119123 MissionSelectContent (
120124 onBack = { pop() },
121- onClose = {
122- onDismiss()
123- },
124- onSelect = { mission ->
125- selectedMissionType = mission
125+ onClose = { onDismiss() },
126+ initialMission = currentSelectedMissionType,
127+ onSelect = { selected ->
128+ currentSelectedMissionType = selected
126129 push(AlarmMissionSelectBottomSheetType .MISSION_DETAIL )
127130 },
128131 )
129132 }
130133
131134 AlarmMissionSelectBottomSheetType .MISSION_DETAIL -> {
132135 MissionDetailContent (
133- missionType = selectedMissionType ,
134- selectedMissionCount = selectedMissionCount ,
135- onCountChange = { selectedMissionCount = it },
136+ missionType = currentSelectedMissionType ,
137+ selectedMissionCount = currentSelectedMissionCount ,
138+ onCountChange = { currentSelectedMissionCount = it },
136139 onBack = { pop() },
137- onClose = {
138- onDismiss()
139- },
140+ onClose = { onDismiss() },
140141 onSave = {
141- onSaveMission(selectedMissionType, selectedMissionCount )
142+ onSaveMission(currentSelectedMissionType, currentSelectedMissionCount )
142143 onDismiss()
143144 },
144145 onPreview = {
145- onPreviewMission(selectedMissionType, selectedMissionCount )
146+ onPreviewMission(currentSelectedMissionType, currentSelectedMissionCount )
146147 },
147148 )
148149 }
@@ -390,6 +391,7 @@ private fun MissionCountChip(
390391private fun MissionSelectContent (
391392 onBack : () -> Unit ,
392393 onClose : () -> Unit ,
394+ initialMission : MissionType ,
393395 onSelect : (MissionType ) -> Unit ,
394396) {
395397 Column (
@@ -401,7 +403,7 @@ private fun MissionSelectContent(
401403 Spacer (modifier = Modifier .height(14 .dp))
402404
403405 MissionSelectTopAppBar (
404- title = stringResource(id = feature.home.R .string.mission_bottom_sheet_title ),
406+ title = stringResource(id = feature.home.R .string.mission_select_content_title ),
405407 onBack = onBack,
406408 onClose = onClose,
407409 )
@@ -411,12 +413,14 @@ private fun MissionSelectContent(
411413 ) {
412414 MissionTypeItem (
413415 missionType = MissionType .SHAKE ,
416+ selected = initialMission == MissionType .SHAKE ,
414417 onClick = {
415418 onSelect(MissionType .SHAKE )
416419 },
417420 )
418421 MissionTypeItem (
419422 missionType = MissionType .TAP ,
423+ selected = initialMission == MissionType .TAP ,
420424 onClick = {
421425 onSelect(MissionType .TAP )
422426 },
@@ -428,6 +432,7 @@ private fun MissionSelectContent(
428432@Composable
429433private fun MissionTypeItem (
430434 missionType : MissionType ,
435+ selected : Boolean ,
431436 onClick : () -> Unit ,
432437) {
433438 val (iconRes, titleRes) = missionType.displayData()
@@ -436,6 +441,7 @@ private fun MissionTypeItem(
436441 Row (
437442 modifier = Modifier
438443 .fillMaxWidth()
444+ .clip(RoundedCornerShape (12 .dp))
439445 .clickable(
440446 onClick = onClick,
441447 )
@@ -458,6 +464,28 @@ private fun MissionTypeItem(
458464 style = OrbitTheme .typography.headline2SemiBold,
459465 color = OrbitTheme .colors.white,
460466 )
467+
468+ if (selected) {
469+ Spacer (modifier = Modifier .weight(1f ))
470+
471+ Row (
472+ horizontalArrangement = Arrangement .spacedBy(2 .dp),
473+ verticalAlignment = Alignment .CenterVertically ,
474+ ) {
475+ Icon (
476+ modifier = Modifier .size(16 .dp),
477+ painter = painterResource(id = R .drawable.ic_check),
478+ tint = OrbitTheme .colors.white.copy(alpha = 0.5f ),
479+ contentDescription = null ,
480+ )
481+
482+ Text (
483+ text = stringResource(id = feature.home.R .string.mission_select_content_selected),
484+ style = OrbitTheme .typography.body2Medium,
485+ color = OrbitTheme .colors.white.copy(alpha = 0.4f ),
486+ )
487+ }
488+ }
461489 }
462490}
463491
0 commit comments