From ab180b66dc8de2cac52c44d0c5b1c0d68a3e3309 Mon Sep 17 00:00:00 2001 From: Ahmad Ansori Palembani Date: Sat, 1 Jun 2024 09:00:50 +0700 Subject: [PATCH] refactor: Use CompositionLocal --- .../dev/yokai/presentation/settings/ComposableSettings.kt | 3 --- .../yokai/presentation/settings/SettingsCommonWidget.kt | 6 +++++- .../main/java/eu/kanade/tachiyomi/util/compose/Locals.kt | 8 ++++++++ 3 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/eu/kanade/tachiyomi/util/compose/Locals.kt diff --git a/app/src/main/java/dev/yokai/presentation/settings/ComposableSettings.kt b/app/src/main/java/dev/yokai/presentation/settings/ComposableSettings.kt index 3a75470698..f1e9ae593d 100644 --- a/app/src/main/java/dev/yokai/presentation/settings/ComposableSettings.kt +++ b/app/src/main/java/dev/yokai/presentation/settings/ComposableSettings.kt @@ -8,8 +8,6 @@ import androidx.compose.ui.res.stringResource import dev.yokai.presentation.component.preference.Preference interface ComposableSettings { - fun getOnBackPress(): () -> Unit = {} - @Composable @ReadOnlyComposable @StringRes @@ -26,7 +24,6 @@ interface ComposableSettings { SettingsScaffold( title = stringResource(getTitleRes()), itemsProvider = { getPreferences() }, - onBackPress = getOnBackPress(), ) } } diff --git a/app/src/main/java/dev/yokai/presentation/settings/SettingsCommonWidget.kt b/app/src/main/java/dev/yokai/presentation/settings/SettingsCommonWidget.kt index 48ec56a0dc..689959337c 100644 --- a/app/src/main/java/dev/yokai/presentation/settings/SettingsCommonWidget.kt +++ b/app/src/main/java/dev/yokai/presentation/settings/SettingsCommonWidget.kt @@ -2,6 +2,7 @@ package dev.yokai.presentation.settings import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.items @@ -21,23 +22,26 @@ import dev.yokai.presentation.component.preference.PreferenceItem import dev.yokai.presentation.component.preference.widget.PreferenceGroupHeader import eu.kanade.tachiyomi.core.preference.collectAsState import eu.kanade.tachiyomi.data.preference.PreferencesHelper +import eu.kanade.tachiyomi.util.compose.LocalBackPress import uy.kohesive.injekt.injectLazy @Composable fun SettingsScaffold( title: String, appBarType: AppBarType? = null, - onBackPress: (() -> Unit)? = null, + appBarActions: @Composable RowScope.() -> Unit = {}, itemsProvider: @Composable () -> List, ) { val preferences: PreferencesHelper by injectLazy() val useLargeAppBar by preferences.useLargeToolbar().collectAsState() val listState = rememberLazyListState() + val onBackPress = LocalBackPress.current YokaiScaffold( onNavigationIconClicked = onBackPress ?: {}, title = title, appBarType = appBarType ?: if (useLargeAppBar) AppBarType.LARGE else AppBarType.SMALL, + actions = appBarActions, scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior( state = rememberTopAppBarState(), canScroll = { listState.firstVisibleItemIndex > 0 || listState.firstVisibleItemScrollOffset > 0 }, diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/compose/Locals.kt b/app/src/main/java/eu/kanade/tachiyomi/util/compose/Locals.kt new file mode 100644 index 0000000000..011857d38b --- /dev/null +++ b/app/src/main/java/eu/kanade/tachiyomi/util/compose/Locals.kt @@ -0,0 +1,8 @@ +package eu.kanade.tachiyomi.util.compose + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.ProvidableCompositionLocal +import androidx.compose.runtime.staticCompositionLocalOf + +val LocalBackPress: ProvidableCompositionLocal<(() -> Unit)?> = staticCompositionLocalOf { null } +val LocalAlertDialog: ProvidableCompositionLocal<(@Composable () -> Unit)?> = staticCompositionLocalOf { null }