Bluesky app fork with some witchin' additions 💫
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Inline createPanResponder (#1483)

authored by

dan and committed by
GitHub
8b8fba72 1af8e83d

+15 -53
+14 -11
src/view/com/lightbox/ImageViewing/hooks/usePanResponder.ts
··· 1 - /* eslint-disable react-hooks/exhaustive-deps */ 2 1 /** 3 2 * Copyright (c) JOB TODAY S.A. and its affiliates. 4 3 * ··· 7 6 * 8 7 */ 9 8 10 - import {useMemo, useEffect} from 'react' 9 + import {useEffect} from 'react' 11 10 import { 12 11 Animated, 13 12 Dimensions, 14 13 GestureResponderEvent, 15 14 GestureResponderHandlers, 16 15 NativeTouchEvent, 16 + PanResponder, 17 17 PanResponderGestureState, 18 18 } from 'react-native' 19 19 20 20 import {Position} from '../@types' 21 21 import { 22 - createPanResponder, 23 22 getDistanceBetweenTouches, 24 23 getImageTranslate, 25 24 getImageDimensionsByTranslate, ··· 160 159 longPressHandlerRef && clearTimeout(longPressHandlerRef) 161 160 } 162 161 163 - const handlers = { 164 - onGrant: ( 162 + const panResponder = PanResponder.create({ 163 + onStartShouldSetPanResponder: () => true, 164 + onStartShouldSetPanResponderCapture: () => true, 165 + onMoveShouldSetPanResponder: () => true, 166 + onMoveShouldSetPanResponderCapture: () => true, 167 + onPanResponderGrant: ( 165 168 _: GestureResponderEvent, 166 169 gestureState: PanResponderGestureState, 167 170 ) => { ··· 173 176 174 177 longPressHandlerRef = setTimeout(onLongPress, delayLongPress) 175 178 }, 176 - onStart: ( 179 + onPanResponderStart: ( 177 180 event: GestureResponderEvent, 178 181 gestureState: PanResponderGestureState, 179 182 ) => { ··· 234 237 lastTapTS = Date.now() 235 238 } 236 239 }, 237 - onMove: ( 240 + onPanResponderMove: ( 238 241 event: GestureResponderEvent, 239 242 gestureState: PanResponderGestureState, 240 243 ) => { ··· 356 359 tmpTranslate = {x: nextTranslateX, y: nextTranslateY} 357 360 } 358 361 }, 359 - onRelease: () => { 362 + onPanResponderRelease: () => { 360 363 cancelLongPressHandle() 361 364 362 365 if (isDoubleTapPerformed) { ··· 418 421 tmpTranslate = null 419 422 } 420 423 }, 421 - } 422 - 423 - const panResponder = useMemo(() => createPanResponder(handlers), [handlers]) 424 + onPanResponderTerminationRequest: () => false, 425 + onShouldBlockNativeResponder: () => false, 426 + }) 424 427 425 428 return [panResponder.panHandlers, scaleValue, translateValue] 426 429 }
+1 -42
src/view/com/lightbox/ImageViewing/utils.ts
··· 6 6 * 7 7 */ 8 8 9 - import { 10 - Animated, 11 - GestureResponderEvent, 12 - PanResponder, 13 - PanResponderGestureState, 14 - PanResponderInstance, 15 - NativeTouchEvent, 16 - } from 'react-native' 9 + import {Animated, NativeTouchEvent} from 'react-native' 17 10 import {Dimensions, Position} from './@types' 18 11 19 12 type CacheStorageItem = {key: string; value: any} ··· 130 123 131 124 return getImageTranslate(targetImageDimensions, screen) 132 125 } 133 - 134 - type HandlerType = ( 135 - event: GestureResponderEvent, 136 - state: PanResponderGestureState, 137 - ) => void 138 - 139 - type PanResponderProps = { 140 - onGrant: HandlerType 141 - onStart?: HandlerType 142 - onMove: HandlerType 143 - onRelease?: HandlerType 144 - onTerminate?: HandlerType 145 - } 146 - 147 - export const createPanResponder = ({ 148 - onGrant, 149 - onStart, 150 - onMove, 151 - onRelease, 152 - onTerminate, 153 - }: PanResponderProps): PanResponderInstance => 154 - PanResponder.create({ 155 - onStartShouldSetPanResponder: () => true, 156 - onStartShouldSetPanResponderCapture: () => true, 157 - onMoveShouldSetPanResponder: () => true, 158 - onMoveShouldSetPanResponderCapture: () => true, 159 - onPanResponderGrant: onGrant, 160 - onPanResponderStart: onStart, 161 - onPanResponderMove: onMove, 162 - onPanResponderRelease: onRelease, 163 - onPanResponderTerminate: onTerminate, 164 - onPanResponderTerminationRequest: () => false, 165 - onShouldBlockNativeResponder: () => false, 166 - }) 167 126 168 127 export const getDistanceBetweenTouches = ( 169 128 touches: NativeTouchEvent[],