Skip to content

Commit b394982

Browse files
committed
refactor: require explicit action handlers and save-change channel in main screens
- Update `AdaptiveMainScreen` and `NoteDetailScreen` to require `onAction` callbacks and `checkSaveChangeChannel` as parameters, removing their default values. - Pass `checkSaveChangeChannel` from `NoteViewModel` through the adaptive scaffold to the detail pane. - Update `ScreenshootPreview` to provide the required arguments for the updated `AdaptiveMainScreen` signature. - Remove unused `SnackbarHostState` from the main screen preview.
1 parent 5847dec commit b394982

3 files changed

Lines changed: 13 additions & 8 deletions

File tree

app/android/src/main/java/com/softartdev/notedelight/ScreenshootPreview.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package com.softartdev.notedelight
33
import android.content.res.Configuration
44
import androidx.compose.foundation.layout.fillMaxSize
55
import androidx.compose.foundation.text.input.TextFieldState
6-
import androidx.compose.material3.SnackbarHostState
76
import androidx.compose.material3.Surface
87
import androidx.compose.runtime.Composable
98
import androidx.compose.runtime.MutableState
@@ -26,6 +25,7 @@ import com.softartdev.notedelight.ui.main.NoteDetailBody
2625
import com.softartdev.notedelight.ui.settings.AdaptiveSettingsScreen
2726
import com.softartdev.notedelight.ui.signin.SignInScreenBody
2827
import com.softartdev.theme.material3.PreferableMaterialTheme
28+
import kotlinx.coroutines.channels.Channel
2929
import kotlinx.coroutines.flow.flowOf
3030
import kotlinx.datetime.LocalDateTime
3131

@@ -147,7 +147,9 @@ private fun StoreNotesScreen() {
147147
AdaptiveMainScreen(
148148
noteListResultState = noteListState,
149149
noteDetailState = remember { mutableStateOf(NoteResult(note = selectedNote)) },
150-
snackbarHostState = remember { SnackbarHostState() },
150+
onMainAction = {},
151+
onNoteAction = {},
152+
checkSaveChangeChannel = Channel()
151153
)
152154
}
153155

core/ui/src/commonMain/kotlin/com/softartdev/notedelight/ui/main/AdaptiveMainScreen.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import com.softartdev.notedelight.presentation.note.NoteViewModel
3232
import com.softartdev.notedelight.ui.NavBackHandler
3333
import com.softartdev.notedelight.ui.VerticalPaneExpansionDragHandle
3434
import com.softartdev.theme.material3.PreferableMaterialTheme
35+
import kotlinx.coroutines.channels.Channel
3536
import kotlinx.coroutines.launch
3637
import org.koin.compose.koinInject
3738
import org.koin.compose.viewmodel.koinViewModel
@@ -53,7 +54,8 @@ fun AdaptiveMainScreen(
5354
noteListResultState = mainViewModel.stateFlow.collectAsState(),
5455
onMainAction = mainViewModel::onAction,
5556
noteDetailState = noteViewModel.stateFlow.collectAsState(),
56-
onNoteAction = noteViewModel::onAction
57+
onNoteAction = noteViewModel::onAction,
58+
checkSaveChangeChannel = noteViewModel.checkSaveChangeChannel
5759
)
5860
}
5961

@@ -62,9 +64,10 @@ fun AdaptiveMainScreen(
6264
router: Router = koinInject(),
6365
snackbarHostState: SnackbarHostState = SnackbarHostState(),
6466
noteListResultState: State<NoteListResult>,
65-
onMainAction: (action: MainAction) -> Unit = {},
67+
onMainAction: (action: MainAction) -> Unit,
6668
noteDetailState: State<NoteResult>,
67-
onNoteAction: (action: NoteAction) -> Unit = {},
69+
onNoteAction: (action: NoteAction) -> Unit,
70+
checkSaveChangeChannel: Channel<Unit>
6871
) {
6972
val coroutineScope = rememberCoroutineScope()
7073
val navigator: ThreePaneScaffoldNavigator<Long> = rememberListDetailPaneScaffoldNavigator<Long>()
@@ -78,7 +81,7 @@ fun AdaptiveMainScreen(
7881
directive = navigator.scaffoldDirective,
7982
value = navigator.scaffoldValue,
8083
listPane = { MainScreen(noteListResultState, onMainAction, snackbarHostState = snackbarHostState) },
81-
detailPane = { NoteDetailScreen(noteDetailState, onNoteAction) },
84+
detailPane = { NoteDetailScreen(noteDetailState, onNoteAction, checkSaveChangeChannel) },
8285
paneExpansionDragHandle = ThreePaneScaffoldScope::VerticalPaneExpansionDragHandle,
8386
paneExpansionState = paneExpansionState
8487
)

core/ui/src/commonMain/kotlin/com/softartdev/notedelight/ui/main/NoteDetail.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ fun NoteDetail(noteViewModel: NoteViewModel) {
6868
@Composable
6969
fun NoteDetailScreen(
7070
noteDetailState: State<NoteResult>,
71-
onAction: (NoteAction) -> Unit = {},
72-
checkSaveChangeChannel: Channel<Unit> = Channel()
71+
onAction: (NoteAction) -> Unit,
72+
checkSaveChangeChannel: Channel<Unit>
7373
) = when (noteDetailState.value.note) {
7474
null -> MainDetailPanePlaceholder()
7575
else -> NoteDetail(

0 commit comments

Comments
 (0)