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()