Skip to content

Commit c1c057f

Browse files
committed
Fix callback issue
1 parent d277729 commit c1c057f

File tree

1 file changed

+69
-68
lines changed

1 file changed

+69
-68
lines changed

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

Lines changed: 69 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -335,23 +335,22 @@ public void tagsAvailable(JSONObject tags) {
335335

336336
@ReactMethod
337337
public void setEmail(String email, String emailAuthToken, final Callback callback) {
338+
final Callback[] callbackArr = new Callback[]{ callback };
338339
OneSignal.setEmail(email, emailAuthToken, new EmailUpdateHandler() {
339340
@Override
340341
public void onSuccess() {
341-
Callback callbackCopy = callback;
342-
if (callbackCopy != null) {
343-
callbackCopy.invoke();
344-
callbackCopy = null;
345-
}
342+
if (callbackArr[0] != null) {
343+
callbackArr[0].invoke();
344+
callbackArr[0] = null;
345+
}
346346
}
347347

348348
@Override
349349
public void onFailure(EmailUpdateError error) {
350350
try {
351-
Callback callbackCopy = callback;
352-
if (callbackCopy != null) {
353-
callbackCopy.invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
354-
callbackCopy = null;
351+
if (callbackArr[0] != null) {
352+
callbackArr[0].invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
353+
callbackArr[0] = null;
355354
}
356355
} catch (JSONException exception) {
357356
exception.printStackTrace();
@@ -362,23 +361,22 @@ public void onFailure(EmailUpdateError error) {
362361

363362
@ReactMethod
364363
public void logoutEmail(final Callback callback) {
364+
final Callback[] callbackArr = new Callback[]{ callback };
365365
OneSignal.logoutEmail(new EmailUpdateHandler() {
366366
@Override
367367
public void onSuccess() {
368-
Callback callbackCopy = callback;
369-
if (callbackCopy != null) {
370-
callbackCopy.invoke();
371-
callbackCopy = null;
372-
}
368+
if (callbackArr[0] != null) {
369+
callbackArr[0].invoke();
370+
callbackArr[0] = null;
371+
}
373372
}
374373

375374
@Override
376375
public void onFailure(EmailUpdateError error) {
377376
try {
378-
Callback callbackCopy = callback;
379-
if (callbackCopy != null) {
380-
callbackCopy.invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
381-
callbackCopy = null;
377+
if (callbackArr[0] != null) {
378+
callbackArr[0].invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
379+
callbackArr[0] = null;
382380
}
383381
} catch (JSONException exception) {
384382
exception.printStackTrace();
@@ -389,23 +387,22 @@ public void onFailure(EmailUpdateError error) {
389387

390388
@ReactMethod
391389
public void setSMSNumber(String smsNumber, String smsAuthToken, final Callback callback) {
390+
final Callback[] callbackArr = new Callback[]{ callback };
392391
OneSignal.setSMSNumber(smsNumber, smsAuthToken, new OneSignal.OSSMSUpdateHandler() {
393392
@Override
394393
public void onSuccess(JSONObject result) {
395-
Callback callbackCopy = callback;
396-
if (callbackCopy != null) {
397-
callbackCopy.invoke(RNUtils.jsonToWritableMap(result));
398-
callbackCopy = null;
399-
}
394+
if (callbackArr[0] != null) {
395+
callbackArr[0].invoke(RNUtils.jsonToWritableMap(result));
396+
callbackArr[0] = null;
397+
}
400398
}
401399

402400
@Override
403401
public void onFailure(OneSignal.OSSMSUpdateError error) {
404402
try {
405-
Callback callbackCopy = callback;
406-
if (callbackCopy != null) {
407-
callbackCopy.invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
408-
callbackCopy = null;
403+
if (callbackArr[0] != null) {
404+
callbackArr[0].invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
405+
callbackArr[0] = null;
409406
}
410407
} catch (JSONException exception) {
411408
exception.printStackTrace();
@@ -416,23 +413,22 @@ public void onFailure(OneSignal.OSSMSUpdateError error) {
416413

417414
@ReactMethod
418415
public void logoutSMSNumber(final Callback callback) {
416+
final Callback[] callbackArr = new Callback[]{ callback };
419417
OneSignal.logoutSMSNumber(new OneSignal.OSSMSUpdateHandler() {
420418
@Override
421419
public void onSuccess(JSONObject result) {
422-
Callback callbackCopy = callback;
423-
if (callbackCopy != null) {
424-
callbackCopy.invoke(RNUtils.jsonToWritableMap(result));
425-
callbackCopy = null;
426-
}
420+
if (callbackArr[0] != null) {
421+
callbackArr[0].invoke(RNUtils.jsonToWritableMap(result));
422+
callbackArr[0] = null;
423+
}
427424
}
428425

429426
@Override
430427
public void onFailure(OneSignal.OSSMSUpdateError error) {
431428
try {
432-
Callback callbackCopy = callback;
433-
if (callbackCopy != null) {
434-
callbackCopy.invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
435-
callbackCopy = null;
429+
if (callbackArr[0] != null) {
430+
callbackArr[0].invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
431+
callbackArr[0] = null;
436432
}
437433
} catch (JSONException exception) {
438434
exception.printStackTrace();
@@ -463,19 +459,26 @@ public void setLocationShared(Boolean shared) {
463459

464460
@ReactMethod
465461
public void postNotification(String jsonObjectString, final Callback successCallback, final Callback failureCallback) {
462+
final Callback[] callbackArr = new Callback[]{ successCallback, failureCallback };
466463
OneSignal.postNotification(
467464
jsonObjectString,
468465
new OneSignal.PostNotificationResponseHandler() {
469466
@Override
470467
public void onSuccess(JSONObject response) {
471468
Log.i("OneSignal", "postNotification Success: " + response.toString());
472-
successCallback.invoke(RNUtils.jsonToWritableMap(response));
469+
if (callbackArr[0] != null) {
470+
callbackArr[0].invoke(RNUtils.jsonToWritableMap(response));
471+
callbackArr[0] = null;
472+
}
473473
}
474474

475475
@Override
476476
public void onFailure(JSONObject response) {
477477
Log.e("OneSignal", "postNotification Failure: " + response.toString());
478-
failureCallback.invoke(RNUtils.jsonToWritableMap(response));
478+
if (callbackArr[1] != null) {
479+
callbackArr[1].invoke(RNUtils.jsonToWritableMap(response));
480+
callbackArr[1] = null;
481+
}
479482
}
480483
}
481484
);
@@ -516,51 +519,49 @@ public void userProvidedPrivacyConsent(Promise promise) {
516519
promise.resolve(OneSignal.userProvidedPrivacyConsent());
517520
}
518521

519-
@ReactMethod
520-
public void setExternalUserId(final String externalId, final String authHashToken, final Callback callback) {
521-
OneSignal.setExternalUserId(externalId, authHashToken, new OneSignal.OSExternalUserIdUpdateCompletionHandler() {
522-
@Override
523-
public void onSuccess(JSONObject results) {
524-
Log.i("OneSignal", "Completed setting external user id: " + externalId + "with results: " + results.toString());
522+
@ReactMethod
523+
public void setExternalUserId(final String externalId, final String authHashToken, final Callback callback) {
524+
final Callback[] callbackArr = new Callback[]{ callback };
525+
OneSignal.setExternalUserId(externalId, authHashToken, new OneSignal.OSExternalUserIdUpdateCompletionHandler() {
526+
@Override
527+
public void onSuccess(JSONObject results) {
528+
Log.i("OneSignal", "Completed setting external user id: " + externalId + "with results: " + results.toString());
525529

526-
Callback callbackCopy = callback;
527-
if (callbackCopy != null) {
528-
callbackCopy.invoke(RNUtils.jsonToWritableMap(results));
529-
callbackCopy = null;
530-
}
531-
}
530+
if (callbackArr[0] != null) {
531+
callbackArr[0].invoke(RNUtils.jsonToWritableMap(results));
532+
callbackArr[0] = null;
533+
}
534+
}
532535

533-
@Override
534-
public void onFailure(OneSignal.ExternalIdError error) {
535-
Callback callbackCopy = callback;
536-
if (callbackCopy != null) {
537-
callbackCopy.invoke(error.getMessage());
538-
callbackCopy = null;
539-
}
540-
}
541-
});
542-
}
536+
@Override
537+
public void onFailure(OneSignal.ExternalIdError error) {
538+
if (callbackArr[0] != null) {
539+
callbackArr[0].invoke(error.getMessage());
540+
callbackArr[0] = null;
541+
}
542+
}
543+
});
544+
}
543545

544546
@ReactMethod
545547
public void removeExternalUserId(final Callback callback) {
548+
final Callback[] callbackArr = new Callback[]{ callback };
546549
OneSignal.removeExternalUserId(new OneSignal.OSExternalUserIdUpdateCompletionHandler() {
547550
@Override
548551
public void onSuccess(JSONObject results) {
549552
Log.i("OneSignal", "Completed removing external user id with results: " + results.toString());
550553

551-
Callback callbackCopy = callback;
552-
if (callbackCopy != null) {
553-
callbackCopy.invoke(RNUtils.jsonToWritableMap(results));
554-
callbackCopy = null;
554+
if (callbackArr[0] != null) {
555+
callbackArr[0].invoke(RNUtils.jsonToWritableMap(results));
556+
callbackArr[0] = null;
555557
}
556558
}
557559

558560
@Override
559561
public void onFailure(OneSignal.ExternalIdError error) {
560-
Callback callbackCopy = callback;
561-
if (callbackCopy != null) {
562-
callbackCopy.invoke(error.getMessage());
563-
callbackCopy = null;
562+
if (callbackArr[0] != null) {
563+
callbackArr[0].invoke(error.getMessage());
564+
callbackArr[0] = null;
564565
}
565566
}
566567
});

0 commit comments

Comments
 (0)