wrap profileEditScreen in route
This commit is contained in:
parent
de42f090ef
commit
90170eb635
2 changed files with 47 additions and 17 deletions
|
@ -28,6 +28,7 @@ import be.ugent.sel.studeez.navigation.StudeezDestinations
|
|||
import be.ugent.sel.studeez.screens.home.HomeRoute
|
||||
import be.ugent.sel.studeez.screens.log_in.LoginRoute
|
||||
import be.ugent.sel.studeez.screens.log_in.LoginScreen
|
||||
import be.ugent.sel.studeez.screens.profile.EditProfileRoute
|
||||
import be.ugent.sel.studeez.screens.profile.EditProfileScreen
|
||||
import be.ugent.sel.studeez.screens.profile.ProfileScreen
|
||||
import be.ugent.sel.studeez.screens.session.SessionScreen
|
||||
|
@ -137,7 +138,7 @@ fun NavGraphBuilder.studeezGraph(appState: StudeezAppstate) {
|
|||
|
||||
// Edit screens
|
||||
composable(StudeezDestinations.EDIT_PROFILE_SCREEN) {
|
||||
EditProfileScreen(goBack, openAndPopUp)
|
||||
EditProfileRoute(goBack, openAndPopUp, viewModel = hiltViewModel())
|
||||
}
|
||||
|
||||
composable(StudeezDestinations.TIMER_SELECTION_SCREEN) {
|
||||
|
|
|
@ -14,14 +14,43 @@ import be.ugent.sel.studeez.common.ext.textButton
|
|||
import be.ugent.sel.studeez.resources
|
||||
import be.ugent.sel.studeez.ui.theme.StudeezTheme
|
||||
|
||||
data class EditProfileActions(
|
||||
val onUserNameChange: (String) -> Unit,
|
||||
val onSaveClick: () -> Unit,
|
||||
val onDeleteClick: () -> Unit
|
||||
)
|
||||
|
||||
fun getEditProfileActions(
|
||||
viewModel: ProfileEditViewModel,
|
||||
openAndPopUp: (String, String) -> Unit,
|
||||
): EditProfileActions {
|
||||
return EditProfileActions(
|
||||
onUserNameChange = { viewModel.onUsernameChange(it) },
|
||||
onSaveClick = { viewModel.onSaveClick() },
|
||||
onDeleteClick = { viewModel.onDeleteClick(openAndPopUp) },
|
||||
)
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun EditProfileRoute(
|
||||
goBack: () -> Unit,
|
||||
openAndPopUp: (String, String) -> Unit,
|
||||
viewModel: ProfileEditViewModel,
|
||||
) {
|
||||
val uiState by viewModel.uiState
|
||||
EditProfileScreen(
|
||||
goBack = goBack,
|
||||
uiState = uiState,
|
||||
editProfileActions = getEditProfileActions(viewModel, openAndPopUp)
|
||||
)
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun EditProfileScreen(
|
||||
goBack: () -> Unit,
|
||||
openAndPopUp: (String, String) -> Unit,
|
||||
viewModel: ProfileEditViewModel = hiltViewModel()
|
||||
uiState: ProfileEditUiState,
|
||||
editProfileActions: EditProfileActions,
|
||||
) {
|
||||
val uiState by viewModel.uiState
|
||||
|
||||
SecondaryScreenTemplate(
|
||||
title = resources().getString(R.string.editing_profile),
|
||||
popUp = goBack
|
||||
|
@ -29,16 +58,19 @@ fun EditProfileScreen(
|
|||
Column {
|
||||
LabelledInputField(
|
||||
value = uiState.username,
|
||||
onNewValue = viewModel::onUsernameChange,
|
||||
onNewValue = editProfileActions.onUserNameChange,
|
||||
label = R.string.username
|
||||
)
|
||||
|
||||
BasicTextButton(text = R.string.save, Modifier.textButton()) {
|
||||
viewModel.onSaveClick()
|
||||
}
|
||||
BasicTextButton(text = R.string.delete_profile, Modifier.textButton()) {
|
||||
viewModel.onDeleteClick(openAndPopUp)
|
||||
}
|
||||
BasicTextButton(
|
||||
text = R.string.save,
|
||||
Modifier.textButton(),
|
||||
action = editProfileActions.onSaveClick
|
||||
)
|
||||
BasicTextButton(
|
||||
text = R.string.delete_profile,
|
||||
Modifier.textButton(),
|
||||
action = editProfileActions.onDeleteClick
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -47,9 +79,6 @@ fun EditProfileScreen(
|
|||
@Composable
|
||||
fun EditProfileScreenComposable() {
|
||||
StudeezTheme {
|
||||
EditProfileScreen (
|
||||
{},
|
||||
{_, _ -> {}}
|
||||
)
|
||||
EditProfileScreen({}, ProfileEditUiState(), EditProfileActions({}, {}, {}))
|
||||
}
|
||||
}
|
Reference in a new issue