Show no pinned sources message when attempting to migrate/search

This commit is contained in:
arkon 2023-01-10 22:39:19 -05:00
parent 7df10b076c
commit 6bb3070c57
4 changed files with 35 additions and 2 deletions

View file

@ -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,
) {

View file

@ -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,
) {

View file

@ -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,
) {

View file

@ -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 }