Move SmartSearchConfig around
This commit is contained in:
parent
8e2f5aa495
commit
07c7ec972d
@ -1,23 +0,0 @@
|
|||||||
package eu.kanade.tachiyomi.ui.browse.source
|
|
||||||
|
|
||||||
import android.os.Bundle
|
|
||||||
import androidx.compose.runtime.Composable
|
|
||||||
import cafe.adriel.voyager.navigator.Navigator
|
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.BasicFullComposeController
|
|
||||||
import eu.kanade.tachiyomi.util.system.getSerializableCompat
|
|
||||||
import java.io.Serializable
|
|
||||||
|
|
||||||
class SourcesController(bundle: Bundle? = null) : BasicFullComposeController(bundle) {
|
|
||||||
private val smartSearchConfig = args.getSerializableCompat<SmartSearchConfig>(SMART_SEARCH_CONFIG)
|
|
||||||
|
|
||||||
@Composable
|
|
||||||
override fun ComposeContent() {
|
|
||||||
Navigator(screen = SourcesScreen(smartSearchConfig))
|
|
||||||
}
|
|
||||||
|
|
||||||
data class SmartSearchConfig(val origTitle: String, val origMangaId: Long? = null) : Serializable
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
const val SMART_SEARCH_CONFIG = "SMART_SEARCH_CONFIG"
|
|
||||||
}
|
|
||||||
}
|
|
@ -3,11 +3,14 @@ package eu.kanade.tachiyomi.ui.browse.source
|
|||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import cafe.adriel.voyager.core.screen.Screen
|
import cafe.adriel.voyager.core.screen.Screen
|
||||||
import eu.kanade.presentation.browse.BrowseTabWrapper
|
import eu.kanade.presentation.browse.BrowseTabWrapper
|
||||||
|
import java.io.Serializable
|
||||||
|
|
||||||
class SourcesScreen(private val smartSearchConfig: SourcesController.SmartSearchConfig?) : Screen {
|
class SourcesScreen(private val smartSearchConfig: SmartSearchConfig?) : Screen {
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
override fun Content() {
|
override fun Content() {
|
||||||
BrowseTabWrapper(sourcesTab(smartSearchConfig))
|
BrowseTabWrapper(sourcesTab(smartSearchConfig))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data class SmartSearchConfig(val origTitle: String, val origMangaId: Long? = null) : Serializable
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@ class SourcesScreenModel(
|
|||||||
private val getShowLatest: GetShowLatest = Injekt.get(),
|
private val getShowLatest: GetShowLatest = Injekt.get(),
|
||||||
private val toggleExcludeFromDataSaver: ToggleExcludeFromDataSaver = Injekt.get(),
|
private val toggleExcludeFromDataSaver: ToggleExcludeFromDataSaver = Injekt.get(),
|
||||||
private val setSourceCategories: SetSourceCategories = Injekt.get(),
|
private val setSourceCategories: SetSourceCategories = Injekt.get(),
|
||||||
val smartSearchConfig: SourcesController.SmartSearchConfig?,
|
val smartSearchConfig: SourcesScreen.SmartSearchConfig?,
|
||||||
// SY <--
|
// SY <--
|
||||||
) : StateScreenModel<SourcesState>(SourcesState()) {
|
) : StateScreenModel<SourcesState>(SourcesState()) {
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ import eu.kanade.presentation.components.TabContent
|
|||||||
import eu.kanade.presentation.util.LocalRouter
|
import eu.kanade.presentation.util.LocalRouter
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.pushController
|
import eu.kanade.tachiyomi.ui.base.controller.pushController
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.SourcesController.SmartSearchConfig
|
import eu.kanade.tachiyomi.ui.browse.source.SourcesScreen.SmartSearchConfig
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceController
|
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceController
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.feed.SourceFeedController
|
import eu.kanade.tachiyomi.ui.browse.source.feed.SourceFeedController
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchController
|
import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchController
|
||||||
|
@ -8,7 +8,7 @@ import cafe.adriel.voyager.navigator.Navigator
|
|||||||
import eu.kanade.tachiyomi.source.CatalogueSource
|
import eu.kanade.tachiyomi.source.CatalogueSource
|
||||||
import eu.kanade.tachiyomi.source.Source
|
import eu.kanade.tachiyomi.source.Source
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.BasicFullComposeController
|
import eu.kanade.tachiyomi.ui.base.controller.BasicFullComposeController
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.SourcesController
|
import eu.kanade.tachiyomi.ui.browse.source.SourcesScreen
|
||||||
import kotlinx.coroutines.channels.Channel
|
import kotlinx.coroutines.channels.Channel
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
import kotlinx.coroutines.flow.consumeAsFlow
|
import kotlinx.coroutines.flow.consumeAsFlow
|
||||||
@ -20,7 +20,7 @@ class BrowseSourceController(bundle: Bundle) : BasicFullComposeController(bundle
|
|||||||
sourceId: Long,
|
sourceId: Long,
|
||||||
query: String? = null,
|
query: String? = null,
|
||||||
// SY -->
|
// SY -->
|
||||||
smartSearchConfig: SourcesController.SmartSearchConfig? = null,
|
smartSearchConfig: SourcesScreen.SmartSearchConfig? = null,
|
||||||
savedSearch: Long? = null,
|
savedSearch: Long? = null,
|
||||||
filterList: String? = null,
|
filterList: String? = null,
|
||||||
// SY <--
|
// SY <--
|
||||||
@ -51,7 +51,7 @@ class BrowseSourceController(bundle: Bundle) : BasicFullComposeController(bundle
|
|||||||
source: CatalogueSource,
|
source: CatalogueSource,
|
||||||
query: String? = null,
|
query: String? = null,
|
||||||
// SY -->
|
// SY -->
|
||||||
smartSearchConfig: SourcesController.SmartSearchConfig? = null,
|
smartSearchConfig: SourcesScreen.SmartSearchConfig? = null,
|
||||||
savedSearch: Long? = null,
|
savedSearch: Long? = null,
|
||||||
filterList: String? = null,
|
filterList: String? = null,
|
||||||
// SY <--
|
// SY <--
|
||||||
@ -67,7 +67,7 @@ class BrowseSourceController(bundle: Bundle) : BasicFullComposeController(bundle
|
|||||||
source: Source,
|
source: Source,
|
||||||
query: String? = null,
|
query: String? = null,
|
||||||
// SY -->
|
// SY -->
|
||||||
smartSearchConfig: SourcesController.SmartSearchConfig? = null,
|
smartSearchConfig: SourcesScreen.SmartSearchConfig? = null,
|
||||||
savedSearch: Long? = null,
|
savedSearch: Long? = null,
|
||||||
filterList: String? = null,
|
filterList: String? = null,
|
||||||
// SY <--
|
// SY <--
|
||||||
|
@ -5,7 +5,7 @@ import androidx.compose.runtime.Composable
|
|||||||
import androidx.core.os.bundleOf
|
import androidx.core.os.bundleOf
|
||||||
import cafe.adriel.voyager.navigator.Navigator
|
import cafe.adriel.voyager.navigator.Navigator
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.BasicFullComposeController
|
import eu.kanade.tachiyomi.ui.base.controller.BasicFullComposeController
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.SourcesController
|
import eu.kanade.tachiyomi.ui.browse.source.SourcesScreen
|
||||||
import eu.kanade.tachiyomi.util.system.getSerializableCompat
|
import eu.kanade.tachiyomi.util.system.getSerializableCompat
|
||||||
|
|
||||||
class MangaController : BasicFullComposeController {
|
class MangaController : BasicFullComposeController {
|
||||||
@ -16,7 +16,7 @@ class MangaController : BasicFullComposeController {
|
|||||||
constructor(
|
constructor(
|
||||||
mangaId: Long,
|
mangaId: Long,
|
||||||
fromSource: Boolean = false,
|
fromSource: Boolean = false,
|
||||||
smartSearchConfig: SourcesController.SmartSearchConfig? = null,
|
smartSearchConfig: SourcesScreen.SmartSearchConfig? = null,
|
||||||
) : super(bundleOf(MANGA_EXTRA to mangaId, FROM_SOURCE_EXTRA to fromSource, SMART_SEARCH_CONFIG_EXTRA to smartSearchConfig))
|
) : super(bundleOf(MANGA_EXTRA to mangaId, FROM_SOURCE_EXTRA to fromSource, SMART_SEARCH_CONFIG_EXTRA to smartSearchConfig))
|
||||||
|
|
||||||
// SY -->
|
// SY -->
|
||||||
@ -32,7 +32,7 @@ class MangaController : BasicFullComposeController {
|
|||||||
get() = args.getBoolean(FROM_SOURCE_EXTRA)
|
get() = args.getBoolean(FROM_SOURCE_EXTRA)
|
||||||
|
|
||||||
// SY -->
|
// SY -->
|
||||||
val smartSearchConfig: SourcesController.SmartSearchConfig?
|
val smartSearchConfig: SourcesScreen.SmartSearchConfig?
|
||||||
get() = args.getSerializableCompat(SMART_SEARCH_CONFIG_EXTRA)
|
get() = args.getSerializableCompat(SMART_SEARCH_CONFIG_EXTRA)
|
||||||
// SY <--
|
// SY <--
|
||||||
|
|
||||||
|
@ -58,7 +58,6 @@ import eu.kanade.tachiyomi.source.online.HttpSource
|
|||||||
import eu.kanade.tachiyomi.ui.base.controller.pushController
|
import eu.kanade.tachiyomi.ui.base.controller.pushController
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
|
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
|
||||||
import eu.kanade.tachiyomi.ui.browse.migration.advanced.design.PreMigrationScreen
|
import eu.kanade.tachiyomi.ui.browse.migration.advanced.design.PreMigrationScreen
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.SourcesController
|
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.SourcesScreen
|
import eu.kanade.tachiyomi.ui.browse.source.SourcesScreen
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceController
|
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceController
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.feed.SourceFeedController
|
import eu.kanade.tachiyomi.ui.browse.source.feed.SourceFeedController
|
||||||
@ -96,7 +95,7 @@ import uy.kohesive.injekt.api.get
|
|||||||
class MangaScreen(
|
class MangaScreen(
|
||||||
private val mangaId: Long,
|
private val mangaId: Long,
|
||||||
private val fromSource: Boolean = false,
|
private val fromSource: Boolean = false,
|
||||||
private val smartSearchConfig: SourcesController.SmartSearchConfig? = null,
|
private val smartSearchConfig: SourcesScreen.SmartSearchConfig? = null,
|
||||||
) : Screen {
|
) : Screen {
|
||||||
|
|
||||||
override val key = uniqueScreenKey
|
override val key = uniqueScreenKey
|
||||||
@ -497,7 +496,7 @@ class MangaScreen(
|
|||||||
|
|
||||||
// EXH -->
|
// EXH -->
|
||||||
private fun openSmartSearch(navigator: Navigator, manga: Manga) {
|
private fun openSmartSearch(navigator: Navigator, manga: Manga) {
|
||||||
val smartSearchConfig = SourcesController.SmartSearchConfig(manga.title, manga.id)
|
val smartSearchConfig = SourcesScreen.SmartSearchConfig(manga.title, manga.id)
|
||||||
|
|
||||||
navigator.push(SourcesScreen(smartSearchConfig))
|
navigator.push(SourcesScreen(smartSearchConfig))
|
||||||
}
|
}
|
||||||
|
@ -7,20 +7,18 @@ import androidx.compose.runtime.collectAsState
|
|||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.platform.LocalConfiguration
|
import androidx.compose.ui.platform.LocalConfiguration
|
||||||
import androidx.core.os.bundleOf
|
|
||||||
import androidx.paging.compose.collectAsLazyPagingItems
|
import androidx.paging.compose.collectAsLazyPagingItems
|
||||||
import cafe.adriel.voyager.core.model.rememberScreenModel
|
import cafe.adriel.voyager.core.model.rememberScreenModel
|
||||||
import cafe.adriel.voyager.core.screen.Screen
|
import cafe.adriel.voyager.core.screen.Screen
|
||||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||||
|
import cafe.adriel.voyager.navigator.Navigator
|
||||||
import cafe.adriel.voyager.navigator.currentOrThrow
|
import cafe.adriel.voyager.navigator.currentOrThrow
|
||||||
import com.bluelinelabs.conductor.Router
|
|
||||||
import eu.kanade.domain.manga.model.Manga
|
import eu.kanade.domain.manga.model.Manga
|
||||||
import eu.kanade.presentation.browse.BrowseSourceContent
|
import eu.kanade.presentation.browse.BrowseSourceContent
|
||||||
import eu.kanade.presentation.browse.components.BrowseSourceSimpleToolbar
|
import eu.kanade.presentation.browse.components.BrowseSourceSimpleToolbar
|
||||||
import eu.kanade.presentation.components.Scaffold
|
import eu.kanade.presentation.components.Scaffold
|
||||||
import eu.kanade.presentation.util.LocalRouter
|
import eu.kanade.presentation.util.LocalRouter
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.pushController
|
import eu.kanade.tachiyomi.ui.browse.source.SourcesScreen
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.SourcesController
|
|
||||||
|
|
||||||
class RecommendsScreen(val mangaId: Long, val sourceId: Long) : Screen {
|
class RecommendsScreen(val mangaId: Long, val sourceId: Long) : Screen {
|
||||||
|
|
||||||
@ -32,7 +30,7 @@ class RecommendsScreen(val mangaId: Long, val sourceId: Long) : Screen {
|
|||||||
val navigator = LocalNavigator.currentOrThrow
|
val navigator = LocalNavigator.currentOrThrow
|
||||||
|
|
||||||
val onMangaClick: (Manga) -> Unit = { manga ->
|
val onMangaClick: (Manga) -> Unit = { manga ->
|
||||||
openSmartSearch(router, manga.ogTitle)
|
openSmartSearch(navigator, manga.ogTitle)
|
||||||
}
|
}
|
||||||
|
|
||||||
val snackbarHostState = remember { SnackbarHostState() }
|
val snackbarHostState = remember { SnackbarHostState() }
|
||||||
@ -79,14 +77,8 @@ class RecommendsScreen(val mangaId: Long, val sourceId: Long) : Screen {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun openSmartSearch(router: Router, title: String) {
|
private fun openSmartSearch(navigator: Navigator, title: String) {
|
||||||
val smartSearchConfig = SourcesController.SmartSearchConfig(title)
|
val smartSearchConfig = SourcesScreen.SmartSearchConfig(title)
|
||||||
router.pushController(
|
navigator.push(SourcesScreen(smartSearchConfig))
|
||||||
SourcesController(
|
|
||||||
bundleOf(
|
|
||||||
SourcesController.SMART_SEARCH_CONFIG to smartSearchConfig,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,14 +5,14 @@ import androidx.compose.runtime.Composable
|
|||||||
import androidx.core.os.bundleOf
|
import androidx.core.os.bundleOf
|
||||||
import cafe.adriel.voyager.navigator.Navigator
|
import cafe.adriel.voyager.navigator.Navigator
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.BasicFullComposeController
|
import eu.kanade.tachiyomi.ui.base.controller.BasicFullComposeController
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.SourcesController
|
import eu.kanade.tachiyomi.ui.browse.source.SourcesScreen
|
||||||
import eu.kanade.tachiyomi.util.system.getSerializableCompat
|
import eu.kanade.tachiyomi.util.system.getSerializableCompat
|
||||||
|
|
||||||
class SmartSearchController(bundle: Bundle) : BasicFullComposeController() {
|
class SmartSearchController(bundle: Bundle) : BasicFullComposeController() {
|
||||||
private val sourceId = bundle.getLong(ARG_SOURCE_ID, -1)
|
private val sourceId = bundle.getLong(ARG_SOURCE_ID, -1)
|
||||||
private val smartSearchConfig = bundle.getSerializableCompat<SourcesController.SmartSearchConfig>(ARG_SMART_SEARCH_CONFIG)!!
|
private val smartSearchConfig = bundle.getSerializableCompat<SourcesScreen.SmartSearchConfig>(ARG_SMART_SEARCH_CONFIG)!!
|
||||||
|
|
||||||
constructor(sourceId: Long, smartSearchConfig: SourcesController.SmartSearchConfig) : this(
|
constructor(sourceId: Long, smartSearchConfig: SourcesScreen.SmartSearchConfig) : this(
|
||||||
bundleOf(
|
bundleOf(
|
||||||
ARG_SOURCE_ID to sourceId,
|
ARG_SOURCE_ID to sourceId,
|
||||||
ARG_SMART_SEARCH_CONFIG to smartSearchConfig,
|
ARG_SMART_SEARCH_CONFIG to smartSearchConfig,
|
||||||
|
@ -25,12 +25,12 @@ import eu.kanade.presentation.components.Scaffold
|
|||||||
import eu.kanade.presentation.util.LocalRouter
|
import eu.kanade.presentation.util.LocalRouter
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
|
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.SourcesController
|
import eu.kanade.tachiyomi.ui.browse.source.SourcesScreen
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceController
|
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceController
|
||||||
import eu.kanade.tachiyomi.ui.manga.MangaController
|
import eu.kanade.tachiyomi.ui.manga.MangaController
|
||||||
import eu.kanade.tachiyomi.util.system.toast
|
import eu.kanade.tachiyomi.util.system.toast
|
||||||
|
|
||||||
class SmartSearchScreen(private val sourceId: Long, private val smartSearchConfig: SourcesController.SmartSearchConfig) : Screen {
|
class SmartSearchScreen(private val sourceId: Long, private val smartSearchConfig: SourcesScreen.SmartSearchConfig) : Screen {
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
override fun Content() {
|
override fun Content() {
|
||||||
|
@ -6,7 +6,7 @@ import eu.kanade.domain.manga.interactor.NetworkToLocalManga
|
|||||||
import eu.kanade.domain.manga.model.Manga
|
import eu.kanade.domain.manga.model.Manga
|
||||||
import eu.kanade.tachiyomi.source.CatalogueSource
|
import eu.kanade.tachiyomi.source.CatalogueSource
|
||||||
import eu.kanade.tachiyomi.source.SourceManager
|
import eu.kanade.tachiyomi.source.SourceManager
|
||||||
import eu.kanade.tachiyomi.ui.browse.source.SourcesController
|
import eu.kanade.tachiyomi.ui.browse.source.SourcesScreen
|
||||||
import eu.kanade.tachiyomi.util.lang.launchIO
|
import eu.kanade.tachiyomi.util.lang.launchIO
|
||||||
import exh.smartsearch.SmartSearchEngine
|
import exh.smartsearch.SmartSearchEngine
|
||||||
import kotlinx.coroutines.CancellationException
|
import kotlinx.coroutines.CancellationException
|
||||||
@ -15,7 +15,7 @@ import uy.kohesive.injekt.api.get
|
|||||||
|
|
||||||
class SmartSearchScreenModel(
|
class SmartSearchScreenModel(
|
||||||
private val sourceId: Long,
|
private val sourceId: Long,
|
||||||
private val config: SourcesController.SmartSearchConfig,
|
private val config: SourcesScreen.SmartSearchConfig,
|
||||||
private val networkToLocalManga: NetworkToLocalManga = Injekt.get(),
|
private val networkToLocalManga: NetworkToLocalManga = Injekt.get(),
|
||||||
private val sourceManager: SourceManager = Injekt.get(),
|
private val sourceManager: SourceManager = Injekt.get(),
|
||||||
) : StateScreenModel<SmartSearchScreenModel.SearchResults?>(null) {
|
) : StateScreenModel<SmartSearchScreenModel.SearchResults?>(null) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user