From 90170eb635f1b56c6520fa84f5b023d62a092888 Mon Sep 17 00:00:00 2001 From: brreynie Date: Sat, 22 Apr 2023 23:03:01 +0200 Subject: [PATCH] wrap profileEditScreen in route --- .../java/be/ugent/sel/studeez/StudeezApp.kt | 3 +- .../screens/profile/ProfileEditScreen.kt | 61 ++++++++++++++----- 2 files changed, 47 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/be/ugent/sel/studeez/StudeezApp.kt b/app/src/main/java/be/ugent/sel/studeez/StudeezApp.kt index d0e7db7..3079780 100644 --- a/app/src/main/java/be/ugent/sel/studeez/StudeezApp.kt +++ b/app/src/main/java/be/ugent/sel/studeez/StudeezApp.kt @@ -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) { diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/profile/ProfileEditScreen.kt b/app/src/main/java/be/ugent/sel/studeez/screens/profile/ProfileEditScreen.kt index eb12ac7..116a5fb 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/profile/ProfileEditScreen.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/profile/ProfileEditScreen.kt @@ -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({}, {}, {})) } } \ No newline at end of file