mirror of
https://github.com/Suwayomi/TachideskJUI.git
synced 2025-12-10 14:52:03 +01:00
Dont use a advanced handler for sources with thin screens
This commit is contained in:
@@ -32,12 +32,18 @@ class SourceScreen(val source: Source) : Screen {
|
||||
val filterVM = viewModel {
|
||||
instantiate<SourceFiltersViewModel>(SourceFiltersViewModel.Params(source.id))
|
||||
}
|
||||
val navigator = LocalNavigator.currentOrThrow
|
||||
val sourcesNavigator = LocalSourcesNavigator.current
|
||||
val navigator = LocalNavigator.currentOrThrow
|
||||
SourceScreenContent(
|
||||
source = source,
|
||||
onMangaClick = { navigator push MangaScreen(it) },
|
||||
onCloseSourceTabClick = sourcesNavigator::remove,
|
||||
onCloseSourceTabClick = if (sourcesNavigator != null) {
|
||||
{ sourcesNavigator.remove(it) }
|
||||
} else {
|
||||
{
|
||||
navigator.pop()
|
||||
}
|
||||
},
|
||||
onSourceSettingsClick = { navigator push SourceSettingsScreen(it) },
|
||||
displayMode = sourceVM.displayMode.collectAsState().value,
|
||||
gridColumns = sourceVM.gridColumns.collectAsState().value,
|
||||
|
||||
@@ -58,18 +58,19 @@ fun SourcesMenu(
|
||||
closeTab: (Source) -> Unit
|
||||
) {
|
||||
val homeScreen = remember { SourceHomeScreen() }
|
||||
SourcesNavigator(
|
||||
homeScreen,
|
||||
removeSource = closeTab,
|
||||
selectSource = selectTab
|
||||
) { navigator ->
|
||||
LaunchedEffect(selectedSourceTab) {
|
||||
navigator.current = if (selectedSourceTab == null) {
|
||||
homeScreen
|
||||
} else SourceScreen(selectedSourceTab)
|
||||
}
|
||||
BoxWithConstraints {
|
||||
if (maxWidth > 720.dp) {
|
||||
BoxWithConstraints {
|
||||
if (maxWidth > 720.dp) {
|
||||
SourcesNavigator(
|
||||
homeScreen,
|
||||
removeSource = closeTab,
|
||||
selectSource = selectTab
|
||||
) { navigator ->
|
||||
LaunchedEffect(selectedSourceTab) {
|
||||
navigator.current = if (selectedSourceTab == null) {
|
||||
homeScreen
|
||||
} else SourceScreen(selectedSourceTab)
|
||||
}
|
||||
|
||||
Row {
|
||||
SourcesSideMenu(
|
||||
sourceTabs = sourceTabs,
|
||||
@@ -82,9 +83,9 @@ fun SourcesMenu(
|
||||
|
||||
CurrentSource()
|
||||
}
|
||||
} else {
|
||||
CurrentSource()
|
||||
}
|
||||
} else {
|
||||
homeScreen.Content()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,11 +16,12 @@ import ca.gosyer.data.models.Source
|
||||
import ca.gosyer.ui.sources.browse.SourceScreen
|
||||
import ca.gosyer.ui.sources.home.SourceHomeScreen
|
||||
import cafe.adriel.voyager.navigator.Navigator
|
||||
import cafe.adriel.voyager.navigator.currentOrThrow
|
||||
|
||||
typealias SourcesNavigatorContent = @Composable (sourcesNavigator: SourcesNavigator) -> Unit
|
||||
|
||||
val LocalSourcesNavigator: ProvidableCompositionLocal<SourcesNavigator> =
|
||||
staticCompositionLocalOf { error("SourcesNavigator not initialized") }
|
||||
val LocalSourcesNavigator: ProvidableCompositionLocal<SourcesNavigator?> =
|
||||
staticCompositionLocalOf { null }
|
||||
|
||||
@Composable
|
||||
fun SourcesNavigator(
|
||||
@@ -66,7 +67,7 @@ class SourcesNavigator internal constructor(
|
||||
|
||||
@Composable
|
||||
fun CurrentSource() {
|
||||
val sourcesNavigator = LocalSourcesNavigator.current
|
||||
val sourcesNavigator = LocalSourcesNavigator.currentOrThrow
|
||||
val currentSource = sourcesNavigator.current
|
||||
|
||||
sourcesNavigator.stateHolder.SaveableStateProvider(currentSource.key) {
|
||||
|
||||
@@ -8,12 +8,15 @@ package ca.gosyer.ui.sources.home
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import ca.gosyer.ui.sources.browse.SourceScreen
|
||||
import ca.gosyer.ui.sources.components.LocalSourcesNavigator
|
||||
import ca.gosyer.ui.sources.home.components.SourceHomeScreenContent
|
||||
import ca.gosyer.uicore.vm.viewModel
|
||||
import cafe.adriel.voyager.core.screen.Screen
|
||||
import cafe.adriel.voyager.core.screen.ScreenKey
|
||||
import cafe.adriel.voyager.core.screen.uniqueScreenKey
|
||||
import cafe.adriel.voyager.navigator.LocalNavigator
|
||||
import cafe.adriel.voyager.navigator.currentOrThrow
|
||||
|
||||
class SourceHomeScreen : Screen {
|
||||
|
||||
@@ -23,8 +26,13 @@ class SourceHomeScreen : Screen {
|
||||
override fun Content() {
|
||||
val vm = viewModel<SourceHomeScreenViewModel>()
|
||||
val sourcesNavigator = LocalSourcesNavigator.current
|
||||
val navigator = LocalNavigator.currentOrThrow
|
||||
SourceHomeScreenContent(
|
||||
onAddSource = sourcesNavigator::select,
|
||||
onAddSource = if (sourcesNavigator != null) {
|
||||
sourcesNavigator::select
|
||||
} else {
|
||||
{ navigator push SourceScreen(it) }
|
||||
},
|
||||
isLoading = vm.isLoading.collectAsState().value,
|
||||
sources = vm.sources.collectAsState().value,
|
||||
languages = vm.languages.collectAsState().value,
|
||||
|
||||
Reference in New Issue
Block a user