Extract a snackBarPadding Modifier
This commit is contained in:
1 parent
1761493c8e
commit
b2fded76d5
7 files changed
+44
-29
No files matched your search
@@ -360,8 +360,8 @@ class MainActivity : EhActivity() {
|
||||
LocalNavDrawerState provides navDrawerState,
|
||||
LocalSideSheetState provides sideSheetState,
|
||||
LocalDrawerLockHandle provides lockDrawerHandle,
|
||||
LocalSnackbarHostState provides snackbarState,
|
||||
LocalSnackbarFabPadding provides animateDpAsState(snackbarFabPadding, label = "SnackbarFabPadding"),
|
||||
LocalSnackBarHostState provides snackbarState,
|
||||
LocalSnackBarFabPadding provides animateDpAsState(snackbarFabPadding, label = "SnackbarFabPadding"),
|
||||
) {
|
||||
Scaffold(
|
||||
snackbarHost = {
|
||||
@@ -529,8 +529,8 @@ class MainActivity : EhActivity() {
|
||||
val LocalNavDrawerState = compositionLocalOf<DrawerState2> { error("CompositionLocal LocalNavDrawerState not present!") }
|
||||
val LocalSideSheetState = compositionLocalOf<DrawerState2> { error("CompositionLocal LocalSideSheetState not present!") }
|
||||
val LocalDrawerLockHandle = compositionLocalOf<SnapshotStateList<Int>> { error("CompositionLocal LocalDrawerLockHandle not present!") }
|
||||
val LocalSnackbarHostState = compositionLocalOf<SnackbarHostState> { error("CompositionLocal LocalSnackbarHostState not present!") }
|
||||
val LocalSnackbarFabPadding = compositionLocalOf<State<Dp>> { error("CompositionLocal LocalSnackbarFabPadding not present!") }
|
||||
val LocalSnackBarHostState = compositionLocalOf<SnackbarHostState> { error("CompositionLocal LocalSnackBarHostState not present!") }
|
||||
val LocalSnackBarFabPadding = compositionLocalOf<State<Dp>> { error("CompositionLocal LocalSnackBarFabPadding not present!") }
|
||||
|
||||
@Composable
|
||||
fun LockDrawer(value: Boolean) {
|
||||
|
||||
@@ -9,7 +9,6 @@ import androidx.compose.foundation.MutatePriority
|
||||
import androidx.compose.foundation.MutatorMutex
|
||||
import androidx.compose.foundation.gestures.detectTapGestures
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.PaddingValues
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.navigationBarsPadding
|
||||
@@ -21,9 +20,7 @@ import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.SmallFloatingActionButton
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.ReadOnlyComposable
|
||||
import androidx.compose.runtime.Stable
|
||||
import androidx.compose.runtime.State
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
@@ -35,12 +32,10 @@ import androidx.compose.ui.graphics.graphicsLayer
|
||||
import androidx.compose.ui.graphics.vector.ImageVector
|
||||
import androidx.compose.ui.input.pointer.pointerInput
|
||||
import androidx.compose.ui.layout.layout
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.LayoutDirection
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.util.lerp
|
||||
import com.hippo.ehviewer.ui.LocalSnackbarFabPadding
|
||||
import com.hippo.ehviewer.ui.tools.delegateSnapshotUpdate
|
||||
import com.hippo.ehviewer.ui.tools.snackBarPadding
|
||||
import eu.kanade.tachiyomi.util.lang.launchIO
|
||||
import kotlinx.coroutines.CancellationException
|
||||
import kotlinx.coroutines.flow.first
|
||||
@@ -48,15 +43,6 @@ import kotlinx.coroutines.launch
|
||||
import moe.tarsin.coroutines.onEachLatest
|
||||
import moe.tarsin.coroutines.runSuspendCatching
|
||||
|
||||
@Stable
|
||||
@ReadOnlyComposable
|
||||
private fun State<Dp>.asBottomPaddingValues() = object : PaddingValues {
|
||||
override fun calculateBottomPadding() = value
|
||||
override fun calculateLeftPadding(layoutDirection: LayoutDirection) = 0.dp
|
||||
override fun calculateRightPadding(layoutDirection: LayoutDirection) = 0.dp
|
||||
override fun calculateTopPadding() = 0.dp
|
||||
}
|
||||
|
||||
enum class FabLayoutValue {
|
||||
Hidden,
|
||||
Primary,
|
||||
@@ -123,7 +109,6 @@ fun FabLayout(
|
||||
rotateWhenExpand: Boolean = true,
|
||||
fabBuilder: FabBuilder.() -> Unit,
|
||||
) {
|
||||
val snackbarPadding = LocalSnackbarFabPadding.current.asBottomPaddingValues()
|
||||
val updatedHidden by rememberUpdatedState(hidden)
|
||||
val updatedExpanded by rememberUpdatedState(expanded)
|
||||
val newState = when {
|
||||
@@ -158,7 +143,7 @@ fun FabLayout(
|
||||
}
|
||||
val appearState by state.appearProgress.asState()
|
||||
Box(
|
||||
modifier = Modifier.fillMaxSize().navigationBarsPadding().padding(16.dp).padding(snackbarPadding),
|
||||
modifier = Modifier.fillMaxSize().navigationBarsPadding().padding(16.dp).snackBarPadding(),
|
||||
contentAlignment = Alignment.BottomEnd,
|
||||
) {
|
||||
Box(
|
||||
|
||||
@@ -66,7 +66,7 @@ import com.hippo.ehviewer.collectAsState
|
||||
import com.hippo.ehviewer.icons.EhIcons
|
||||
import com.hippo.ehviewer.icons.filled.GoTo
|
||||
import com.hippo.ehviewer.ui.LocalSideSheetState
|
||||
import com.hippo.ehviewer.ui.LocalSnackbarHostState
|
||||
import com.hippo.ehviewer.ui.LocalSnackBarHostState
|
||||
import com.hippo.ehviewer.ui.LockDrawer
|
||||
import com.hippo.ehviewer.ui.MainActivity
|
||||
import com.hippo.ehviewer.ui.main.FAB_ANIMATE_TIME
|
||||
@@ -122,7 +122,7 @@ fun FavouritesScreen(navigator: DestinationsNavigator) {
|
||||
}
|
||||
val context = LocalContext.current
|
||||
val density = LocalDensity.current
|
||||
val snackbarState = LocalSnackbarHostState.current
|
||||
val snackbarState = LocalSnackBarHostState.current
|
||||
val dialogState = LocalDialogState.current
|
||||
val activity = remember(context) { context.findActivity<MainActivity>() }
|
||||
val coroutineScope = rememberCoroutineScope()
|
||||
|
||||
@@ -82,7 +82,7 @@ import com.hippo.ehviewer.client.data.GalleryComment
|
||||
import com.hippo.ehviewer.client.data.ListUrlBuilder
|
||||
import com.hippo.ehviewer.dao.Filter
|
||||
import com.hippo.ehviewer.dao.FilterMode
|
||||
import com.hippo.ehviewer.ui.LocalSnackbarHostState
|
||||
import com.hippo.ehviewer.ui.LocalSnackBarHostState
|
||||
import com.hippo.ehviewer.ui.LockDrawer
|
||||
import com.hippo.ehviewer.ui.MainActivity
|
||||
import com.hippo.ehviewer.ui.jumpToReaderByPage
|
||||
@@ -153,7 +153,7 @@ fun GalleryCommentsScreen(gid: Long, navigator: DestinationsNavigator) {
|
||||
LockDrawer(true)
|
||||
val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior()
|
||||
val dialogState = LocalDialogState.current
|
||||
val snackbarState = LocalSnackbarHostState.current
|
||||
val snackbarState = LocalSnackBarHostState.current
|
||||
val coroutineScope = rememberCoroutineScope()
|
||||
|
||||
var commenting by rememberSaveable { mutableStateOf(false) }
|
||||
|
||||
@@ -118,7 +118,7 @@ import com.hippo.ehviewer.download.DownloadManager as EhDownloadManager
|
||||
import com.hippo.ehviewer.ktbuilder.imageRequest
|
||||
import com.hippo.ehviewer.spider.SpiderDen
|
||||
import com.hippo.ehviewer.ui.GalleryInfoBottomSheet
|
||||
import com.hippo.ehviewer.ui.LocalSnackbarHostState
|
||||
import com.hippo.ehviewer.ui.LocalSnackBarHostState
|
||||
import com.hippo.ehviewer.ui.LockDrawer
|
||||
import com.hippo.ehviewer.ui.MainActivity
|
||||
import com.hippo.ehviewer.ui.confirmRemoveDownload
|
||||
@@ -229,7 +229,7 @@ fun GalleryDetailScreen(args: GalleryDetailScreenArgs, navigator: DestinationsNa
|
||||
val galleryDetailUrl = remember { EhUrl.getGalleryDetailUrl(gid, token, 0, false) }
|
||||
val context = LocalContext.current
|
||||
val activity = remember(context) { context.findActivity<MainActivity>() }
|
||||
val snackbarState = LocalSnackbarHostState.current
|
||||
val snackbarState = LocalSnackBarHostState.current
|
||||
var showReadAction by rememberSaveable { mutableStateOf(true) }
|
||||
LaunchedEffect(args, galleryInfo) {
|
||||
if (showReadAction) {
|
||||
|
||||
@@ -112,7 +112,7 @@ import com.hippo.ehviewer.icons.EhIcons
|
||||
import com.hippo.ehviewer.icons.filled.GoTo
|
||||
import com.hippo.ehviewer.image.Image.Companion.decodeBitmap
|
||||
import com.hippo.ehviewer.ui.LocalSideSheetState
|
||||
import com.hippo.ehviewer.ui.LocalSnackbarHostState
|
||||
import com.hippo.ehviewer.ui.LocalSnackBarHostState
|
||||
import com.hippo.ehviewer.ui.MainActivity
|
||||
import com.hippo.ehviewer.ui.destinations.ProgressScreenDestination
|
||||
import com.hippo.ehviewer.ui.doGalleryInfoAction
|
||||
@@ -216,7 +216,7 @@ fun GalleryListScreen(lub: ListUrlBuilder, navigator: DestinationsNavigator) {
|
||||
animationSpec = tween(FAB_ANIMATE_TIME * 2),
|
||||
) { showSearchLayout = false }
|
||||
val context = LocalContext.current
|
||||
val snackbarState = LocalSnackbarHostState.current
|
||||
val snackbarState = LocalSnackBarHostState.current
|
||||
val activity = remember { context.findActivity<MainActivity>() }
|
||||
val density = LocalDensity.current
|
||||
val dialogState = LocalDialogState.current
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.hippo.ehviewer.ui.tools
|
||||
|
||||
import androidx.compose.foundation.layout.PaddingValues
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.ReadOnlyComposable
|
||||
import androidx.compose.runtime.Stable
|
||||
import androidx.compose.runtime.State
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.LayoutDirection
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.hippo.ehviewer.ui.LocalSnackBarFabPadding
|
||||
|
||||
@Stable
|
||||
@ReadOnlyComposable
|
||||
private fun State<Dp>.asBottomPaddingValues() = object : PaddingValues {
|
||||
override fun calculateBottomPadding() = value
|
||||
override fun calculateLeftPadding(layoutDirection: LayoutDirection) = 0.dp
|
||||
override fun calculateRightPadding(layoutDirection: LayoutDirection) = 0.dp
|
||||
override fun calculateTopPadding() = 0.dp
|
||||
}
|
||||
|
||||
@ReadOnlyComposable
|
||||
@Composable
|
||||
@Stable
|
||||
fun Modifier.snackBarPadding(): Modifier {
|
||||
val snackBarPadding = LocalSnackBarFabPadding.current.asBottomPaddingValues()
|
||||
return padding(snackBarPadding)
|
||||
}
|
||||
Reference in new issue
Block a user