File tree Expand file tree Collapse file tree
feature/profilecard/src/commonMain/kotlin/io/github/droidkaigi/confsched/profilecard Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -20,6 +20,7 @@ import androidx.compose.material3.Scaffold
2020import androidx.compose.material3.Text
2121import androidx.compose.material3.TopAppBar
2222import androidx.compose.runtime.Composable
23+ import androidx.compose.runtime.LaunchedEffect
2324import androidx.compose.runtime.getValue
2425import androidx.compose.runtime.mutableFloatStateOf
2526import androidx.compose.runtime.mutableStateOf
@@ -73,6 +74,7 @@ internal sealed interface CropImageScreenState {
7374
7475 data class Confirm (
7576 val profileImage : ProfileImage ,
77+ val shouldBack : Boolean ,
7678 ) : CropImageScreenState
7779}
7880
@@ -83,11 +85,14 @@ internal fun CropImageScreen(
8385 onConfirm : () -> Unit ,
8486 modifier : Modifier = Modifier ,
8587 eventFlow : EventFlow <CropImageScreenEvent > = rememberEventFlow(),
86- uiState : CropImageScreenState = cropImageScreenPresenter(
87- onConfirm = onConfirm,
88- events = eventFlow,
89- ),
88+ uiState : CropImageScreenState = cropImageScreenPresenter(eventFlow),
9089) {
90+ LaunchedEffect (uiState is CropImageScreenState .Confirm && uiState.shouldBack) {
91+ if (uiState is CropImageScreenState .Confirm && uiState.shouldBack) {
92+ onConfirm()
93+ }
94+ }
95+
9196 Scaffold (
9297 modifier = modifier.fillMaxSize(),
9398 topBar = {
Original file line number Diff line number Diff line change @@ -24,13 +24,13 @@ internal sealed interface CropImageScreenEvent {
2424
2525@Composable
2626internal fun cropImageScreenPresenter (
27- onConfirm : () -> Unit ,
2827 events : Flow <CropImageScreenEvent >,
2928 repository : ProfileCardRepository = localProfileCardRepository(),
3029): CropImageScreenState = providePresenterDefaults { _ ->
3130 val profileImageCandidate: ProfileImage ? by rememberUpdatedState(repository.profileImageCandidate())
3231 var croppedProfileImage: ProfileImage ? by remember { mutableStateOf(null ) }
3332 var isProcessing: Boolean by remember { mutableStateOf(false ) }
33+ var shouldBack: Boolean by remember { mutableStateOf(false ) }
3434
3535 SafeLaunchedEffect (Unit ) {
3636 events.collect { event ->
@@ -49,7 +49,7 @@ internal fun cropImageScreenPresenter(
4949 val result = requireNotNull(croppedProfileImage)
5050 repository.setProfileImageInEdit(result)
5151
52- onConfirm()
52+ shouldBack = true
5353 }
5454
5555 is CropImageScreenEvent .Cancel -> {
@@ -76,6 +76,7 @@ internal fun cropImageScreenPresenter(
7676 else -> {
7777 CropImageScreenState .Confirm (
7878 profileImage = cropped,
79+ shouldBack = shouldBack,
7980 )
8081 }
8182 }
You can’t perform that action at this time.
0 commit comments