Skip to content

Commit 1dd1e29

Browse files
author
Rodrigo Gomez Palacio
authored
Merge pull request #1341 from OneSignal/fix/duplicate-callback-invocation-bug
Fix: duplicate callback invocation error
2 parents cfe5d54 + 97504fc commit 1dd1e29

File tree

4 files changed

+64
-20
lines changed

4 files changed

+64
-20
lines changed

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

Lines changed: 61 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -338,13 +338,21 @@ public void setEmail(String email, String emailAuthToken, final Callback callbac
338338
OneSignal.setEmail(email, emailAuthToken, new EmailUpdateHandler() {
339339
@Override
340340
public void onSuccess() {
341-
callback.invoke();
341+
Callback callbackCopy = callback;
342+
if (callbackCopy != null) {
343+
callbackCopy.invoke();
344+
callbackCopy = null;
345+
}
342346
}
343347

344348
@Override
345349
public void onFailure(EmailUpdateError error) {
346350
try {
347-
callback.invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
351+
Callback callbackCopy = callback;
352+
if (callbackCopy != null) {
353+
callbackCopy.invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
354+
callbackCopy = null;
355+
}
348356
} catch (JSONException exception) {
349357
exception.printStackTrace();
350358
}
@@ -357,13 +365,21 @@ public void logoutEmail(final Callback callback) {
357365
OneSignal.logoutEmail(new EmailUpdateHandler() {
358366
@Override
359367
public void onSuccess() {
360-
callback.invoke();
368+
Callback callbackCopy = callback;
369+
if (callbackCopy != null) {
370+
callbackCopy.invoke();
371+
callbackCopy = null;
372+
}
361373
}
362374

363375
@Override
364376
public void onFailure(EmailUpdateError error) {
365377
try {
366-
callback.invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
378+
Callback callbackCopy = callback;
379+
if (callbackCopy != null) {
380+
callbackCopy.invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
381+
callbackCopy = null;
382+
}
367383
} catch (JSONException exception) {
368384
exception.printStackTrace();
369385
}
@@ -376,13 +392,21 @@ public void setSMSNumber(String smsNumber, String smsAuthToken, final Callback c
376392
OneSignal.setSMSNumber(smsNumber, smsAuthToken, new OneSignal.OSSMSUpdateHandler() {
377393
@Override
378394
public void onSuccess(JSONObject result) {
379-
callback.invoke(RNUtils.jsonToWritableMap(result));
395+
Callback callbackCopy = callback;
396+
if (callbackCopy != null) {
397+
callbackCopy.invoke(RNUtils.jsonToWritableMap(result));
398+
callbackCopy = null;
399+
}
380400
}
381401

382402
@Override
383403
public void onFailure(OneSignal.OSSMSUpdateError error) {
384404
try {
385-
callback.invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
405+
Callback callbackCopy = callback;
406+
if (callbackCopy != null) {
407+
callbackCopy.invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
408+
callbackCopy = null;
409+
}
386410
} catch (JSONException exception) {
387411
exception.printStackTrace();
388412
}
@@ -395,13 +419,21 @@ public void logoutSMSNumber(final Callback callback) {
395419
OneSignal.logoutSMSNumber(new OneSignal.OSSMSUpdateHandler() {
396420
@Override
397421
public void onSuccess(JSONObject result) {
398-
callback.invoke(RNUtils.jsonToWritableMap(result));
422+
Callback callbackCopy = callback;
423+
if (callbackCopy != null) {
424+
callbackCopy.invoke(RNUtils.jsonToWritableMap(result));
425+
callbackCopy = null;
426+
}
399427
}
400428

401429
@Override
402430
public void onFailure(OneSignal.OSSMSUpdateError error) {
403431
try {
404-
callback.invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
432+
Callback callbackCopy = callback;
433+
if (callbackCopy != null) {
434+
callbackCopy.invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
435+
callbackCopy = null;
436+
}
405437
} catch (JSONException exception) {
406438
exception.printStackTrace();
407439
}
@@ -491,14 +523,20 @@ public void setExternalUserId(final String externalId, final String authHashToke
491523
public void onSuccess(JSONObject results) {
492524
Log.i("OneSignal", "Completed setting external user id: " + externalId + "with results: " + results.toString());
493525

494-
if (callback != null)
495-
callback.invoke(RNUtils.jsonToWritableMap(results));
526+
Callback callbackCopy = callback;
527+
if (callbackCopy != null) {
528+
callbackCopy.invoke(RNUtils.jsonToWritableMap(results));
529+
callbackCopy = null;
530+
}
496531
}
497532

498533
@Override
499534
public void onFailure(OneSignal.ExternalIdError error) {
500-
if (callback != null)
501-
callback.invoke(error.getMessage());
535+
Callback callbackCopy = callback;
536+
if (callbackCopy != null) {
537+
callbackCopy.invoke(error.getMessage());
538+
callbackCopy = null;
539+
}
502540
}
503541
});
504542
}
@@ -510,14 +548,20 @@ public void removeExternalUserId(final Callback callback) {
510548
public void onSuccess(JSONObject results) {
511549
Log.i("OneSignal", "Completed removing external user id with results: " + results.toString());
512550

513-
if (callback != null)
514-
callback.invoke(RNUtils.jsonToWritableMap(results));
551+
Callback callbackCopy = callback;
552+
if (callbackCopy != null) {
553+
callbackCopy.invoke(RNUtils.jsonToWritableMap(results));
554+
callbackCopy = null;
555+
}
515556
}
516557

517558
@Override
518559
public void onFailure(OneSignal.ExternalIdError error) {
519-
if (callback != null)
520-
callback.invoke(error.getMessage());
560+
Callback callbackCopy = callback;
561+
if (callbackCopy != null) {
562+
callbackCopy.invoke(error.getMessage());
563+
callbackCopy = null;
564+
}
521565
}
522566
});
523567
}
@@ -636,7 +680,7 @@ public void inAppMessageClicked(OSInAppMessageAction result) {
636680
}
637681
this.sendEvent("OneSignal-inAppMessageClicked", RNUtils.jsonToWritableMap(result.toJSONObject()));
638682
}
639-
683+
640684
/* in app message lifecycle */
641685

642686
@ReactMethod

examples/RNOneSignalTS/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"dependencies": {
1313
"react": "16.13.1",
1414
"react-native": "0.64.1",
15-
"react-native-onesignal": "4.3.3"
15+
"react-native-onesignal": "4.3.4"
1616
},
1717
"devDependencies": {
1818
"@babel/core": "^7.8.4",

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-native-onesignal",
3-
"version": "4.3.3",
3+
"version": "4.3.4",
44
"description": "React Native OneSignal SDK",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",

react-native-onesignal.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,5 @@ Pod::Spec.new do |s|
2222
# pod 'React', :path => '../node_modules/react-native/'
2323

2424
# The Native OneSignal-iOS-SDK XCFramework from cocoapods.
25-
s.dependency 'OneSignalXCFramework', '3.9.1'
25+
s.dependency 'OneSignalXCFramework', '3.10.0'
2626
end

0 commit comments

Comments
 (0)