From caeb86a368ee49524932ee8724841d9215d7b80a Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Sun, 3 Nov 2024 03:05:04 +0000 Subject: [PATCH] Force zoom out before close It's too hard to make closing while zoomed out work. --- .../components/ImageItem/ImageItem.android.tsx | 7 +++++++ .../components/ImageItem/ImageItem.ios.tsx | 18 +++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.android.tsx b/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.android.tsx index a5b6e5f5ac..ed1e81f684 100644 --- a/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.android.tsx +++ b/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.android.tsx @@ -236,6 +236,13 @@ const ImageItem = ({ const singleTap = Gesture.Tap().onEnd(() => { 'worklet' + const [, , committedScale] = readTransform(committedTransform.value) + if (committedScale !== 1) { + // Go back to 1:1 using the identity vector. + let t = createTransform() + committedTransform.value = withClampedSpring(t) + return + } runOnJS(onTap)() }) diff --git a/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.ios.tsx b/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.ios.tsx index 9c09382701..d588c746f0 100644 --- a/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.ios.tsx +++ b/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.ios.tsx @@ -97,9 +97,25 @@ const ImageItem = ({ }) } + function handleTap() { + if (scaled) { + const scrollResponderRef = scrollViewRef?.current?.getScrollResponder() + // @ts-ignore + scrollResponderRef?.scrollResponderZoomTo({ + x: 0, + y: 0, + width: SCREEN.width, + height: SCREEN.height, + animated: true, + }) + } else { + onTap() + } + } + const singleTap = Gesture.Tap().onEnd(() => { 'worklet' - runOnJS(onTap)() + runOnJS(handleTap)() }) const doubleTap = Gesture.Tap()