11import React , { useEffect , useRef , useState } from 'react' ;
2- import { Image , ImageStyle , Keyboard , Platform , StyleSheet , ViewStyle } from 'react-native' ;
2+ import { Image , ImageStyle , Keyboard , StyleSheet , ViewStyle } from 'react-native' ;
33
4- import {
5- PanGestureHandler ,
6- PinchGestureHandler ,
7- TapGestureHandler ,
8- } from 'react-native-gesture-handler' ;
4+ import { GestureDetector } from 'react-native-gesture-handler' ;
95
106import Animated , {
117 Easing ,
@@ -41,10 +37,7 @@ import {
4137import { useImageGalleryGestures } from './hooks/useImageGalleryGestures' ;
4238
4339import { useImageGalleryContext } from '../../contexts/imageGalleryContext/ImageGalleryContext' ;
44- import {
45- OverlayProviderProps ,
46- useOverlayContext ,
47- } from '../../contexts/overlayContext/OverlayContext' ;
40+ import { OverlayProviderProps } from '../../contexts/overlayContext/OverlayContext' ;
4841import { useTheme } from '../../contexts/themeContext/ThemeContext' ;
4942import { useViewport } from '../../hooks/useViewport' ;
5043import { isVideoPackageAvailable , VideoType } from '../../native' ;
@@ -53,8 +46,6 @@ import { getResizedImageUrl } from '../../utils/getResizedImageUrl';
5346import { getUrlOfImageAttachment } from '../../utils/getUrlOfImageAttachment' ;
5447import { getGiphyMimeType } from '../Attachment/utils/getGiphyMimeType' ;
5548
56- const isAndroid = Platform . OS === 'android' ;
57-
5849const MARGIN = 32 ;
5950
6051export enum HasPinched {
@@ -146,7 +137,6 @@ export const ImageGallery = <
146137 } ,
147138 } = useTheme ( ) ;
148139 const [ gridPhotos , setGridPhotos ] = useState < Photo < StreamChatGenerics > [ ] > ( [ ] ) ;
149- const { overlay } = useOverlayContext ( ) ;
150140 const { messages, selectedMessage, setSelectedMessage } =
151141 useImageGalleryContext < StreamChatGenerics > ( ) ;
152142
@@ -212,14 +202,6 @@ export const ImageGallery = <
212202 */
213203 const headerFooterVisible = useSharedValue ( 1 ) ;
214204
215- /**
216- * Gesture handler refs
217- */
218- const doubleTapRef = useRef < TapGestureHandler > ( null ) ;
219- const panRef = useRef < PanGestureHandler > ( null ) ;
220- const pinchRef = useRef < PinchGestureHandler > ( null ) ;
221- const singleTapRef = useRef < TapGestureHandler > ( null ) ;
222-
223205 /**
224206 * Shared values for movement
225207 */
@@ -353,7 +335,7 @@ export const ImageGallery = <
353335 }
354336 } , [ uriForCurrentImage ] ) ;
355337
356- const { onDoubleTap , onPan , onPinch , onSingleTap } = useImageGalleryGestures ( {
338+ const { doubleTap , pan , pinch , singleTap } = useImageGalleryGestures ( {
357339 currentImageHeight,
358340 halfScreenHeight,
359341 halfScreenWidth,
@@ -518,38 +500,13 @@ export const ImageGallery = <
518500 style = { [ StyleSheet . absoluteFillObject , showScreenStyle ] }
519501 >
520502 < Animated . View style = { [ StyleSheet . absoluteFillObject , containerBackground ] } />
521- < TapGestureHandler
522- minPointers = { 1 }
523- numberOfTaps = { 1 }
524- onGestureEvent = { onSingleTap }
525- ref = { singleTapRef }
526- waitFor = { [ panRef , pinchRef , doubleTapRef ] }
527- >
503+ < GestureDetector gesture = { singleTap } >
528504 < Animated . View style = { StyleSheet . absoluteFillObject } >
529- < TapGestureHandler
530- maxDeltaX = { 8 }
531- maxDeltaY = { 8 }
532- maxDist = { 8 }
533- minPointers = { 1 }
534- numberOfTaps = { 2 }
535- onGestureEvent = { onDoubleTap }
536- ref = { doubleTapRef }
537- >
505+ < GestureDetector gesture = { doubleTap } >
538506 < Animated . View style = { StyleSheet . absoluteFillObject } >
539- < PinchGestureHandler
540- onGestureEvent = { onPinch }
541- ref = { pinchRef }
542- simultaneousHandlers = { [ panRef ] }
543- >
507+ < GestureDetector gesture = { pinch } >
544508 < Animated . View style = { StyleSheet . absoluteFill } >
545- < PanGestureHandler
546- enabled = { overlay === 'gallery' }
547- maxPointers = { isAndroid ? undefined : 1 }
548- minDist = { 10 }
549- onGestureEvent = { onPan }
550- ref = { panRef }
551- simultaneousHandlers = { [ pinchRef ] }
552- >
509+ < GestureDetector gesture = { pan } >
553510 < Animated . View style = { StyleSheet . absoluteFill } >
554511 < Animated . View style = { [ styles . animatedContainer , pagerStyle , pager ] } >
555512 { imageGalleryAttachments . map ( ( photo , i ) =>
@@ -609,13 +566,13 @@ export const ImageGallery = <
609566 ) }
610567 </ Animated . View >
611568 </ Animated . View >
612- </ PanGestureHandler >
569+ </ GestureDetector >
613570 </ Animated . View >
614- </ PinchGestureHandler >
571+ </ GestureDetector >
615572 </ Animated . View >
616- </ TapGestureHandler >
573+ </ GestureDetector >
617574 </ Animated . View >
618- </ TapGestureHandler >
575+ </ GestureDetector >
619576 < ImageGalleryHeader < StreamChatGenerics >
620577 opacity = { headerFooterOpacity }
621578 photo = { imageGalleryAttachments [ selectedIndex ] }
0 commit comments