Browse Source

removed draft model

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

+ 0 - 1
app/src/main/java/com/sirekanian/spacetime/MainPresenter.kt

@@ -46,7 +46,6 @@ class MainPresenterImpl(
 
     override fun savePage(page: ImagePage) {
         state.editablePage = null
-        state.draft = null
         scope.launch {
             repository.savePage(page)
             updatePages()

+ 7 - 2
app/src/main/java/com/sirekanian/spacetime/MainScreen.kt

@@ -7,9 +7,11 @@ import androidx.compose.foundation.layout.systemBars
 import androidx.compose.runtime.Composable
 import com.google.accompanist.pager.ExperimentalPagerApi
 import com.google.accompanist.pager.HorizontalPager
-import com.sirekanian.spacetime.model.Draft
+import com.sirekanian.spacetime.model.EditablePage
+import com.sirekanian.spacetime.model.EditablePage.Autofocus
 import com.sirekanian.spacetime.model.GalleryPage
 import com.sirekanian.spacetime.model.ImagePage
+import com.sirekanian.spacetime.model.createImagePage
 import com.sirekanian.spacetime.ui.DraftPage
 import com.sirekanian.spacetime.ui.GalleryPageContent
 import com.sirekanian.spacetime.ui.ImagePageContent
@@ -43,7 +45,10 @@ fun MainScreen(presenter: MainPresenter) {
                 GalleryPageContent(
                     insets,
                     state.thumbnails,
-                    onSelect = { state.draft = Draft(it) },
+                    onSelect = { url ->
+                        val draft = createImagePage("", url, "", 0.5f)
+                        state.editablePage = EditablePage(draft, Autofocus.NAME)
+                    },
                     onEnd = { presenter.loadGallery() }
                 )
             }

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

@@ -18,7 +18,7 @@ class MainState {
     val pagerState = PagerState()
     var editablePage by mutableStateOf<EditablePage?>(null)
     var pages by mutableStateOf(listOf<Page>())
-    var draft by mutableStateOf<Draft?>(null)
+    val draft by derivedStateOf { editablePage?.takeIf { it.page.id == 0 } }
     var thumbnails by mutableStateOf(listOf<Thumbnail>())
     val nextDate: LocalDate by derivedStateOf {
         thumbnails.let {

+ 0 - 3
app/src/main/java/com/sirekanian/spacetime/model/Draft.kt

@@ -1,3 +0,0 @@
-package com.sirekanian.spacetime.model
-
-class Draft(val url: String)

+ 7 - 8
app/src/main/java/com/sirekanian/spacetime/ui/DraftPage.kt

@@ -15,19 +15,18 @@ import androidx.compose.ui.unit.dp
 import com.sirekanian.spacetime.D
 import com.sirekanian.spacetime.MainState
 import com.sirekanian.spacetime.ext.VectorIconButton
-import com.sirekanian.spacetime.model.EditablePage.Autofocus
 import com.sirekanian.spacetime.model.ImagePage
 import com.sirekanian.spacetime.model.createImagePage
 
 @Composable
 fun DraftPage(insets: PaddingValues, state: MainState, onDone: (ImagePage) -> Unit) {
-    val draft = state.draft ?: return
+    val draft = state.draft?.page ?: return
     BackHandler {
-        state.draft = null
+        state.editablePage = null
     }
-    val name = remember { NameField("") }
-    val date = remember { DateFieldWrapper("") }
-    var blur by remember { mutableStateOf(0.5f) }
+    val name = remember { NameField(draft.name) }
+    val date = remember { DateFieldWrapper(draft.date) }
+    var blur by remember { mutableStateOf(draft.blur) }
     var isNameValid by remember(name.field) { mutableStateOf(true) }
     var isDateValid by remember(date.field) { mutableStateOf(true) }
     PageBackground(
@@ -35,7 +34,7 @@ fun DraftPage(insets: PaddingValues, state: MainState, onDone: (ImagePage) -> Un
         blur = blur,
     )
     Row(Modifier.padding(insets)) {
-        VectorIconButton(Icons.Default.Close, onClick = { state.draft = null })
+        VectorIconButton(Icons.Default.Close, onClick = { state.editablePage = null })
         Spacer(Modifier.weight(1f))
         VectorIconButton(Icons.Default.Done, onClick = {
             isNameValid = name.isValid()
@@ -59,7 +58,7 @@ fun DraftPage(insets: PaddingValues, state: MainState, onDone: (ImagePage) -> Un
             isNameValid = isNameValid,
             date = date,
             isDateValid = isDateValid,
-            autofocus = Autofocus.NAME,
+            autofocus = state.draft?.autofocus,
             textStyle = textStyle,
         )
         Box(Modifier.height(48.dp), Alignment.Center) {