Skip to content

Commit

Permalink
Merge pull request #881 from OneSignal/outcomes
Browse files Browse the repository at this point in the history
Outcomes
  • Loading branch information
mikechoch authored Oct 25, 2019
2 parents b303f3b + d3043cc commit ad67778
Show file tree
Hide file tree
Showing 11 changed files with 2,426 additions and 1,789 deletions.
6 changes: 3 additions & 3 deletions android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ def safeExtGet(prop, fallback) {
}

android {
compileSdkVersion safeExtGet('compileSdkVersion', 26)
buildToolsVersion safeExtGet('buildToolsVersion', '26.0.2')
compileSdkVersion safeExtGet('compileSdkVersion', 28)
buildToolsVersion safeExtGet('buildToolsVersion', '28.0.3')

defaultConfig {
minSdkVersion safeExtGet('minSdkVersion', 16)
Expand All @@ -24,7 +24,7 @@ dependencies {

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

testImplementation 'junit:junit:4.12'
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.geektime.rnonesignalandroid;

import java.util.Collection;
import java.util.Iterator;

import android.content.Context;
Expand All @@ -18,6 +17,7 @@
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.bridge.WritableNativeMap;
import com.facebook.react.modules.core.DeviceEventManagerModule;
import com.facebook.react.bridge.Promise;
import com.onesignal.OSInAppMessageAction;
Expand All @@ -28,12 +28,14 @@
import com.onesignal.OneSignal;
import com.onesignal.OneSignal.EmailUpdateHandler;
import com.onesignal.OneSignal.EmailUpdateError;
import com.onesignal.OneSignal.OutcomeCallback;

import com.onesignal.OneSignal.InAppMessageClickHandler;
import com.onesignal.OneSignal.NotificationOpenedHandler;
import com.onesignal.OneSignal.NotificationReceivedHandler;
import com.onesignal.OSNotificationOpenResult;
import com.onesignal.OSNotification;
import com.onesignal.OutcomeEvent;

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

/**
* In-App Messaging
*/

@ReactMethod
public void addTrigger(String key, Object object) {
OneSignal.addTrigger(key, object);
Expand Down Expand Up @@ -470,6 +476,53 @@ public void inAppMessageClicked(OSInAppMessageAction result) {
this.sendEvent("OneSignal-inAppMessageClicked", RNUtils.jsonToWritableMap(result.toJSONObject()));
}

/**
* Outcomes
*/

@ReactMethod
public void sendOutcome(String name, final Callback callback) {
OneSignal.sendOutcome(name, new OutcomeCallback() {
@Override
public void onSuccess(OutcomeEvent outcomeEvent) {
if (outcomeEvent == null)
callback.invoke(new WritableNativeMap());
else
callback.invoke(RNUtils.jsonToWritableMap(outcomeEvent.toJSONObject()));
}
});
}

@ReactMethod
public void sendUniqueOutcome(String name, final Callback callback) {
OneSignal.sendUniqueOutcome(name, new OutcomeCallback() {
@Override
public void onSuccess(OutcomeEvent outcomeEvent) {
if (outcomeEvent == null)
callback.invoke(new WritableNativeMap());
else
callback.invoke(RNUtils.jsonToWritableMap(outcomeEvent.toJSONObject()));
}
});
}

@ReactMethod
public void sendOutcomeWithValue(String name, float value, final Callback callback) {
OneSignal.sendOutcomeWithValue(name, value, new OutcomeCallback() {
@Override
public void onSuccess(OutcomeEvent outcomeEvent) {
if (outcomeEvent == null)
callback.invoke(new WritableNativeMap());
else
callback.invoke(RNUtils.jsonToWritableMap(outcomeEvent.toJSONObject()));
}
});
}

/**
* Overrides
*/

@Override
public String getName() {
return "OneSignal";
Expand Down
19 changes: 13 additions & 6 deletions android/src/main/java/com/geektime/rnonesignalandroid/RNUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -106,14 +106,17 @@ public static WritableMap jsonToWritableMap(JSONObject jsonObject) {
writableMap.putBoolean(key, (Boolean) value);
} else if (value instanceof Integer) {
writableMap.putInt(key, (Integer) value);
} else if (value instanceof Double) {
writableMap.putDouble(key, (Double) value);
} else if (value instanceof Double || value instanceof Long || value instanceof Float) {
String str = String.valueOf(value);
writableMap.putDouble(key, Double.parseDouble(str));
} else if (value instanceof String) {
writableMap.putString(key, (String) value);
writableMap.putString(key, value.toString());
} else if (value instanceof JSONObject) {
writableMap.putMap(key, jsonToWritableMap((JSONObject) value));
} else if (value instanceof JSONArray) {
writableMap.putArray(key, jsonArrayToWritableArray((JSONArray) value));
} else if (value.getClass().isEnum()) {
writableMap.putString(key, value.toString());
}
} catch (JSONException ex) {
// Do nothing and fail silently
Expand All @@ -138,20 +141,24 @@ public static WritableArray jsonArrayToWritableArray(JSONArray jsonArray) {
for (int i = 0 ; i < jsonArray.length(); i++) {
try {
Object value = jsonArray.get(i);

if (value == null) {
writableArray.pushNull();
} else if (value instanceof Boolean) {
writableArray.pushBoolean((Boolean) value);
} else if (value instanceof Integer) {
writableArray.pushInt((Integer) value);
} else if (value instanceof Double) {
writableArray.pushDouble((Double) value);
} else if (value instanceof Double || value instanceof Long || value instanceof Float) {
String str = String.valueOf(value);
writableArray.pushDouble(Double.parseDouble(str));
} else if (value instanceof String) {
writableArray.pushString((String) value);
writableArray.pushString(value.toString());
} else if (value instanceof JSONObject) {
writableArray.pushMap(jsonToWritableMap((JSONObject) value));
} else if (value instanceof JSONArray) {
writableArray.pushArray(jsonArrayToWritableArray((JSONArray) value));
} else if (value.getClass().isEnum()) {
writableArray.pushString(value.toString());
}
} catch (JSONException e) {
// Do nothing and fail silently
Expand Down
Loading

0 comments on commit ad67778

Please sign in to comment.