Skip to content

Commit b547fd0

Browse files
authored
fix: removes listeners when app is reloaded on android (#1874)
1 parent cbddc6a commit b547fd0

File tree

3 files changed

+17
-10
lines changed

3 files changed

+17
-10
lines changed

android/src/main/java/com/onesignal/rnonesignalandroid/RNOneSignal.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,9 @@ public class RNOneSignal extends ReactContextBaseJavaModule
9696
private boolean hasAddedNotificationClickListener = false;
9797
private boolean hasAddedInAppMessageClickListener = false;
9898

99+
// Static reference to track current instance for cleanup on reload
100+
private static RNOneSignal currentInstance = null;
101+
99102
private IInAppMessageClickListener rnInAppClickListener = new IInAppMessageClickListener() {
100103
@Override
101104
public void onClick(IInAppMessageClickEvent event) {
@@ -203,6 +206,13 @@ public RNOneSignal(ReactApplicationContext reactContext) {
203206
mReactContext.addLifecycleEventListener(this);
204207
notificationWillDisplayCache = new HashMap<String, INotificationWillDisplayEvent>();
205208
preventDefaultCache = new HashMap<String, INotificationWillDisplayEvent>();
209+
210+
// Clean up previous instance if it exists (handles reload scenario)
211+
if (currentInstance != null && currentInstance != this) {
212+
currentInstance.removeHandlers();
213+
currentInstance.removeObservers();
214+
}
215+
currentInstance = this;
206216
}
207217

208218
/** Native Module Overrides */

examples/RNOneSignalTS/OSDemo.tsx

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -135,16 +135,13 @@ const OSDemo: React.FC = () => {
135135
);
136136

137137
useEffect(() => {
138-
const initializeOneSignal = async () => {
139-
OneSignal.initialize(APP_ID);
140-
OneSignal.Debug.setLogLevel(LogLevel.None);
138+
OneSignal.initialize(APP_ID);
139+
OneSignal.Debug.setLogLevel(LogLevel.None);
140+
}, []);
141141

142+
useEffect(() => {
143+
const setup = async () => {
142144
OneSignal.LiveActivities.setupDefault();
143-
// OneSignal.LiveActivities.setupDefault({
144-
// enablePushToStart: false,
145-
// enablePushToUpdate: true,
146-
// });
147-
148145
OneSignal.Notifications.addEventListener(
149146
'foregroundWillDisplay',
150147
onForegroundWillDisplay,
@@ -166,7 +163,7 @@ const OSDemo: React.FC = () => {
166163
OneSignal.User.addEventListener('change', onUserChange);
167164
};
168165

169-
initializeOneSignal();
166+
setup();
170167

171168
return () => {
172169
// Clean up all event listeners

examples/RNOneSignalTS/ios/Podfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2665,7 +2665,7 @@ SPEC CHECKSUMS:
26652665
React-logger: a3cb5b29c32b8e447b5a96919340e89334062b48
26662666
React-Mapbuffer: 9d2434a42701d6144ca18f0ca1c4507808ca7696
26672667
React-microtasksnativemodule: 75b6604b667d297292345302cc5bfb6b6aeccc1b
2668-
react-native-onesignal: 6c5758aa56975db4bca9956d18d83dd62444c931
2668+
react-native-onesignal: b68c981956150f288c1585889871affcef3c0b8b
26692669
react-native-safe-area-context: c00143b4823773bba23f2f19f85663ae89ceb460
26702670
React-NativeModulesApple: 879fbdc5dcff7136abceb7880fe8a2022a1bd7c3
26712671
React-oscompat: 93b5535ea7f7dff46aaee4f78309a70979bdde9d

0 commit comments

Comments
 (0)