From 7286c81885e56c7d19828f8d6ef3ec9cda96563a Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Thu, 24 Apr 2025 22:58:05 +0800 Subject: [PATCH] Address deprecations --- .../main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt | 8 ++++---- .../kotlin/com/hippo/ehviewer/ui/login/SignInScreen.kt | 8 ++++---- .../hippo/ehviewer/ui/screen/GalleryDetailContent.kt | 8 ++++---- .../com/hippo/ehviewer/ui/tools/ViewModelState.kt | 10 +++++----- .../tools/{CompositionLocals.kt => WindowSizeClass.kt} | 4 ++++ .../eu/kanade/tachiyomi/ui/reader/ChapterNavigator.kt | 5 ++--- 6 files changed, 23 insertions(+), 20 deletions(-) rename app/src/main/kotlin/com/hippo/ehviewer/ui/tools/{CompositionLocals.kt => WindowSizeClass.kt} (58%) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt index 865b79fb8..fa55368ff 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt @@ -79,7 +79,7 @@ import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.State import androidx.compose.runtime.collectAsState import androidx.compose.runtime.compositionLocalOf -import androidx.compose.runtime.currentCompositeKeyHash +import androidx.compose.runtime.currentCompositeKeyHashCode import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableFloatStateOf import androidx.compose.runtime.mutableStateListOf @@ -370,7 +370,7 @@ class MainActivity : EhActivity() { onPauseOrDispose { job.cancel() } } val currentDestination by navController.currentDestinationAsState() - val drawerHandle = remember { mutableStateListOf() } + val drawerHandle = remember { mutableStateListOf() } var snackbarFabPadding by remember { mutableStateOf(0.dp) } val drawerEnabled = drawerHandle.isNotEmpty() val density = LocalDensity.current @@ -563,7 +563,7 @@ class MainActivity : EhActivity() { val LocalNavDrawerState = compositionLocalOf { error("CompositionLocal LocalNavDrawerState not present!") } val LocalSideSheetState = compositionLocalOf { error("CompositionLocal LocalSideSheetState not present!") } -val LocalDrawerHandle = compositionLocalOf> { error("CompositionLocal LocalDrawerHandle not present!") } +val LocalDrawerHandle = compositionLocalOf> { error("CompositionLocal LocalDrawerHandle not present!") } val LocalSnackBarHostState = compositionLocalOf { error("CompositionLocal LocalSnackBarHostState not present!") } val LocalSnackBarFabPadding = compositionLocalOf> { error("CompositionLocal LocalSnackBarFabPadding not present!") } val LocalSharedTransitionScope = compositionLocalOf { error("CompositionLocal LocalSharedTransitionScope not present!") } @@ -571,7 +571,7 @@ val LocalSharedTransitionScope = compositionLocalOf { err @Composable fun DrawerHandle(enabled: Boolean) { if (enabled) { - val current = currentCompositeKeyHash + val current = currentCompositeKeyHashCode val handle = LocalDrawerHandle.current DisposableEffect(current) { handle.add(current) diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/login/SignInScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/login/SignInScreen.kt index c8fe6b264..45d172e2b 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/login/SignInScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/login/SignInScreen.kt @@ -56,7 +56,6 @@ import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.text.withStyle import androidx.compose.ui.unit.dp -import androidx.window.core.layout.WindowWidthSizeClass import com.hippo.ehviewer.R import com.hippo.ehviewer.Settings import com.hippo.ehviewer.client.EhEngine @@ -66,6 +65,7 @@ import com.hippo.ehviewer.ui.Screen import com.hippo.ehviewer.ui.destinations.WebViewSignInScreenDestination import com.hippo.ehviewer.ui.openBrowser import com.hippo.ehviewer.ui.tools.LocalWindowSizeClass +import com.hippo.ehviewer.ui.tools.isExpanded import com.hippo.ehviewer.ui.tools.thenIf import com.hippo.ehviewer.util.displayString import com.jamal.composeprefs3.ui.ifTrueThen @@ -173,8 +173,8 @@ fun AnimatedVisibilityScope.SignInScreen(navigator: DestinationsNavigator) = Scr } Box(contentAlignment = Alignment.Center) { - when (windowSizeClass.windowWidthSizeClass) { - WindowWidthSizeClass.COMPACT, WindowWidthSizeClass.MEDIUM -> { + when { + !windowSizeClass.isExpanded -> { Column( modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState()).systemBarsPadding().padding(dimensionResource(id = R.dimen.keyline_margin)), horizontalAlignment = Alignment.CenterHorizontally, @@ -245,7 +245,7 @@ fun AnimatedVisibilityScope.SignInScreen(navigator: DestinationsNavigator) = Scr } } } - WindowWidthSizeClass.EXPANDED -> { + else -> { Row( modifier = Modifier.fillMaxSize().verticalScroll(rememberScrollState()).systemBarsPadding().padding(dimensionResource(id = R.dimen.keyline_margin)), verticalAlignment = Alignment.CenterVertically, diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailContent.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailContent.kt index 36aae4ed7..e8136693f 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailContent.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailContent.kt @@ -62,7 +62,6 @@ import androidx.paging.cachedIn import androidx.paging.compose.LazyPagingItems import androidx.paging.compose.collectAsLazyPagingItems import androidx.paging.compose.itemKey -import androidx.window.core.layout.WindowWidthSizeClass import arrow.core.partially1 import arrow.fx.coroutines.parMap import arrow.fx.coroutines.parZip @@ -129,6 +128,7 @@ import com.hippo.ehviewer.ui.tools.foldToLoadResult import com.hippo.ehviewer.ui.tools.getClippedRefreshKey import com.hippo.ehviewer.ui.tools.getLimit import com.hippo.ehviewer.ui.tools.getOffset +import com.hippo.ehviewer.ui.tools.isExpanded import com.hippo.ehviewer.ui.tools.rememberInVM import com.hippo.ehviewer.util.FavouriteStatusRouter import com.hippo.ehviewer.util.addTextToClipboard @@ -246,8 +246,8 @@ fun GalleryDetailContent( } val previews = galleryDetail?.collectPreviewItems() - when (windowSizeClass.windowWidthSizeClass) { - WindowWidthSizeClass.MEDIUM, WindowWidthSizeClass.COMPACT -> FastScrollLazyVerticalGrid( + when { + !windowSizeClass.isExpanded -> FastScrollLazyVerticalGrid( columns = GridCells.Fixed(thumbColumns), contentPadding = contentPadding, modifier = modifier.padding(horizontal = keylineMargin), @@ -308,7 +308,7 @@ fun GalleryDetailContent( } } - WindowWidthSizeClass.EXPANDED -> FastScrollLazyVerticalGrid( + else -> FastScrollLazyVerticalGrid( columns = GridCells.Fixed(thumbColumns), contentPadding = contentPadding, modifier = modifier.padding(horizontal = keylineMargin), diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/ViewModelState.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/ViewModelState.kt index 8ba407ea1..d04df554e 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/ViewModelState.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/ViewModelState.kt @@ -1,12 +1,12 @@ package com.hippo.ehviewer.ui.tools -import androidx.collection.mutableIntObjectMapOf +import androidx.collection.mutableLongObjectMapOf import androidx.compose.runtime.Composable import androidx.compose.runtime.DisallowComposableCalls import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.MutableState import androidx.compose.runtime.State -import androidx.compose.runtime.currentCompositeKeyHash +import androidx.compose.runtime.currentCompositeKeyHashCode import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -30,14 +30,14 @@ import kotlinx.coroutines.launch inline fun nonNullState(block: MutableState.() -> Unit) = (mutableStateOf(null) as MutableState).apply(block) as State class StateMapViewModel : ViewModel() { - val statesMap = mutableIntObjectMapOf>() + val statesMap = mutableLongObjectMapOf>() } @Composable inline fun rememberInVM( crossinline init: @DisallowComposableCalls ViewModel.() -> T, ) = with(viewModel()) { - val compositeKey = currentCompositeKeyHash + val compositeKey = currentCompositeKeyHashCode remember { val states = statesMap.getOrPut(compositeKey, ::ArrayDeque) states.removeLastOrNull() as T? ?: init() @@ -56,7 +56,7 @@ inline fun rememberInVM( key: K, crossinline init: @DisallowComposableCalls ViewModel.() -> T, ) = with(viewModel()) { - val compositeKey = currentCompositeKeyHash + val compositeKey = currentCompositeKeyHashCode remember(key) { val states = statesMap.getOrPut(compositeKey, ::ArrayDeque) @Suppress("UNCHECKED_CAST") diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/CompositionLocals.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/WindowSizeClass.kt similarity index 58% rename from app/src/main/kotlin/com/hippo/ehviewer/ui/tools/CompositionLocals.kt rename to app/src/main/kotlin/com/hippo/ehviewer/ui/tools/WindowSizeClass.kt index e8abd7bf4..ebfaa37b7 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/CompositionLocals.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/tools/WindowSizeClass.kt @@ -2,5 +2,9 @@ package com.hippo.ehviewer.ui.tools import androidx.compose.runtime.compositionLocalOf import androidx.window.core.layout.WindowSizeClass +import androidx.window.core.layout.WindowSizeClass.Companion.WIDTH_DP_EXPANDED_LOWER_BOUND val LocalWindowSizeClass = compositionLocalOf { error("CompositionLocal LocalWindowSizeClass not present!") } + +val WindowSizeClass.isExpanded + get() = isWidthAtLeastBreakpoint(WIDTH_DP_EXPANDED_LOWER_BOUND) diff --git a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/ChapterNavigator.kt b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/ChapterNavigator.kt index 787ace083..92dbf0f7f 100644 --- a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/ChapterNavigator.kt +++ b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/ChapterNavigator.kt @@ -26,9 +26,9 @@ import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalLayoutDirection import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.dp -import androidx.window.core.layout.WindowWidthSizeClass import com.hippo.ehviewer.ui.tools.HapticFeedbackType import com.hippo.ehviewer.ui.tools.LocalWindowSizeClass +import com.hippo.ehviewer.ui.tools.isExpanded import com.hippo.ehviewer.ui.tools.rememberHapticFeedback import kotlin.math.roundToInt @@ -40,8 +40,7 @@ fun ChapterNavigator( onSliderValueChange: (Int) -> Unit, ) { val windowSizeClass = LocalWindowSizeClass.current - val isTabletUi = windowSizeClass.windowWidthSizeClass == WindowWidthSizeClass.EXPANDED - val horizontalPadding = if (isTabletUi) 24.dp else 16.dp + val horizontalPadding = if (windowSizeClass.isExpanded) 24.dp else 16.dp val layoutDirection = if (isRtl) LayoutDirection.Rtl else LayoutDirection.Ltr val configuration = LocalConfiguration.current val maxTickCount = configuration.screenWidthDp / (SliderDefaults.TickSize.value * 2.5f).roundToInt()