@@ -19,6 +19,8 @@ @implementation RCTOneSignalEventEmitter {
1919}
2020
2121static BOOL _didStartObserving = false ;
22+ // Static reference to track current instance for cleanup on reload
23+ static RCTOneSignalEventEmitter *_currentInstance = nil ;
2224
2325+ (BOOL )hasSetBridge {
2426 return _didStartObserving;
@@ -48,6 +50,13 @@ - (instancetype)init {
4850 selector: @selector (emitEvent: )
4951 name: eventName
5052 object: nil ];
53+
54+ // Clean up previous instance if it exists (handles reload scenario)
55+ if (_currentInstance != nil && _currentInstance != self) {
56+ [_currentInstance removeHandlers ];
57+ [_currentInstance removeObservers ];
58+ }
59+ _currentInstance = self;
5160 }
5261
5362 return self;
@@ -64,6 +73,8 @@ - (void)startObserving {
6473
6574- (void )stopObserving {
6675 _hasListeners = false ;
76+ [self removeHandlers ];
77+ [self removeObservers ];
6778}
6879
6980- (NSArray <NSString *> *)supportedEvents {
@@ -584,4 +595,28 @@ + (void)sendEventWithName:(NSString *)name withBody:(NSDictionary *)body {
584595 // iOS Stub
585596}
586597
598+ - (void )removeObservers {
599+ [self removePermissionObserver ];
600+ [self removePushSubscriptionObserver ];
601+ [self removeUserStateObserver ];
602+ }
603+
604+ - (void )removeHandlers {
605+ [OneSignal.InAppMessages removeClickListener: [RCTOneSignal sharedInstance ]];
606+ _hasAddedInAppMessageClickListener = false ;
607+ [OneSignal.InAppMessages removeLifecycleListener: [RCTOneSignal sharedInstance ]];
608+ _hasAddedInAppMessageLifecycleListener = false ;
609+ [OneSignal.Notifications removeClickListener: [RCTOneSignal sharedInstance ]];
610+ _hasAddedNotificationClickListener = false ;
611+ [OneSignal.Notifications removeForegroundLifecycleListener: self ];
612+ _hasAddedNotificationForegroundLifecycleListener = false ;
613+ }
614+
615+ - (void )removeUserStateObserver {
616+ if (_hasSetUserStateObserver) {
617+ [OneSignal.User removeObserver: [RCTOneSignal sharedInstance ]];
618+ _hasSetUserStateObserver = false ;
619+ }
620+ }
621+
587622@end
0 commit comments