Skip to content

Commit de98017

Browse files
committed
even more refactoring
1 parent cb72d7e commit de98017

File tree

12 files changed

+42
-48
lines changed

12 files changed

+42
-48
lines changed

packages/react-native-gesture-handler/src/RNGestureHandlerModule.web.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React from 'react';
22

33
import type { ActionType } from './ActionType';
44
import { Gestures } from './web/Gestures';
5-
import type { Config } from './web/interfaces';
5+
import type { Config, PropsRef } from './web/interfaces';
66
import InteractionManager from './web/tools/InteractionManager';
77
import NodeManager from './web/tools/NodeManager';
88
import { GestureHandlerWebDelegate } from './web/tools/GestureHandlerWebDelegate';
@@ -48,7 +48,7 @@ export default {
4848
// eslint-disable-next-line @typescript-eslint/no-explicit-any
4949
newView: any,
5050
actionType: ActionType,
51-
propsRef: React.RefObject<unknown>
51+
propsRef: React.RefObject<PropsRef>
5252
) {
5353
if (!(newView instanceof Element || newView instanceof React.Component)) {
5454
shouldPreventDrop = true;

packages/react-native-gesture-handler/src/handlers/gestures/GestureDetector/attachHandlers.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,21 @@ import { ActionType } from '../../../ActionType';
88
import { Platform } from 'react-native';
99
import type RNGestureHandlerModuleWeb from '../../../RNGestureHandlerModule.web';
1010
import { ghQueueMicrotask } from '../../../ghQueueMicrotask';
11-
import { AttachedGestureState, WebEventHandler } from './types';
11+
import { AttachedGestureState } from './types';
1212
import {
1313
extractGestureRelations,
1414
checkGestureCallbacksForWorklets,
1515
ALLOWED_PROPS,
1616
} from './utils';
1717
import { MountRegistry } from '../../../mountRegistry';
18+
import { PropsRef } from '../../../web/interfaces';
1819

1920
interface AttachHandlersConfig {
2021
preparedGesture: AttachedGestureState;
2122
gestureConfig: ComposedGesture | GestureType;
2223
gesturesToAttach: GestureType[];
2324
viewTag: number;
24-
webEventHandlersRef: React.RefObject<WebEventHandler>;
25+
webEventHandlersRef: React.RefObject<PropsRef>;
2526
}
2627

2728
export function attachHandlers({

packages/react-native-gesture-handler/src/handlers/gestures/GestureDetector/types.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { GestureType, HandlerCallbacks } from '../gesture';
22
import { SharedValue } from '../reanimatedWrapper';
3-
import { HandlerStateChangeEvent } from '../../gestureHandlerCommon';
43

54
export interface AttachedGestureState {
65
// Array of gestures that should be attached to the view under that gesture detector
@@ -23,10 +22,3 @@ export interface GestureDetectorState {
2322
previousViewTag: number;
2423
forceRebuildReanimatedEvent: boolean;
2524
}
26-
27-
export interface WebEventHandler {
28-
onGestureHandlerEvent: (event: HandlerStateChangeEvent<unknown>) => void;
29-
onGestureHandlerStateChange?: (
30-
event: HandlerStateChangeEvent<unknown>
31-
) => void;
32-
}

packages/react-native-gesture-handler/src/handlers/gestures/GestureDetector/useDetectorUpdater.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,14 @@ import React, { useCallback } from 'react';
22
import { GestureType } from '../gesture';
33
import { ComposedGesture } from '../gestureComposition';
44

5-
import {
6-
AttachedGestureState,
7-
GestureDetectorState,
8-
WebEventHandler,
9-
} from './types';
5+
import { AttachedGestureState, GestureDetectorState } from './types';
106
import { attachHandlers } from './attachHandlers';
117
import { updateHandlers } from './updateHandlers';
128
import { needsToReattach } from './needsToReattach';
139
import { dropHandlers } from './dropHandlers';
1410
import { useForceRender, validateDetectorChildren } from './utils';
1511
import findNodeHandle from '../../../findNodeHandle';
12+
import { PropsRef } from '../../../web/interfaces';
1613

1714
// Returns a function that's responsible for updating the attached gestures
1815
// If the view has changed, it will reattach the handlers to the new view
@@ -22,7 +19,7 @@ export function useDetectorUpdater(
2219
preparedGesture: AttachedGestureState,
2320
gesturesToAttach: GestureType[],
2421
gestureConfig: ComposedGesture | GestureType,
25-
webEventHandlersRef: React.RefObject<WebEventHandler>
22+
webEventHandlersRef: React.RefObject<PropsRef>
2623
) {
2724
const forceRender = useForceRender();
2825
const updateAttachedGestures = useCallback(

packages/react-native-gesture-handler/src/handlers/gestures/GestureDetector/utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { RNRenderer } from '../../../RNRenderer';
2121
import { useCallback, useRef, useState } from 'react';
2222
import { Reanimated } from '../reanimatedWrapper';
2323
import { onGestureHandlerEvent } from '../eventReceiver';
24-
import { WebEventHandler } from './types';
24+
import { PropsRef } from '../../../web/interfaces';
2525

2626
export const ALLOWED_PROPS = [
2727
...baseGestureHandlerWithDetectorProps,
@@ -167,7 +167,7 @@ export function useForceRender() {
167167
}
168168

169169
export function useWebEventHandlers() {
170-
return useRef<WebEventHandler>({
170+
return useRef<PropsRef>({
171171
onGestureHandlerEvent: (e: HandlerStateChangeEvent<unknown>) => {
172172
onGestureHandlerEvent(e.nativeEvent);
173173
},

packages/react-native-gesture-handler/src/v3/HostGestureDetector.web.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,23 @@ import { useEffect, useRef, useCallback } from 'react';
22
import { View } from 'react-native';
33
import RNGestureHandlerModule from '../RNGestureHandlerModule.web';
44
import { ActionType } from '../ActionType';
5+
import { PropsRef } from '../web/interfaces';
56
export interface GestureHandlerDetectorProps {
67
handlerTags: number[];
78
dispatchesAnimatedEvents: boolean;
89
moduleId: number;
910
children?: React.ReactNode;
11+
onGestureHandlerEvent: () => void;
12+
onGestureHandlerAnimatedEvent?: () => void;
13+
onGestureHandlerStateChange: () => void;
14+
onGestureHandlerTouchEvent?: () => void;
1015
}
1116

1217
const HostGestureDetector = (props: GestureHandlerDetectorProps) => {
1318
const { handlerTags, dispatchesAnimatedEvents, children } = props;
1419

1520
const viewRef = useRef(null);
16-
const propsRef = useRef<GestureHandlerDetectorProps>(props);
21+
const propsRef = useRef<PropsRef>(props);
1722
const oldHandlerTags = useRef<Set<number>>(new Set<number>());
1823

1924
const detachHandlers = useCallback(() => {

packages/react-native-gesture-handler/src/web/handlers/GestureHandler.ts

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export default abstract class GestureHandler implements IGestureHandler {
3131
private _enabled = false;
3232

3333
private viewRef: number | null = null;
34-
private propsRef: React.RefObject<unknown> | null = null;
34+
private propsRef: React.RefObject<PropsRef> | null = null;
3535
private actionType: ActionType | null = null;
3636
private _handlerTag!: number;
3737
private _config: Config = { enabled: false };
@@ -61,7 +61,7 @@ export default abstract class GestureHandler implements IGestureHandler {
6161

6262
protected init(
6363
viewRef: number,
64-
propsRef: React.RefObject<unknown>,
64+
propsRef: React.RefObject<PropsRef>,
6565
actionType: ActionType
6666
) {
6767
this.propsRef = propsRef;
@@ -356,21 +356,21 @@ export default abstract class GestureHandler implements IGestureHandler {
356356
return;
357357
}
358358

359-
const { onGestureHandlerEvent, onGestureHandlerTouchEvent }: PropsRef = this
360-
.propsRef.current as PropsRef;
359+
const { onGestureHandlerEvent, onGestureHandlerTouchEvent }: PropsRef =
360+
this.propsRef.current;
361361

362362
const touchEvent: ResultTouchEvent | undefined =
363363
this.transformTouchEvent(event);
364364

365365
if (touchEvent) {
366366
if (
367-
this.actionType === ActionType.NATIVE_DETECTOR ||
368-
this.actionType === ActionType.NATIVE_DETECTOR_ANIMATED_EVENT
367+
onGestureHandlerTouchEvent &&
368+
(this.actionType === ActionType.NATIVE_DETECTOR ||
369+
this.actionType === ActionType.NATIVE_DETECTOR_ANIMATED_EVENT)
369370
) {
370371
invokeNullableMethod(onGestureHandlerTouchEvent, touchEvent);
371-
} else {
372-
invokeNullableMethod(onGestureHandlerEvent, touchEvent);
373372
}
373+
invokeNullableMethod(onGestureHandlerEvent, touchEvent);
374374
}
375375
}
376376

@@ -386,7 +386,7 @@ export default abstract class GestureHandler implements IGestureHandler {
386386
onGestureHandlerEvent,
387387
onGestureHandlerStateChange,
388388
onGestureHandlerAnimatedEvent,
389-
}: PropsRef = this.propsRef.current as PropsRef;
389+
}: PropsRef = this.propsRef.current;
390390
const resultEvent: ResultEvent = this.transformEventData(
391391
newState,
392392
oldState
@@ -404,13 +404,13 @@ export default abstract class GestureHandler implements IGestureHandler {
404404
if (this.state === State.ACTIVE) {
405405
resultEvent.nativeEvent.oldState = undefined;
406406
if (
407-
this.actionType === ActionType.NATIVE_ANIMATED_EVENT ||
408-
this.actionType === ActionType.NATIVE_DETECTOR_ANIMATED_EVENT
407+
onGestureHandlerAnimatedEvent &&
408+
(this.actionType === ActionType.NATIVE_ANIMATED_EVENT ||
409+
this.actionType === ActionType.NATIVE_DETECTOR_ANIMATED_EVENT)
409410
) {
410411
invokeNullableMethod(onGestureHandlerAnimatedEvent, resultEvent);
411-
} else {
412-
invokeNullableMethod(onGestureHandlerEvent, resultEvent);
413412
}
413+
invokeNullableMethod(onGestureHandlerEvent, resultEvent);
414414
}
415415
};
416416

@@ -582,8 +582,7 @@ export default abstract class GestureHandler implements IGestureHandler {
582582
timeStamp: Date.now(),
583583
};
584584

585-
const { onGestureHandlerEvent }: PropsRef = this.propsRef
586-
.current as PropsRef;
585+
const { onGestureHandlerEvent }: PropsRef = this.propsRef.current;
587586

588587
invokeNullableMethod(onGestureHandlerEvent, cancelEvent);
589588
}

packages/react-native-gesture-handler/src/web/handlers/LongPressGestureHandler.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { ActionType } from '../../ActionType';
22
import { State } from '../../State';
3-
import { AdaptedEvent, Config } from '../interfaces';
3+
import { AdaptedEvent, Config, PropsRef } from '../interfaces';
44

55
import GestureHandler from './GestureHandler';
66

@@ -24,7 +24,7 @@ export default class LongPressGestureHandler extends GestureHandler {
2424

2525
public init(
2626
ref: number,
27-
propsRef: React.RefObject<unknown>,
27+
propsRef: React.RefObject<PropsRef>,
2828
actionType: ActionType
2929
) {
3030
if (this.config.enableContextMenu === undefined) {

packages/react-native-gesture-handler/src/web/handlers/NativeViewGestureHandler.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Platform } from 'react-native';
22
import { State } from '../../State';
33
import { DEFAULT_TOUCH_SLOP } from '../constants';
4-
import { AdaptedEvent, Config } from '../interfaces';
4+
import { AdaptedEvent, Config, PropsRef } from '../interfaces';
55

66
import GestureHandler from './GestureHandler';
77
import { ActionType } from '../../ActionType';
@@ -19,7 +19,7 @@ export default class NativeViewGestureHandler extends GestureHandler {
1919

2020
public init(
2121
ref: number,
22-
propsRef: React.RefObject<unknown>,
22+
propsRef: React.RefObject<PropsRef>,
2323
actionType: ActionType
2424
): void {
2525
super.init(ref, propsRef, actionType);

packages/react-native-gesture-handler/src/web/handlers/PinchGestureHandler.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { State } from '../../State';
22
import { DEFAULT_TOUCH_SLOP } from '../constants';
3-
import { AdaptedEvent } from '../interfaces';
3+
import { AdaptedEvent, PropsRef } from '../interfaces';
44

55
import GestureHandler from './GestureHandler';
66
import ScaleGestureDetector, {
@@ -51,7 +51,7 @@ export default class PinchGestureHandler extends GestureHandler {
5151

5252
public init(
5353
ref: number,
54-
propsRef: React.RefObject<unknown>,
54+
propsRef: React.RefObject<PropsRef>,
5555
actionType: ActionType
5656
) {
5757
super.init(ref, propsRef, actionType);

0 commit comments

Comments
 (0)