Revert "Temporarily disable shared element transitions (#1621)" (#1932)

* Revert "Temporarily disable shared element transitions (#1621)"

This reverts commit 42ed51094e.

* Fixes

* Update EhAsyncThumb.kt

---------

Co-authored-by: Dude so hot <djohn@fbi.gov>
This commit is contained in:
renovate[bot]andDude so hot authored and GitHub committed 2024-11-14 19:24:11 +08:00
1 parent 2cd884bd9d
commit 6f7276bcdf
3 files changed
+21 -104

No files matched your search

@@ -26,6 +26,7 @@ import android.net.Uri
import android.os.Bundle
import android.widget.Toast
import androidx.annotation.StringRes
import androidx.compose.animation.SharedTransitionLayout
import androidx.compose.animation.SharedTransitionScope
import androidx.compose.animation.core.animateDpAsState
import androidx.compose.foundation.Image
@@ -137,7 +138,6 @@ import com.hippo.ehviewer.ui.tools.DialogState
import com.hippo.ehviewer.ui.tools.LabeledCheckbox
import com.hippo.ehviewer.ui.tools.LocalDialogState
import com.hippo.ehviewer.ui.tools.LocalWindowSizeClass
import com.hippo.ehviewer.ui.tools.NoopSharedTransitionScope
import com.hippo.ehviewer.updater.AppUpdater
import com.hippo.ehviewer.util.AppConfig
import com.hippo.ehviewer.util.addTextToClipboard
@@ -470,22 +470,21 @@ class MainActivity : EhActivity() {
drawerState = sideSheetState,
gesturesEnabled = sheet != null && drawerEnabled,
) {
// https://issuetracker.google.com/336140982
// SharedTransitionLayout {
CompositionLocalProvider(LocalSharedTransitionScope provides NoopSharedTransitionScope) {
val start = when {
needSignIn -> SignInScreenDestination
hasNetwork -> StartDestination
else -> DownloadsScreenDestination
SharedTransitionLayout {
CompositionLocalProvider(LocalSharedTransitionScope provides this) {
val start = when {
needSignIn -> SignInScreenDestination
hasNetwork -> StartDestination
else -> DownloadsScreenDestination
}
DestinationsNavHost(
navGraph = NavGraphs.root,
start = start,
defaultTransitions = rememberEhNavAnim(),
navController = navController,
)
}
DestinationsNavHost(
navGraph = NavGraphs.root,
start = start,
defaultTransitions = rememberEhNavAnim(),
navController = navController,
)
}
// }
}
}
}
@@ -26,6 +26,7 @@ import com.hippo.ehviewer.client.data.GalleryInfo
import com.hippo.ehviewer.ktbuilder.imageRequest
import com.hippo.ehviewer.ui.tools.SETNodeGenerator
import com.hippo.ehviewer.ui.tools.TransitionsVisibilityScope
import com.hippo.ehviewer.ui.tools.sharedBounds
import com.hippo.ehviewer.ui.tools.shouldCrop
@Composable
@@ -64,9 +65,7 @@ fun EhAsyncThumb(
) = AsyncImage(
model = requestOf(model),
contentDescription = null,
modifier = modifier
// .sharedBounds(key = "${model.gid}")
.clip(ShapeDefaults.Medium),
modifier = modifier.sharedBounds(key = "${model.gid}").clip(ShapeDefaults.Medium),
onSuccess = onSuccess?.let { callback ->
{ callback(it.result.image) }
},
@@ -83,9 +82,7 @@ fun EhAsyncCropThumb(
AsyncImage(
model = requestOf(key),
contentDescription = null,
modifier = modifier
// .sharedBounds(key = "${key.gid}")
.clip(ShapeDefaults.Medium),
modifier = modifier.sharedBounds(key = "${key.gid}").clip(ShapeDefaults.Medium),
onSuccess = {
if (it.result.image.shouldCrop) {
contentScale = ContentScale.Crop
@@ -95,6 +92,7 @@ fun EhAsyncCropThumb(
)
}
context(SharedTransitionScope, TransitionsVisibilityScope, SETNodeGenerator)
@Composable
fun EhThumbCard(
key: GalleryInfo,
@@ -121,7 +119,7 @@ fun EhThumbCard(
Image(
painter = painter,
contentDescription = null,
modifier = Modifier.imageRequest(request).fillMaxSize().clip(ShapeDefaults.Medium),
modifier = Modifier.imageRequest(request).fillMaxSize().sharedBounds(key = "${key.gid}").clip(ShapeDefaults.Medium),
contentScale = contentScale,
)
}
@@ -1,8 +1,6 @@
package com.hippo.ehviewer.ui.tools
import android.annotation.SuppressLint
import androidx.compose.animation.AnimatedVisibilityScope
import androidx.compose.animation.BoundsTransform
import androidx.compose.animation.EnterTransition
import androidx.compose.animation.ExitTransition
import androidx.compose.animation.SharedTransitionScope
@@ -13,13 +11,7 @@ import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.Stable
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Path
import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.layout.LayoutCoordinates
import androidx.compose.ui.layout.Placeable
import androidx.compose.ui.unit.Density
import androidx.compose.ui.unit.LayoutDirection
import arrow.atomic.AtomicInt
import java.util.concurrent.atomic.AtomicInteger
val NoopTransitionsVisibilityScope = TransitionsVisibilityScope(emptySet())
@@ -68,7 +60,7 @@ fun initSETConnection() {
listThumbGenerator connectTo detailThumbGenerator
}
private val atomicIncId = AtomicInt()
private val atomicIncId = AtomicInteger()
class SETNodeGenerator {
private val tracker = hashMapOf<String, SETNode>()
@@ -87,75 +79,3 @@ class SETNodeGenerator {
other.opposites.add(this)
}
}
@SuppressLint("ModifierFactoryUnreferencedReceiver")
object NoopSharedTransitionScope : SharedTransitionScope {
override val isTransitionActive: Boolean
get() = TODO("Not yet implemented")
override val Placeable.PlacementScope.lookaheadScopeCoordinates: LayoutCoordinates
get() = TODO("Not yet implemented")
override fun OverlayClip(clipShape: Shape): SharedTransitionScope.OverlayClip {
TODO("Not yet implemented")
}
@Composable
override fun rememberSharedContentState(key: Any): SharedTransitionScope.SharedContentState {
TODO("Not yet implemented")
}
override fun Modifier.renderInSharedTransitionScopeOverlay(
renderInOverlay: () -> Boolean,
zIndexInOverlay: Float,
clipInOverlayDuringTransition: (LayoutDirection, Density) -> Path?,
): Modifier {
TODO("Not yet implemented")
}
override fun Modifier.sharedBounds(
sharedContentState: SharedTransitionScope.SharedContentState,
animatedVisibilityScope: AnimatedVisibilityScope,
enter: EnterTransition,
exit: ExitTransition,
boundsTransform: BoundsTransform,
resizeMode: SharedTransitionScope.ResizeMode,
placeHolderSize: SharedTransitionScope.PlaceHolderSize,
renderInOverlayDuringTransition: Boolean,
zIndexInOverlay: Float,
clipInOverlayDuringTransition: SharedTransitionScope.OverlayClip,
): Modifier {
TODO("Not yet implemented")
}
override fun Modifier.sharedElement(
state: SharedTransitionScope.SharedContentState,
animatedVisibilityScope: AnimatedVisibilityScope,
boundsTransform: BoundsTransform,
placeHolderSize: SharedTransitionScope.PlaceHolderSize,
renderInOverlayDuringTransition: Boolean,
zIndexInOverlay: Float,
clipInOverlayDuringTransition: SharedTransitionScope.OverlayClip,
): Modifier {
TODO("Not yet implemented")
}
override fun Modifier.sharedElementWithCallerManagedVisibility(
sharedContentState: SharedTransitionScope.SharedContentState,
visible: Boolean,
boundsTransform: BoundsTransform,
placeHolderSize: SharedTransitionScope.PlaceHolderSize,
renderInOverlayDuringTransition: Boolean,
zIndexInOverlay: Float,
clipInOverlayDuringTransition: SharedTransitionScope.OverlayClip,
): Modifier {
TODO("Not yet implemented")
}
override fun Modifier.skipToLookaheadSize(): Modifier {
TODO("Not yet implemented")
}
override fun LayoutCoordinates.toLookaheadCoordinates(): LayoutCoordinates {
TODO("Not yet implemented")
}
}