From b3d05972e4b2b1b07ef2fb01ec056575fa4ab322 Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Tue, 3 Oct 2023 20:36:57 +0100 Subject: [PATCH] Scroll waits for pinch --- .../components/ImageItem/ImageItem.android.tsx | 2 ++ src/view/com/lightbox/ImageViewing/index.tsx | 14 ++++++++++++++ 2 files changed, 16 insertions(+) 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 efe2c6f51b..c2bd2e58a7 100644 --- a/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.android.tsx +++ b/src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.android.tsx @@ -156,6 +156,7 @@ const ImageItem = ({ delayLongPress, swipeToCloseEnabled = true, doubleTapToZoomEnabled = true, + pinchRef, }: Props) => { const [isScaled, setIsScaled] = useState(false) const [isLoaded, setIsLoaded] = useState(false) @@ -223,6 +224,7 @@ const ImageItem = ({ } const pinch = Gesture.Pinch() + .withRef(pinchRef) .onStart((e) => { pinchOrigin.value = { x: e.focalX - SCREEN.width/2, diff --git a/src/view/com/lightbox/ImageViewing/index.tsx b/src/view/com/lightbox/ImageViewing/index.tsx index 77c4570165..bf6289ea5a 100644 --- a/src/view/com/lightbox/ImageViewing/index.tsx +++ b/src/view/com/lightbox/ImageViewing/index.tsx @@ -110,6 +110,13 @@ function ImageViewing({ } }, [imageList, imageIndex]) + const [pinchRefs] = useState(new Map()) + for (let imageSrc of images) { + if (!pinchRefs.get(imageSrc)) { + pinchRefs.set(imageSrc, createRef()) + } + } + if (!visible) { return null } @@ -156,8 +163,15 @@ function ImageViewing({ delayLongPress={delayLongPress} swipeToCloseEnabled={swipeToCloseEnabled} doubleTapToZoomEnabled={doubleTapToZoomEnabled} + pinchRef={pinchRefs.get(imageSrc)} /> )} + renderScrollComponent={props => ( + + )} onMomentumScrollEnd={onScroll} //@ts-ignore keyExtractor={(imageSrc, index) =>