|
@@ -0,0 +1,59 @@
|
|
|
+package eu.kanade.tachiyomi.ui.deeplink
|
|
|
+
|
|
|
+import androidx.compose.foundation.layout.padding
|
|
|
+import androidx.compose.runtime.Composable
|
|
|
+import androidx.compose.runtime.collectAsState
|
|
|
+import androidx.compose.runtime.getValue
|
|
|
+import androidx.compose.ui.Modifier
|
|
|
+import androidx.compose.ui.res.stringResource
|
|
|
+import cafe.adriel.voyager.core.model.rememberScreenModel
|
|
|
+import cafe.adriel.voyager.navigator.LocalNavigator
|
|
|
+import cafe.adriel.voyager.navigator.currentOrThrow
|
|
|
+import eu.kanade.presentation.components.AppBar
|
|
|
+import eu.kanade.presentation.util.Screen
|
|
|
+import eu.kanade.tachiyomi.R
|
|
|
+import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchScreen
|
|
|
+import eu.kanade.tachiyomi.ui.manga.MangaScreen
|
|
|
+import tachiyomi.presentation.core.components.material.Scaffold
|
|
|
+import tachiyomi.presentation.core.screens.LoadingScreen
|
|
|
+
|
|
|
+class DeepLinkScreen(
|
|
|
+ val query: String = "",
|
|
|
+) : Screen() {
|
|
|
+
|
|
|
+ @Composable
|
|
|
+ override fun Content() {
|
|
|
+ val navigator = LocalNavigator.currentOrThrow
|
|
|
+
|
|
|
+ val screenModel = rememberScreenModel {
|
|
|
+ DeepLinkScreenModel(query = query)
|
|
|
+ }
|
|
|
+ val state by screenModel.state.collectAsState()
|
|
|
+ Scaffold(
|
|
|
+ topBar = { scrollBehavior ->
|
|
|
+ AppBar(
|
|
|
+ title = stringResource(R.string.action_search_hint),
|
|
|
+ navigateUp = navigator::pop,
|
|
|
+ scrollBehavior = scrollBehavior,
|
|
|
+ )
|
|
|
+ },
|
|
|
+ ) { contentPadding ->
|
|
|
+ when (state) {
|
|
|
+ is DeepLinkScreenModel.State.Loading -> {
|
|
|
+ LoadingScreen(Modifier.padding(contentPadding))
|
|
|
+ }
|
|
|
+ is DeepLinkScreenModel.State.NoResults -> {
|
|
|
+ navigator.replace(GlobalSearchScreen(query))
|
|
|
+ }
|
|
|
+ is DeepLinkScreenModel.State.Result -> {
|
|
|
+ navigator.replace(
|
|
|
+ MangaScreen(
|
|
|
+ (state as DeepLinkScreenModel.State.Result).manga.id,
|
|
|
+ true,
|
|
|
+ ),
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|