Selaa lähdekoodia

Show no pinned sources message when attempting to migrate/search

arkon 2 vuotta sitten
vanhempi
commit
6bb3070c57

+ 10 - 0
app/src/main/java/eu/kanade/presentation/browse/GlobalSearchScreen.kt

@@ -14,6 +14,7 @@ import eu.kanade.presentation.browse.components.GlobalSearchErrorResultItem
 import eu.kanade.presentation.browse.components.GlobalSearchLoadingResultItem
 import eu.kanade.presentation.browse.components.GlobalSearchResultItem
 import eu.kanade.presentation.browse.components.GlobalSearchToolbar
+import eu.kanade.presentation.components.EmptyScreen
 import eu.kanade.presentation.components.LazyColumn
 import eu.kanade.presentation.components.Scaffold
 import eu.kanade.presentation.util.padding
@@ -49,6 +50,7 @@ fun GlobalSearchScreen(
     ) { paddingValues ->
         GlobalSearchContent(
             items = state.items,
+            isPinnedOnly = state.isPinnedOnly,
             contentPadding = paddingValues,
             getManga = getManga,
             onClickSource = onClickSource,
@@ -61,12 +63,20 @@ fun GlobalSearchScreen(
 @Composable
 fun GlobalSearchContent(
     items: Map<CatalogueSource, SearchItemResult>,
+    isPinnedOnly: Boolean,
     contentPadding: PaddingValues,
     getManga: @Composable (CatalogueSource, Manga) -> State<Manga>,
     onClickSource: (CatalogueSource) -> Unit,
     onClickItem: (Manga) -> Unit,
     onLongClickItem: (Manga) -> Unit,
 ) {
+    if (items.isEmpty() && isPinnedOnly) {
+        EmptyScreen(
+            message = stringResource(R.string.no_pinned_sources),
+        )
+        return
+    }
+
     LazyColumn(
         contentPadding = contentPadding,
     ) {

+ 12 - 0
app/src/main/java/eu/kanade/presentation/browse/MigrateSearchScreen.kt

@@ -3,6 +3,7 @@ package eu.kanade.presentation.browse
 import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.State
+import androidx.compose.ui.res.stringResource
 import eu.kanade.domain.manga.model.Manga
 import eu.kanade.presentation.browse.components.GlobalSearchCardRow
 import eu.kanade.presentation.browse.components.GlobalSearchEmptyResultItem
@@ -10,8 +11,10 @@ import eu.kanade.presentation.browse.components.GlobalSearchErrorResultItem
 import eu.kanade.presentation.browse.components.GlobalSearchLoadingResultItem
 import eu.kanade.presentation.browse.components.GlobalSearchResultItem
 import eu.kanade.presentation.browse.components.GlobalSearchToolbar
+import eu.kanade.presentation.components.EmptyScreen
 import eu.kanade.presentation.components.LazyColumn
 import eu.kanade.presentation.components.Scaffold
+import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.source.CatalogueSource
 import eu.kanade.tachiyomi.ui.browse.migration.search.MigrateSearchState
 import eu.kanade.tachiyomi.ui.browse.source.globalsearch.SearchItemResult
@@ -44,6 +47,7 @@ fun MigrateSearchScreen(
         MigrateSearchContent(
             sourceId = state.manga?.source ?: -1,
             items = state.items,
+            isPinnedOnly = state.isPinnedOnly,
             contentPadding = paddingValues,
             getManga = getManga,
             onClickSource = onClickSource,
@@ -57,12 +61,20 @@ fun MigrateSearchScreen(
 fun MigrateSearchContent(
     sourceId: Long,
     items: Map<CatalogueSource, SearchItemResult>,
+    isPinnedOnly: Boolean,
     contentPadding: PaddingValues,
     getManga: @Composable (CatalogueSource, Manga) -> State<Manga>,
     onClickSource: (CatalogueSource) -> Unit,
     onClickItem: (Manga) -> Unit,
     onLongClickItem: (Manga) -> Unit,
 ) {
+    if (items.isEmpty() && isPinnedOnly) {
+        EmptyScreen(
+            message = stringResource(R.string.no_pinned_sources),
+        )
+        return
+    }
+
     LazyColumn(
         contentPadding = contentPadding,
     ) {

+ 6 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreenModel.kt

@@ -22,7 +22,11 @@ class MigrateSearchScreenModel(
     private val sourcePreferences: SourcePreferences = Injekt.get(),
     private val sourceManager: SourceManager = Injekt.get(),
     private val getManga: GetManga = Injekt.get(),
-) : SearchScreenModel<MigrateSearchState>(MigrateSearchState()) {
+) : SearchScreenModel<MigrateSearchState>(
+    MigrateSearchState(
+        isPinnedOnly = sourcePreferences.searchPinnedSourcesOnly().get(),
+    ),
+) {
 
     init {
         extensionFilter = initialExtensionFilter
@@ -84,6 +88,7 @@ data class MigrateSearchState(
     val manga: Manga? = null,
     val searchQuery: String? = null,
     val items: Map<CatalogueSource, SearchItemResult> = emptyMap(),
+    val isPinnedOnly: Boolean,
     val dialog: MigrateSearchDialog? = null,
 ) {
 

+ 7 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchScreenModel.kt

@@ -15,7 +15,12 @@ class GlobalSearchScreenModel(
     preferences: BasePreferences = Injekt.get(),
     private val sourcePreferences: SourcePreferences = Injekt.get(),
     private val sourceManager: SourceManager = Injekt.get(),
-) : SearchScreenModel<GlobalSearchState>(GlobalSearchState(searchQuery = initialQuery)) {
+) : SearchScreenModel<GlobalSearchState>(
+    GlobalSearchState(
+        searchQuery = initialQuery,
+        isPinnedOnly = sourcePreferences.searchPinnedSourcesOnly().get(),
+    ),
+) {
 
     val incognitoMode = preferences.incognitoMode()
     val lastUsedSourceId = sourcePreferences.lastUsedSource()
@@ -59,6 +64,7 @@ class GlobalSearchScreenModel(
 data class GlobalSearchState(
     val searchQuery: String? = null,
     val items: Map<CatalogueSource, SearchItemResult> = emptyMap(),
+    val isPinnedOnly: Boolean,
 ) {
 
     val progress: Int = items.count { it.value !is SearchItemResult.Loading }