diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerFlickToDismiss.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerFlickToDismiss.kt index aa8261df0a..dea8ee1df3 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerFlickToDismiss.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerFlickToDismiss.kt @@ -27,6 +27,7 @@ fun MediaViewerFlickToDismiss( onDismiss: () -> Unit, modifier: Modifier = Modifier, onDragging: () -> Unit = {}, + onResetting: () -> Unit = {}, content: @Composable BoxScope.() -> Unit, ) { val flickState = rememberFlickToDismissState(dismissThresholdRatio = 0.1f, rotateOnDrag = false) @@ -37,6 +38,7 @@ fun MediaViewerFlickToDismiss( onDismiss() }, onDragging = onDragging, + onResetting = onResetting, ) FlickToDismiss( state = flickState, @@ -50,9 +52,11 @@ private fun DismissFlickEffects( flickState: FlickToDismissState, onDismissing: suspend (Duration) -> Unit, onDragging: suspend () -> Unit, + onResetting: suspend () -> Unit, ) { val currentOnDismissing by rememberUpdatedState(onDismissing) val currentOnDragging by rememberUpdatedState(onDragging) + val currentOnResetting by rememberUpdatedState(onResetting) when (val gestureState = flickState.gestureState) { is FlickToDismissState.GestureState.Dismissing -> { @@ -65,6 +69,11 @@ private fun DismissFlickEffects( currentOnDragging() } } + is FlickToDismissState.GestureState.Resetting -> { + LaunchedEffect(Unit) { + currentOnResetting() + } + } else -> Unit } } diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerView.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerView.kt index 8bb86936af..c04bddb3d8 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerView.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/viewer/MediaViewerView.kt @@ -290,6 +290,9 @@ private fun MediaViewerPage( onDragging = { currentOnShowOverlayChange(false) }, + onResetting = { + currentOnShowOverlayChange(true) + }, modifier = modifier, ) { val downloadedMedia by data.downloadedMedia