Skip to content

Commit 5f559f4

Browse files
rebasing changes
1 parent 4739034 commit 5f559f4

5 files changed

Lines changed: 87 additions & 35 deletions

File tree

.DS_Store

-6 KB
Binary file not shown.

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ android {
5858
"GOOGLE_AUTH_CLIENT_ID", secretsProperties["GOOGLE_AUTH_CLIENT_ID"]
5959
)
6060
signingConfig signingConfigs.debug
61-
buildConfigField("boolean", "ONBOARDING_FLAG", "false")
61+
buildConfigField("boolean", "ONBOARDING_FLAG", "true")
6262
buildConfigField("boolean", "CHECK_IN_FLAG", "false")
6363
}
6464
}

app/src/main/java/com/cornellappdev/uplift/ui/screens/onboarding/GoalsPromptScreen.kt

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import androidx.compose.ui.text.font.FontWeight
2929
import androidx.compose.ui.tooling.preview.Preview
3030
import androidx.compose.ui.unit.dp
3131
import androidx.compose.ui.unit.sp
32-
import androidx.credentials.Credential
3332
import androidx.hilt.navigation.compose.hiltViewModel
3433
import androidx.lifecycle.compose.collectAsStateWithLifecycle
3534
import com.cornellappdev.uplift.ui.components.goalsetting.GoalSlider
@@ -38,19 +37,30 @@ import com.cornellappdev.uplift.ui.viewmodels.onboarding.GoalsPromptViewModel
3837
import com.cornellappdev.uplift.util.GRAY01
3938
import com.cornellappdev.uplift.util.montserratFamily
4039

41-
/**
42-
* @param goalValue: value of the goal slider
43-
* @param onGoalValueChange: callback for when the goal slider value is changed
44-
* @return GoalPromptScreen composable
45-
*/
46-
@OptIn(ExperimentalMaterial3Api::class)
40+
// Use this as reference but delete later
4741
@Composable
4842
fun GoalPromptScreen(
4943
viewModel: GoalsPromptViewModel = hiltViewModel(),
5044
) {
5145

5246
val currentGoal by viewModel.goalValue.collectAsStateWithLifecycle()
5347

48+
GoalPromptContent(
49+
currentGoal,
50+
{ viewModel.onGoalValueChange(it) },
51+
{ viewModel.onSkip() },
52+
{ viewModel.onSignInWithGoogle() }
53+
)
54+
}
55+
56+
@OptIn(ExperimentalMaterial3Api::class)
57+
@Composable
58+
private fun GoalPromptContent(
59+
currentGoal: Float,
60+
onValueChange: (Float) -> Unit = {},
61+
onSkip: () -> Unit = {},
62+
onLogin: () -> Unit = {}
63+
) {
5464
Scaffold(
5565
topBar = {
5666
TopAppBar(
@@ -92,7 +102,7 @@ fun GoalPromptScreen(
92102
.verticalScroll(rememberScrollState()),
93103
horizontalAlignment = Alignment.CenterHorizontally
94104
) {
95-
GoalSlider(value = currentGoal, onValueChange = { viewModel.onGoalValueChange(it) })
105+
GoalSlider(value = currentGoal, onValueChange = onValueChange)
96106
}
97107

98108
// Buttons pinned to the bottom
@@ -103,16 +113,18 @@ fun GoalPromptScreen(
103113
horizontalAlignment = Alignment.CenterHorizontally,
104114
verticalArrangement = Arrangement.spacedBy(8.dp)
105115
) {
106-
LogInButton { viewModel.onSignInWithGoogle() }
107-
SkipButton { viewModel.onSkip() }
116+
LogInButton { onLogin() }
108117
}
109118
}
110119
}
111120
}
112121

113122
@Preview(showBackground = true)
114123
@Composable
115-
fun GoalPromptScreenPreview() {
124+
private fun GoalPromptScreenPreview() {
116125
var sliderVal by remember { mutableFloatStateOf(0f) }
117-
GoalPromptScreen()
126+
GoalPromptContent(
127+
sliderVal,
128+
{ sliderVal = it}
129+
)
118130
}

app/src/main/java/com/cornellappdev/uplift/ui/screens/onboarding/SignInPromptScreen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ private fun SignInPromptScreenContent(
112112
}
113113

114114
@Composable
115-
fun SkipButton(onClick: () -> Unit) {
115+
private fun SkipButton(onClick: () -> Unit) {
116116
TextButton(
117117
onClick = onClick
118118
) {

app/src/main/java/com/cornellappdev/uplift/ui/screens/reminders/WorkoutReminderScreen.kt

Lines changed: 61 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ data class Reminder(
5656
*/
5757
@Composable
5858
fun 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

Comments
 (0)