Jelajahi Sumber

Added search state

Vadik Sirekanyan 2 tahun lalu
induk
melakukan
a1634f9c23

+ 8 - 3
app/src/main/java/org/sirekanyan/outline/MainContent.kt

@@ -1,5 +1,6 @@
 package org.sirekanyan.outline
 
+import androidx.activity.compose.BackHandler
 import androidx.compose.animation.AnimatedVisibility
 import androidx.compose.animation.expandVertically
 import androidx.compose.animation.fadeIn
@@ -53,6 +54,7 @@ import org.sirekanyan.outline.ui.AddKeyButton
 import org.sirekanyan.outline.ui.DrawerContent
 import org.sirekanyan.outline.ui.KeyBottomSheet
 import org.sirekanyan.outline.ui.icons.IconSort
+import org.sirekanyan.outline.ui.rememberSearchState
 
 @Composable
 fun MainContent(state: MainState) {
@@ -62,9 +64,12 @@ fun MainContent(state: MainState) {
         val insets = WindowInsets.systemBars.asPaddingValues() + PaddingValues(top = 64.dp)
         when (val page = state.page) {
             is HelloPage -> {
-                val query by remember { mutableStateOf("") }
-                val allKeys by rememberFlowAsState(initial = null, query) {
-                    state.keys.observeAllKeys(query)
+                val search = rememberSearchState()
+                BackHandler(search.isOpened) {
+                    search.closeSearch()
+                }
+                val allKeys by rememberFlowAsState(initial = null, search.query) {
+                    state.keys.observeAllKeys(search.query)
                 }
                 allKeys?.let { keys ->
                     if (keys.isNotEmpty()) {

+ 27 - 0
app/src/main/java/org/sirekanyan/outline/ui/SearchState.kt

@@ -0,0 +1,27 @@
+package org.sirekanyan.outline.ui
+
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
+
+@Composable
+fun rememberSearchState(): SearchState =
+    remember { SearchState() }
+
+class SearchState {
+
+    var query by mutableStateOf("")
+    var isOpened by mutableStateOf(false)
+
+    fun openSearch() {
+        isOpened = true
+    }
+
+    fun closeSearch() {
+        query = ""
+        isOpened = false
+    }
+
+}