mirror of
https://github.com/mihonapp/mihon.git
synced 2024-12-25 18:38:23 +01:00
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.GlobalSearchLoadingResultItem
|
||||||
import eu.kanade.presentation.browse.components.GlobalSearchResultItem
|
import eu.kanade.presentation.browse.components.GlobalSearchResultItem
|
||||||
import eu.kanade.presentation.browse.components.GlobalSearchToolbar
|
import eu.kanade.presentation.browse.components.GlobalSearchToolbar
|
||||||
|
import eu.kanade.presentation.components.EmptyScreen
|
||||||
import eu.kanade.presentation.components.LazyColumn
|
import eu.kanade.presentation.components.LazyColumn
|
||||||
import eu.kanade.presentation.components.Scaffold
|
import eu.kanade.presentation.components.Scaffold
|
||||||
import eu.kanade.presentation.util.padding
|
import eu.kanade.presentation.util.padding
|
||||||
@ -49,6 +50,7 @@ fun GlobalSearchScreen(
|
|||||||
) { paddingValues ->
|
) { paddingValues ->
|
||||||
GlobalSearchContent(
|
GlobalSearchContent(
|
||||||
items = state.items,
|
items = state.items,
|
||||||
|
isPinnedOnly = state.isPinnedOnly,
|
||||||
contentPadding = paddingValues,
|
contentPadding = paddingValues,
|
||||||
getManga = getManga,
|
getManga = getManga,
|
||||||
onClickSource = onClickSource,
|
onClickSource = onClickSource,
|
||||||
@ -61,12 +63,20 @@ fun GlobalSearchScreen(
|
|||||||
@Composable
|
@Composable
|
||||||
fun GlobalSearchContent(
|
fun GlobalSearchContent(
|
||||||
items: Map<CatalogueSource, SearchItemResult>,
|
items: Map<CatalogueSource, SearchItemResult>,
|
||||||
|
isPinnedOnly: Boolean,
|
||||||
contentPadding: PaddingValues,
|
contentPadding: PaddingValues,
|
||||||
getManga: @Composable (CatalogueSource, Manga) -> State<Manga>,
|
getManga: @Composable (CatalogueSource, Manga) -> State<Manga>,
|
||||||
onClickSource: (CatalogueSource) -> Unit,
|
onClickSource: (CatalogueSource) -> Unit,
|
||||||
onClickItem: (Manga) -> Unit,
|
onClickItem: (Manga) -> Unit,
|
||||||
onLongClickItem: (Manga) -> Unit,
|
onLongClickItem: (Manga) -> Unit,
|
||||||
) {
|
) {
|
||||||
|
if (items.isEmpty() && isPinnedOnly) {
|
||||||
|
EmptyScreen(
|
||||||
|
message = stringResource(R.string.no_pinned_sources),
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
LazyColumn(
|
LazyColumn(
|
||||||
contentPadding = contentPadding,
|
contentPadding = contentPadding,
|
||||||
) {
|
) {
|
||||||
|
@ -3,6 +3,7 @@ package eu.kanade.presentation.browse
|
|||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.State
|
import androidx.compose.runtime.State
|
||||||
|
import androidx.compose.ui.res.stringResource
|
||||||
import eu.kanade.domain.manga.model.Manga
|
import eu.kanade.domain.manga.model.Manga
|
||||||
import eu.kanade.presentation.browse.components.GlobalSearchCardRow
|
import eu.kanade.presentation.browse.components.GlobalSearchCardRow
|
||||||
import eu.kanade.presentation.browse.components.GlobalSearchEmptyResultItem
|
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.GlobalSearchLoadingResultItem
|
||||||
import eu.kanade.presentation.browse.components.GlobalSearchResultItem
|
import eu.kanade.presentation.browse.components.GlobalSearchResultItem
|
||||||
import eu.kanade.presentation.browse.components.GlobalSearchToolbar
|
import eu.kanade.presentation.browse.components.GlobalSearchToolbar
|
||||||
|
import eu.kanade.presentation.components.EmptyScreen
|
||||||
import eu.kanade.presentation.components.LazyColumn
|
import eu.kanade.presentation.components.LazyColumn
|
||||||
import eu.kanade.presentation.components.Scaffold
|
import eu.kanade.presentation.components.Scaffold
|
||||||
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.source.CatalogueSource
|
import eu.kanade.tachiyomi.source.CatalogueSource
|
||||||
import eu.kanade.tachiyomi.ui.browse.migration.search.MigrateSearchState
|
import eu.kanade.tachiyomi.ui.browse.migration.search.MigrateSearchState
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.SearchItemResult
|
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.SearchItemResult
|
||||||
@ -44,6 +47,7 @@ fun MigrateSearchScreen(
|
|||||||
MigrateSearchContent(
|
MigrateSearchContent(
|
||||||
sourceId = state.manga?.source ?: -1,
|
sourceId = state.manga?.source ?: -1,
|
||||||
items = state.items,
|
items = state.items,
|
||||||
|
isPinnedOnly = state.isPinnedOnly,
|
||||||
contentPadding = paddingValues,
|
contentPadding = paddingValues,
|
||||||
getManga = getManga,
|
getManga = getManga,
|
||||||
onClickSource = onClickSource,
|
onClickSource = onClickSource,
|
||||||
@ -57,12 +61,20 @@ fun MigrateSearchScreen(
|
|||||||
fun MigrateSearchContent(
|
fun MigrateSearchContent(
|
||||||
sourceId: Long,
|
sourceId: Long,
|
||||||
items: Map<CatalogueSource, SearchItemResult>,
|
items: Map<CatalogueSource, SearchItemResult>,
|
||||||
|
isPinnedOnly: Boolean,
|
||||||
contentPadding: PaddingValues,
|
contentPadding: PaddingValues,
|
||||||
getManga: @Composable (CatalogueSource, Manga) -> State<Manga>,
|
getManga: @Composable (CatalogueSource, Manga) -> State<Manga>,
|
||||||
onClickSource: (CatalogueSource) -> Unit,
|
onClickSource: (CatalogueSource) -> Unit,
|
||||||
onClickItem: (Manga) -> Unit,
|
onClickItem: (Manga) -> Unit,
|
||||||
onLongClickItem: (Manga) -> Unit,
|
onLongClickItem: (Manga) -> Unit,
|
||||||
) {
|
) {
|
||||||
|
if (items.isEmpty() && isPinnedOnly) {
|
||||||
|
EmptyScreen(
|
||||||
|
message = stringResource(R.string.no_pinned_sources),
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
LazyColumn(
|
LazyColumn(
|
||||||
contentPadding = contentPadding,
|
contentPadding = contentPadding,
|
||||||
) {
|
) {
|
||||||
|
@ -22,7 +22,11 @@ class MigrateSearchScreenModel(
|
|||||||
private val sourcePreferences: SourcePreferences = Injekt.get(),
|
private val sourcePreferences: SourcePreferences = Injekt.get(),
|
||||||
private val sourceManager: SourceManager = Injekt.get(),
|
private val sourceManager: SourceManager = Injekt.get(),
|
||||||
private val getManga: GetManga = Injekt.get(),
|
private val getManga: GetManga = Injekt.get(),
|
||||||
) : SearchScreenModel<MigrateSearchState>(MigrateSearchState()) {
|
) : SearchScreenModel<MigrateSearchState>(
|
||||||
|
MigrateSearchState(
|
||||||
|
isPinnedOnly = sourcePreferences.searchPinnedSourcesOnly().get(),
|
||||||
|
),
|
||||||
|
) {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
extensionFilter = initialExtensionFilter
|
extensionFilter = initialExtensionFilter
|
||||||
@ -84,6 +88,7 @@ data class MigrateSearchState(
|
|||||||
val manga: Manga? = null,
|
val manga: Manga? = null,
|
||||||
val searchQuery: String? = null,
|
val searchQuery: String? = null,
|
||||||
val items: Map<CatalogueSource, SearchItemResult> = emptyMap(),
|
val items: Map<CatalogueSource, SearchItemResult> = emptyMap(),
|
||||||
|
val isPinnedOnly: Boolean,
|
||||||
val dialog: MigrateSearchDialog? = null,
|
val dialog: MigrateSearchDialog? = null,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
@ -15,7 +15,12 @@ class GlobalSearchScreenModel(
|
|||||||
preferences: BasePreferences = Injekt.get(),
|
preferences: BasePreferences = Injekt.get(),
|
||||||
private val sourcePreferences: SourcePreferences = Injekt.get(),
|
private val sourcePreferences: SourcePreferences = Injekt.get(),
|
||||||
private val sourceManager: SourceManager = 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 incognitoMode = preferences.incognitoMode()
|
||||||
val lastUsedSourceId = sourcePreferences.lastUsedSource()
|
val lastUsedSourceId = sourcePreferences.lastUsedSource()
|
||||||
@ -59,6 +64,7 @@ class GlobalSearchScreenModel(
|
|||||||
data class GlobalSearchState(
|
data class GlobalSearchState(
|
||||||
val searchQuery: String? = null,
|
val searchQuery: String? = null,
|
||||||
val items: Map<CatalogueSource, SearchItemResult> = emptyMap(),
|
val items: Map<CatalogueSource, SearchItemResult> = emptyMap(),
|
||||||
|
val isPinnedOnly: Boolean,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
val progress: Int = items.count { it.value !is SearchItemResult.Loading }
|
val progress: Int = items.count { it.value !is SearchItemResult.Loading }
|
||||||
|
Loading…
Reference in New Issue
Block a user