@@ -56,7 +56,7 @@ data class Reminder(
5656 */
5757@Composable
5858fun WorkoutReminderScreen (
59- /* TODO: Replace functions with viewmodel calls */
59+ /* TODO: Add view model calls */
6060 reminders : List <Reminder > = emptyList(),
6161 onRemindersChange : (List <Reminder >) -> Unit ,
6262 goalValue : Float ,
@@ -66,10 +66,48 @@ fun WorkoutReminderScreen(
6666 onNext : () -> Unit = {},
6767 onSkip : () -> Unit = {}
6868) {
69+ // These states are local to this screen
6970 var selectedReminder by remember { mutableStateOf<Reminder ?>(null ) }
7071 var addNewReminderState by remember { mutableStateOf(false ) }
7172 var deleteDialogOpen by remember { mutableStateOf(false ) }
7273
74+ WorkoutReminderContent (
75+ reminders = reminders,
76+ selectedReminder = selectedReminder,
77+ addNewReminderState = addNewReminderState,
78+ deleteDialogOpen = deleteDialogOpen,
79+ goalValue = goalValue,
80+ isOnboarding = isOnboarding,
81+ // Pass callbacks to update the state defined above
82+ onSelectedReminderChange = { selectedReminder = it },
83+ onAddNewReminderStateChange = { addNewReminderState = it },
84+ onDeleteDialogOpenChange = { deleteDialogOpen = it },
85+ onRemindersChange = onRemindersChange,
86+ onGoalValueChange = onGoalValueChange,
87+ onBackClick = onBackClick,
88+ onNext = onNext,
89+ onSkip = onSkip
90+ )
91+ }
92+
93+
94+ @Composable
95+ private fun WorkoutReminderContent (
96+ reminders : List <Reminder >,
97+ selectedReminder : Reminder ? ,
98+ addNewReminderState : Boolean ,
99+ deleteDialogOpen : Boolean ,
100+ goalValue : Float ,
101+ isOnboarding : Boolean ,
102+ onSelectedReminderChange : (Reminder ? ) -> Unit ,
103+ onAddNewReminderStateChange : (Boolean ) -> Unit ,
104+ onDeleteDialogOpenChange : (Boolean ) -> Unit ,
105+ onRemindersChange : (List <Reminder >) -> Unit ,
106+ onGoalValueChange : (Float ) -> Unit ,
107+ onBackClick : () -> Unit ,
108+ onNext : () -> Unit ,
109+ onSkip : () -> Unit
110+ ) {
73111 Scaffold (
74112 topBar = {
75113 UpliftTopBarWithBack (
@@ -83,42 +121,44 @@ fun WorkoutReminderScreen(
83121 Column (
84122 modifier = Modifier
85123 .background(color = Color .White )
86- .padding(
87- top = padding.calculateTopPadding(),
88- )
124+ .padding(top = padding.calculateTopPadding())
89125 .fillMaxSize()
90126 .verticalScroll(rememberScrollState()),
91127 verticalArrangement = Arrangement .SpaceBetween
92128 ) {
93- /* Groups the goal slider and workout reminders together */
94129 Column {
95130 GoalSlider (value = goalValue, onValueChange = onGoalValueChange)
96131
97132 WorkoutReminders (
98133 selectedReminder = selectedReminder,
99- onSelectedReminderChange = { selectedReminder = it } ,
134+ onSelectedReminderChange = onSelectedReminderChange ,
100135 reminders = reminders,
101136 onRemindersChange = onRemindersChange,
102137 addNewReminderState = addNewReminderState,
103- onAddNewReminderStateChange = { addNewReminderState = it } ,
104- openDelete = { deleteDialogOpen = true }
138+ onAddNewReminderStateChange = onAddNewReminderStateChange ,
139+ openDelete = { onDeleteDialogOpenChange( true ) }
105140 )
106141 }
107- if (isOnboarding) OnboardingButtons (onNext, onSkip)
108142
143+ if (isOnboarding) {
144+ OnboardingButtons (onNext, onSkip)
145+ }
146+ }
147+
148+ if (deleteDialogOpen) {
149+ DeleteDialog (
150+ deleteDialogOpen = deleteDialogOpen,
151+ onConfirm = {
152+ selectedReminder?.let { reminder ->
153+ onRemindersChange(reminders.filter { it != reminder })
154+ }
155+ onDeleteDialogOpenChange(false )
156+ onSelectedReminderChange(null )
157+ onAddNewReminderStateChange(false )
158+ },
159+ onDismiss = { onDeleteDialogOpenChange(false ) }
160+ )
109161 }
110- DeleteDialog (
111- deleteDialogOpen = deleteDialogOpen,
112- onConfirm = {
113- selectedReminder?.let { reminder ->
114- onRemindersChange(reminders.filter { it != reminder })
115- }
116- deleteDialogOpen = false
117- selectedReminder = null
118- addNewReminderState = false
119- },
120- onDismiss = { deleteDialogOpen = false }
121- )
122162 }
123163}
124164
0 commit comments