Show no pinned sources message when attempting to migrate/search
This commit is contained in:
parent
7df10b076c
commit
6bb3070c57
@ -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,
|
||||
) {
|
||||
|
@ -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,
|
||||
) {
|
||||
|
@ -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,
|
||||
) {
|
||||
|
||||
|
@ -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 }
|
||||
|
Loading…
Reference in New Issue
Block a user