Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix double-callback issue #1385

Merged
merged 1 commit into from
May 5, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
137 changes: 69 additions & 68 deletions android/src/main/java/com/geektime/rnonesignalandroid/RNOneSignal.java
Original file line number Diff line number Diff line change
Expand Up @@ -335,23 +335,22 @@ public void tagsAvailable(JSONObject tags) {

@ReactMethod
public void setEmail(String email, String emailAuthToken, final Callback callback) {
final Callback[] callbackArr = new Callback[]{ callback };
OneSignal.setEmail(email, emailAuthToken, new EmailUpdateHandler() {
@Override
public void onSuccess() {
Callback callbackCopy = callback;
if (callbackCopy != null) {
callbackCopy.invoke();
callbackCopy = null;
}
if (callbackArr[0] != null) {
callbackArr[0].invoke();
callbackArr[0] = null;
}
}

@Override
public void onFailure(EmailUpdateError error) {
try {
Callback callbackCopy = callback;
if (callbackCopy != null) {
callbackCopy.invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
callbackCopy = null;
if (callbackArr[0] != null) {
callbackArr[0].invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
callbackArr[0] = null;
}
} catch (JSONException exception) {
exception.printStackTrace();
Expand All @@ -362,23 +361,22 @@ public void onFailure(EmailUpdateError error) {

@ReactMethod
public void logoutEmail(final Callback callback) {
final Callback[] callbackArr = new Callback[]{ callback };
OneSignal.logoutEmail(new EmailUpdateHandler() {
@Override
public void onSuccess() {
Callback callbackCopy = callback;
if (callbackCopy != null) {
callbackCopy.invoke();
callbackCopy = null;
}
if (callbackArr[0] != null) {
callbackArr[0].invoke();
callbackArr[0] = null;
}
}

@Override
public void onFailure(EmailUpdateError error) {
try {
Callback callbackCopy = callback;
if (callbackCopy != null) {
callbackCopy.invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
callbackCopy = null;
if (callbackArr[0] != null) {
callbackArr[0].invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
callbackArr[0] = null;
}
} catch (JSONException exception) {
exception.printStackTrace();
Expand All @@ -389,23 +387,22 @@ public void onFailure(EmailUpdateError error) {

@ReactMethod
public void setSMSNumber(String smsNumber, String smsAuthToken, final Callback callback) {
final Callback[] callbackArr = new Callback[]{ callback };
OneSignal.setSMSNumber(smsNumber, smsAuthToken, new OneSignal.OSSMSUpdateHandler() {
@Override
public void onSuccess(JSONObject result) {
Callback callbackCopy = callback;
if (callbackCopy != null) {
callbackCopy.invoke(RNUtils.jsonToWritableMap(result));
callbackCopy = null;
}
if (callbackArr[0] != null) {
callbackArr[0].invoke(RNUtils.jsonToWritableMap(result));
callbackArr[0] = null;
}
}

@Override
public void onFailure(OneSignal.OSSMSUpdateError error) {
try {
Callback callbackCopy = callback;
if (callbackCopy != null) {
callbackCopy.invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
callbackCopy = null;
if (callbackArr[0] != null) {
callbackArr[0].invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
callbackArr[0] = null;
}
} catch (JSONException exception) {
exception.printStackTrace();
Expand All @@ -416,23 +413,22 @@ public void onFailure(OneSignal.OSSMSUpdateError error) {

@ReactMethod
public void logoutSMSNumber(final Callback callback) {
final Callback[] callbackArr = new Callback[]{ callback };
OneSignal.logoutSMSNumber(new OneSignal.OSSMSUpdateHandler() {
@Override
public void onSuccess(JSONObject result) {
Callback callbackCopy = callback;
if (callbackCopy != null) {
callbackCopy.invoke(RNUtils.jsonToWritableMap(result));
callbackCopy = null;
}
if (callbackArr[0] != null) {
callbackArr[0].invoke(RNUtils.jsonToWritableMap(result));
callbackArr[0] = null;
}
}

@Override
public void onFailure(OneSignal.OSSMSUpdateError error) {
try {
Callback callbackCopy = callback;
if (callbackCopy != null) {
callbackCopy.invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
callbackCopy = null;
if (callbackArr[0] != null) {
callbackArr[0].invoke(RNUtils.jsonToWritableMap(jsonFromErrorMessageString(error.getMessage())));
callbackArr[0] = null;
}
} catch (JSONException exception) {
exception.printStackTrace();
Expand Down Expand Up @@ -463,19 +459,26 @@ public void setLocationShared(Boolean shared) {

@ReactMethod
public void postNotification(String jsonObjectString, final Callback successCallback, final Callback failureCallback) {
final Callback[] callbackArr = new Callback[]{ successCallback, failureCallback };
OneSignal.postNotification(
jsonObjectString,
new OneSignal.PostNotificationResponseHandler() {
@Override
public void onSuccess(JSONObject response) {
Log.i("OneSignal", "postNotification Success: " + response.toString());
successCallback.invoke(RNUtils.jsonToWritableMap(response));
if (callbackArr[0] != null) {
callbackArr[0].invoke(RNUtils.jsonToWritableMap(response));
callbackArr[0] = null;
}
}

@Override
public void onFailure(JSONObject response) {
Log.e("OneSignal", "postNotification Failure: " + response.toString());
failureCallback.invoke(RNUtils.jsonToWritableMap(response));
if (callbackArr[1] != null) {
callbackArr[1].invoke(RNUtils.jsonToWritableMap(response));
callbackArr[1] = null;
}
}
}
);
Expand Down Expand Up @@ -516,51 +519,49 @@ public void userProvidedPrivacyConsent(Promise promise) {
promise.resolve(OneSignal.userProvidedPrivacyConsent());
}

@ReactMethod
public void setExternalUserId(final String externalId, final String authHashToken, final Callback callback) {
OneSignal.setExternalUserId(externalId, authHashToken, new OneSignal.OSExternalUserIdUpdateCompletionHandler() {
@Override
public void onSuccess(JSONObject results) {
Log.i("OneSignal", "Completed setting external user id: " + externalId + "with results: " + results.toString());
@ReactMethod
public void setExternalUserId(final String externalId, final String authHashToken, final Callback callback) {
final Callback[] callbackArr = new Callback[]{ callback };
OneSignal.setExternalUserId(externalId, authHashToken, new OneSignal.OSExternalUserIdUpdateCompletionHandler() {
@Override
public void onSuccess(JSONObject results) {
Log.i("OneSignal", "Completed setting external user id: " + externalId + "with results: " + results.toString());

Callback callbackCopy = callback;
if (callbackCopy != null) {
callbackCopy.invoke(RNUtils.jsonToWritableMap(results));
callbackCopy = null;
}
}
if (callbackArr[0] != null) {
callbackArr[0].invoke(RNUtils.jsonToWritableMap(results));
callbackArr[0] = null;
}
}

@Override
public void onFailure(OneSignal.ExternalIdError error) {
Callback callbackCopy = callback;
if (callbackCopy != null) {
callbackCopy.invoke(error.getMessage());
callbackCopy = null;
}
}
});
}
@Override
public void onFailure(OneSignal.ExternalIdError error) {
if (callbackArr[0] != null) {
callbackArr[0].invoke(error.getMessage());
callbackArr[0] = null;
}
}
});
}

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

Callback callbackCopy = callback;
if (callbackCopy != null) {
callbackCopy.invoke(RNUtils.jsonToWritableMap(results));
callbackCopy = null;
if (callbackArr[0] != null) {
callbackArr[0].invoke(RNUtils.jsonToWritableMap(results));
callbackArr[0] = null;
}
}

@Override
public void onFailure(OneSignal.ExternalIdError error) {
Callback callbackCopy = callback;
if (callbackCopy != null) {
callbackCopy.invoke(error.getMessage());
callbackCopy = null;
if (callbackArr[0] != null) {
callbackArr[0].invoke(error.getMessage());
callbackArr[0] = null;
}
}
});
Expand Down