Skip to content

Commit adc3c22

Browse files
committed
send event refactor
1 parent 0cabeb7 commit adc3c22

File tree

1 file changed

+43
-28
lines changed

1 file changed

+43
-28
lines changed

packages/react-native-gesture-handler/apple/RNGestureHandlerManager.mm

Lines changed: 43 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -312,36 +312,17 @@ - (void)sendEvent:(RNGestureHandlerStateChange *)event
312312
case RNGestureHandlerActionTypeLogicDetector: {
313313
NSNumber *hostDetectorTag = [_registry handlerWithTag:event.handlerTag].hostDetectorTag;
314314
detectorView = [self viewForReactTag:hostDetectorTag];
315-
// intentionally fall through to RNGestureHandlerActionTypeNativeDetector
315+
[self sendNativeOrLogicEvent:event
316+
withActionType:actionType
317+
forHandlerType:eventHandlerType
318+
forView:detectorView];
319+
break;
316320
}
317321
case RNGestureHandlerActionTypeNativeDetector: {
318-
if ([event isKindOfClass:[RNGestureHandlerEvent class]]) {
319-
switch (eventHandlerType) {
320-
case RNGestureHandlerEventHandlerTypeAnimated:
321-
[self sendEventForNativeAnimatedEvent:event];
322-
break;
323-
case RNGestureHandlerEventHandlerTypeReanimated: {
324-
RNGestureHandlerEvent *gestureEvent = (RNGestureHandlerEvent *)event;
325-
auto nativeEvent = [gestureEvent getReanimatedNativeEvent];
326-
[(RNGestureHandlerDetector *)detectorView dispatchReanimatedGestureEvent:nativeEvent];
327-
break;
328-
}
329-
case RNGestureHandlerEventHandlerTypeJS: {
330-
RNGestureHandlerEvent *gestureEvent = (RNGestureHandlerEvent *)event;
331-
auto nativeEvent = [gestureEvent getNativeEvent];
332-
[(RNGestureHandlerDetector *)detectorView dispatchGestureEvent:nativeEvent];
333-
break;
334-
}
335-
}
336-
} else {
337-
if (eventHandlerType == RNGestureHandlerEventHandlerTypeReanimated) {
338-
auto nativeEvent = [event getReanimatedNativeEvent];
339-
[(RNGestureHandlerDetector *)detectorView dispatchReanimatedStateChangeEvent:nativeEvent];
340-
} else {
341-
auto nativeEvent = [event getNativeEvent];
342-
[(RNGestureHandlerDetector *)detectorView dispatchStateChangeEvent:nativeEvent];
343-
}
344-
}
322+
[self sendNativeOrLogicEvent:event
323+
withActionType:actionType
324+
forHandlerType:eventHandlerType
325+
forView:detectorView];
345326
break;
346327
}
347328

@@ -488,6 +469,40 @@ - (void)sendEventForDeviceEvent:(RNGestureHandlerStateChange *)event
488469
[_eventDispatcher sendDeviceEventWithName:@"onGestureHandlerStateChange" body:body];
489470
}
490471

472+
- (void)sendNativeOrLogicEvent:(RNGestureHandlerStateChange *)event
473+
withActionType:(RNGestureHandlerActionType)actionType
474+
forHandlerType:(RNGestureHandlerEventHandlerType)eventHandlerType
475+
forView:(RNGHUIView *)detectorView
476+
{
477+
if ([event isKindOfClass:[RNGestureHandlerEvent class]]) {
478+
switch (eventHandlerType) {
479+
case RNGestureHandlerEventHandlerTypeAnimated:
480+
[self sendEventForNativeAnimatedEvent:event];
481+
break;
482+
case RNGestureHandlerEventHandlerTypeReanimated: {
483+
RNGestureHandlerEvent *gestureEvent = (RNGestureHandlerEvent *)event;
484+
auto nativeEvent = [gestureEvent getReanimatedNativeEvent];
485+
[(RNGestureHandlerDetector *)detectorView dispatchReanimatedGestureEvent:nativeEvent];
486+
break;
487+
}
488+
case RNGestureHandlerEventHandlerTypeJS: {
489+
RNGestureHandlerEvent *gestureEvent = (RNGestureHandlerEvent *)event;
490+
auto nativeEvent = [gestureEvent getNativeEvent];
491+
[(RNGestureHandlerDetector *)detectorView dispatchGestureEvent:nativeEvent];
492+
break;
493+
}
494+
}
495+
} else {
496+
if (eventHandlerType == RNGestureHandlerEventHandlerTypeReanimated) {
497+
auto nativeEvent = [event getReanimatedNativeEvent];
498+
[(RNGestureHandlerDetector *)detectorView dispatchReanimatedStateChangeEvent:nativeEvent];
499+
} else {
500+
auto nativeEvent = [event getNativeEvent];
501+
[(RNGestureHandlerDetector *)detectorView dispatchStateChangeEvent:nativeEvent];
502+
}
503+
}
504+
}
505+
491506
- (RNGHUIView *)viewForReactTag:(NSNumber *)reactTag
492507
{
493508
return [_viewRegistry viewForReactTag:reactTag];

0 commit comments

Comments
 (0)