Browse Source

removed main state from image page composable

sirekanian 3 năm trước cách đây
mục cha
commit
2730f32a86

+ 3 - 1
app/src/main/java/com/sirekanian/spacetime/MainScreen.kt

@@ -35,8 +35,10 @@ fun MainScreen(presenter: MainPresenter) {
             is ImagePage -> {
                 ImagePageContent(
                     insets,
-                    state,
                     page,
+                    state.editablePage,
+                    onEdit = { state.editablePage = it },
+                    onClose = { state.editablePage = null },
                     onDelete = { presenter.removePage(page) },
                     onDone = { presenter.savePage(it) }
                 )

+ 9 - 8
app/src/main/java/com/sirekanian/spacetime/ui/ImagePageContent.kt

@@ -22,7 +22,6 @@ import androidx.compose.ui.text.style.TextAlign
 import androidx.compose.ui.text.style.TextOverflow
 import androidx.compose.ui.unit.dp
 import com.sirekanian.spacetime.D
-import com.sirekanian.spacetime.MainState
 import com.sirekanian.spacetime.R
 import com.sirekanian.spacetime.ext.DefaultAnimatedVisibility
 import com.sirekanian.spacetime.ext.VectorIconButton
@@ -33,14 +32,16 @@ import com.sirekanian.spacetime.model.ImagePage
 @Composable
 fun ImagePageContent(
     insets: PaddingValues,
-    state: MainState,
     page: ImagePage,
+    editablePage: EditablePage?,
+    onEdit: (EditablePage) -> Unit,
+    onClose: () -> Unit,
     onDelete: () -> Unit,
     onDone: (ImagePage) -> Unit,
 ) {
-    val isEditMode = state.editablePage?.page?.id == page.id
+    val isEditMode = editablePage?.page?.id == page.id
     BackHandler(isEditMode) {
-        state.editablePage = null
+        onClose()
     }
     val name = remember { NameField(page.name) }
     val date = remember { DateFieldWrapper(page.date) }
@@ -53,7 +54,7 @@ fun ImagePageContent(
     )
     DefaultAnimatedVisibility(visible = isEditMode) {
         Row(Modifier.padding(insets)) {
-            VectorIconButton(Icons.Default.Close, onClick = { state.editablePage = null })
+            VectorIconButton(Icons.Default.Close, onClick = onClose)
             Spacer(Modifier.weight(1f))
             if (name.isEmpty() && date.isEmpty()) {
                 TextButton(onClick = { onDelete() }) {
@@ -87,7 +88,7 @@ fun ImagePageContent(
                 isNameValid = isNameValid,
                 date = date,
                 isDateValid = isDateValid,
-                autofocus = state.editablePage?.autofocus,
+                autofocus = editablePage?.autofocus,
                 textStyle = textStyle,
             )
         } else {
@@ -98,7 +99,7 @@ fun ImagePageContent(
                     .fillMaxWidth()
                     .clip(MaterialTheme.shapes.small)
                     .combinedClickable(onLongClick = {
-                        state.editablePage = EditablePage(page, Autofocus.NAME)
+                        onEdit(EditablePage(page, Autofocus.NAME))
                         haptic.performHapticFeedback(HapticFeedbackType.LongPress)
                     }) {}
                     .padding(16.dp),
@@ -119,7 +120,7 @@ fun ImagePageContent(
                         .fillMaxWidth()
                         .clip(MaterialTheme.shapes.small)
                         .combinedClickable(onLongClick = {
-                            state.editablePage = EditablePage(page, Autofocus.DATE)
+                            onEdit(EditablePage(page, Autofocus.DATE))
                             haptic.performHapticFeedback(HapticFeedbackType.LongPress)
                         }) {}
                         .padding(16.dp),