Skip to content

Commit ad67778

Browse files
authored
Merge pull request #881 from OneSignal/outcomes
Outcomes
2 parents b303f3b + d3043cc commit ad67778

File tree

11 files changed

+2426
-1789
lines changed

11 files changed

+2426
-1789
lines changed

android/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ def safeExtGet(prop, fallback) {
55
}
66

77
android {
8-
compileSdkVersion safeExtGet('compileSdkVersion', 26)
9-
buildToolsVersion safeExtGet('buildToolsVersion', '26.0.2')
8+
compileSdkVersion safeExtGet('compileSdkVersion', 28)
9+
buildToolsVersion safeExtGet('buildToolsVersion', '28.0.3')
1010

1111
defaultConfig {
1212
minSdkVersion safeExtGet('minSdkVersion', 16)
@@ -24,7 +24,7 @@ dependencies {
2424

2525
// api is used instead of implementation so the parent :app project can access any of the OneSignal Java
2626
// classes if needed. Such as com.onesignal.NotificationExtenderService
27-
api 'com.onesignal:OneSignal:3.11.4'
27+
api 'com.onesignal:OneSignal:3.12.2'
2828

2929
testImplementation 'junit:junit:4.12'
3030
}

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

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.geektime.rnonesignalandroid;
22

3-
import java.util.Collection;
43
import java.util.Iterator;
54

65
import android.content.Context;
@@ -18,6 +17,7 @@
1817
import com.facebook.react.bridge.ReadableArray;
1918
import com.facebook.react.bridge.ReadableMap;
2019
import com.facebook.react.bridge.WritableMap;
20+
import com.facebook.react.bridge.WritableNativeMap;
2121
import com.facebook.react.modules.core.DeviceEventManagerModule;
2222
import com.facebook.react.bridge.Promise;
2323
import com.onesignal.OSInAppMessageAction;
@@ -28,12 +28,14 @@
2828
import com.onesignal.OneSignal;
2929
import com.onesignal.OneSignal.EmailUpdateHandler;
3030
import com.onesignal.OneSignal.EmailUpdateError;
31+
import com.onesignal.OneSignal.OutcomeCallback;
3132

3233
import com.onesignal.OneSignal.InAppMessageClickHandler;
3334
import com.onesignal.OneSignal.NotificationOpenedHandler;
3435
import com.onesignal.OneSignal.NotificationReceivedHandler;
3536
import com.onesignal.OSNotificationOpenResult;
3637
import com.onesignal.OSNotification;
38+
import com.onesignal.OutcomeEvent;
3739

3840
import org.json.JSONObject;
3941
import org.json.JSONArray;
@@ -422,6 +424,10 @@ public void notificationOpened(OSNotificationOpenResult result) {
422424
this.sendEvent("OneSignal-remoteNotificationOpened", RNUtils.jsonToWritableMap(result.toJSONObject()));
423425
}
424426

427+
/**
428+
* In-App Messaging
429+
*/
430+
425431
@ReactMethod
426432
public void addTrigger(String key, Object object) {
427433
OneSignal.addTrigger(key, object);
@@ -470,6 +476,53 @@ public void inAppMessageClicked(OSInAppMessageAction result) {
470476
this.sendEvent("OneSignal-inAppMessageClicked", RNUtils.jsonToWritableMap(result.toJSONObject()));
471477
}
472478

479+
/**
480+
* Outcomes
481+
*/
482+
483+
@ReactMethod
484+
public void sendOutcome(String name, final Callback callback) {
485+
OneSignal.sendOutcome(name, new OutcomeCallback() {
486+
@Override
487+
public void onSuccess(OutcomeEvent outcomeEvent) {
488+
if (outcomeEvent == null)
489+
callback.invoke(new WritableNativeMap());
490+
else
491+
callback.invoke(RNUtils.jsonToWritableMap(outcomeEvent.toJSONObject()));
492+
}
493+
});
494+
}
495+
496+
@ReactMethod
497+
public void sendUniqueOutcome(String name, final Callback callback) {
498+
OneSignal.sendUniqueOutcome(name, new OutcomeCallback() {
499+
@Override
500+
public void onSuccess(OutcomeEvent outcomeEvent) {
501+
if (outcomeEvent == null)
502+
callback.invoke(new WritableNativeMap());
503+
else
504+
callback.invoke(RNUtils.jsonToWritableMap(outcomeEvent.toJSONObject()));
505+
}
506+
});
507+
}
508+
509+
@ReactMethod
510+
public void sendOutcomeWithValue(String name, float value, final Callback callback) {
511+
OneSignal.sendOutcomeWithValue(name, value, new OutcomeCallback() {
512+
@Override
513+
public void onSuccess(OutcomeEvent outcomeEvent) {
514+
if (outcomeEvent == null)
515+
callback.invoke(new WritableNativeMap());
516+
else
517+
callback.invoke(RNUtils.jsonToWritableMap(outcomeEvent.toJSONObject()));
518+
}
519+
});
520+
}
521+
522+
/**
523+
* Overrides
524+
*/
525+
473526
@Override
474527
public String getName() {
475528
return "OneSignal";

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

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -106,14 +106,17 @@ public static WritableMap jsonToWritableMap(JSONObject jsonObject) {
106106
writableMap.putBoolean(key, (Boolean) value);
107107
} else if (value instanceof Integer) {
108108
writableMap.putInt(key, (Integer) value);
109-
} else if (value instanceof Double) {
110-
writableMap.putDouble(key, (Double) value);
109+
} else if (value instanceof Double || value instanceof Long || value instanceof Float) {
110+
String str = String.valueOf(value);
111+
writableMap.putDouble(key, Double.parseDouble(str));
111112
} else if (value instanceof String) {
112-
writableMap.putString(key, (String) value);
113+
writableMap.putString(key, value.toString());
113114
} else if (value instanceof JSONObject) {
114115
writableMap.putMap(key, jsonToWritableMap((JSONObject) value));
115116
} else if (value instanceof JSONArray) {
116117
writableMap.putArray(key, jsonArrayToWritableArray((JSONArray) value));
118+
} else if (value.getClass().isEnum()) {
119+
writableMap.putString(key, value.toString());
117120
}
118121
} catch (JSONException ex) {
119122
// Do nothing and fail silently
@@ -138,20 +141,24 @@ public static WritableArray jsonArrayToWritableArray(JSONArray jsonArray) {
138141
for (int i = 0 ; i < jsonArray.length(); i++) {
139142
try {
140143
Object value = jsonArray.get(i);
144+
141145
if (value == null) {
142146
writableArray.pushNull();
143147
} else if (value instanceof Boolean) {
144148
writableArray.pushBoolean((Boolean) value);
145149
} else if (value instanceof Integer) {
146150
writableArray.pushInt((Integer) value);
147-
} else if (value instanceof Double) {
148-
writableArray.pushDouble((Double) value);
151+
} else if (value instanceof Double || value instanceof Long || value instanceof Float) {
152+
String str = String.valueOf(value);
153+
writableArray.pushDouble(Double.parseDouble(str));
149154
} else if (value instanceof String) {
150-
writableArray.pushString((String) value);
155+
writableArray.pushString(value.toString());
151156
} else if (value instanceof JSONObject) {
152157
writableArray.pushMap(jsonToWritableMap((JSONObject) value));
153158
} else if (value instanceof JSONArray) {
154159
writableArray.pushArray(jsonArrayToWritableArray((JSONArray) value));
160+
} else if (value.getClass().isEnum()) {
161+
writableArray.pushString(value.toString());
155162
}
156163
} catch (JSONException e) {
157164
// Do nothing and fail silently

0 commit comments

Comments
 (0)