diff --git a/Libraries/NativeAnimation/RCTNativeAnimatedModule.mm b/Libraries/NativeAnimation/RCTNativeAnimatedModule.mm index 33fe87ad4d..5d72181502 100644 --- a/Libraries/NativeAnimation/RCTNativeAnimatedModule.mm +++ b/Libraries/NativeAnimation/RCTNativeAnimatedModule.mm @@ -48,7 +48,7 @@ RCT_EXPORT_MODULE(); { [super invalidate]; [_nodesManager stopAnimationLoop]; - [self.bridge.eventDispatcher removeDispatchObserver:self]; + [[self.moduleRegistry moduleForName:"EventDispatcher"] removeDispatchObserver:self]; [self.bridge.uiManager.observerCoordinator removeObserver:self]; [self.bridge.surfacePresenter removeObserver:self]; } @@ -65,11 +65,16 @@ RCT_EXPORT_MODULE(); { [super setBridge:bridge]; _nodesManager = [[RCTNativeAnimatedNodesManager alloc] initWithBridge:self.bridge surfacePresenter:bridge.surfacePresenter]; - [bridge.eventDispatcher addDispatchObserver:self]; [bridge.uiManager.observerCoordinator addObserver:self]; [bridge.surfacePresenter addObserver:self]; } +- (void)setModuleRegistry:(RCTModuleRegistry *)moduleRegistry +{ + [super setModuleRegistry:moduleRegistry]; + [[moduleRegistry moduleForName:"EventDispatcher"] addDispatchObserver:self]; +} + /* * This selector should only be invoked in bridgeless mode, which is not compatible with this non turbo module. */ diff --git a/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm b/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm index 45213380d8..e491139a93 100644 --- a/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm +++ b/Libraries/NativeAnimation/RCTNativeAnimatedTurboModule.mm @@ -49,7 +49,7 @@ RCT_EXPORT_MODULE(); { [super invalidate]; [_nodesManager stopAnimationLoop]; - [self.bridge.eventDispatcher removeDispatchObserver:self]; + [[self.moduleRegistry moduleForName:"EventDispatcher"] removeDispatchObserver:self]; [self.bridge.uiManager.observerCoordinator removeObserver:self]; [_surfacePresenter removeObserver:self]; } @@ -67,11 +67,16 @@ RCT_EXPORT_MODULE(); [super setBridge:bridge]; _surfacePresenter = bridge.surfacePresenter; _nodesManager = [[RCTNativeAnimatedNodesManager alloc] initWithBridge:self.bridge surfacePresenter:_surfacePresenter]; - [bridge.eventDispatcher addDispatchObserver:self]; [bridge.uiManager.observerCoordinator addObserver:self]; [_surfacePresenter addObserver:self]; } +- (void)setModuleRegistry:(RCTModuleRegistry *)moduleRegistry +{ + [super setModuleRegistry:moduleRegistry]; + [[moduleRegistry moduleForName:"EventDispatcher"] addDispatchObserver:self]; +} + /* * In bridgeless mode, `setBridge` is never called during initializtion. Instead this selector is invoked via * BridgelessTurboModuleSetup. diff --git a/React/CoreModules/RCTDevSettings.mm b/React/CoreModules/RCTDevSettings.mm index 4e11bd3c26..a165e48b0a 100644 --- a/React/CoreModules/RCTDevSettings.mm +++ b/React/CoreModules/RCTDevSettings.mm @@ -350,7 +350,7 @@ RCT_EXPORT_METHOD(toggleElementInspector) if (_isJSLoaded) { #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" - [self.bridge.eventDispatcher sendDeviceEventWithName:@"toggleElementInspector" body:nil]; + [[self.moduleRegistry moduleForName:"EventDispatcher"] sendDeviceEventWithName:@"toggleElementInspector" body:nil]; #pragma clang diagnostic pop } } @@ -463,7 +463,7 @@ RCT_EXPORT_METHOD(addMenuItem : (NSString *)title) if ([self isElementInspectorShown]) { #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" - [self.bridge.eventDispatcher sendDeviceEventWithName:@"toggleElementInspector" body:nil]; + [[self.moduleRegistry moduleForName:"EventDispatcher"] sendDeviceEventWithName:@"toggleElementInspector" body:nil]; #pragma clang diagnostic pop } }); diff --git a/React/CoreModules/RCTDeviceInfo.mm b/React/CoreModules/RCTDeviceInfo.mm index 7d540950e7..9d722f0ea8 100644 --- a/React/CoreModules/RCTDeviceInfo.mm +++ b/React/CoreModules/RCTDeviceInfo.mm @@ -152,12 +152,14 @@ static NSDictionary *RCTExportedDimensions(RCTBridge *bridge, id_turboModuleRegistry)]; + [[moduleRegistry moduleForName:"EventDispatcher"] + sendDeviceEventWithName:@"didUpdateDimensions" + body:RCTExportedDimensions(bridge, self->_turboModuleRegistry)]; #pragma clang diagnostic pop }); } diff --git a/React/Modules/RCTEventEmitter.h b/React/Modules/RCTEventEmitter.h index f72f53909f..bb1abd5f7d 100644 --- a/React/Modules/RCTEventEmitter.h +++ b/React/Modules/RCTEventEmitter.h @@ -15,6 +15,7 @@ @interface RCTEventEmitter : NSObject @property (nonatomic, weak) RCTBridge *bridge; +@property (nonatomic, weak) RCTModuleRegistry *moduleRegistry; - (instancetype)initWithDisabledObservation;