Просмотр исходного кода

Fix browse search query display and keyboard focus (#8781)

stevenyomi 2 лет назад
Родитель
Сommit
a8230ad574

+ 1 - 0
app/src/main/java/eu/kanade/presentation/components/AppBar.kt

@@ -319,6 +319,7 @@ fun SearchToolbar(
     )
     LaunchedEffect(searchClickCount) {
         if (searchQuery == null) return@LaunchedEffect
+        if (searchClickCount == 0 && searchQuery.isNotEmpty()) return@LaunchedEffect
         try {
             focusRequester.requestFocus()
         } catch (_: Throwable) {

+ 18 - 16
app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt

@@ -103,6 +103,24 @@ class BrowseSourceScreenModel(
 
     val source = sourceManager.get(sourceId) as CatalogueSource
 
+    init {
+        mutableState.update {
+            var query: String? = null
+            var listing = it.listing
+
+            if (listing is Listing.Search) {
+                query = listing.query
+                listing = Listing.Search(query, source.getFilterList())
+            }
+
+            it.copy(
+                listing = listing,
+                filters = source.getFilterList(),
+                toolbarQuery = query,
+            )
+        }
+    }
+
     /**
      * Sheet containing filter items.
      */
@@ -132,22 +150,6 @@ class BrowseSourceScreenModel(
         }
         .stateIn(coroutineScope, SharingStarted.Lazily, emptyFlow())
 
-    init {
-        mutableState.update {
-            val initialListing = it.listing
-            val listing = if (initialListing is Listing.Search) {
-                initialListing.copy(filters = source.getFilterList())
-            } else {
-                initialListing
-            }
-
-            it.copy(
-                listing = listing,
-                filters = source.getFilterList(),
-            )
-        }
-    }
-
     fun getColumnsPreference(orientation: Int): GridCells {
         val isLandscape = orientation == Configuration.ORIENTATION_LANDSCAPE
         val columns = if (isLandscape) {