Skip to content

Commit

Permalink
Release 4.0.0
Browse files Browse the repository at this point in the history
Release 4.0.0
  • Loading branch information
SpertsyanKM authored Dec 14, 2022
2 parents 191aabd + 95c1350 commit 6eb7416
Show file tree
Hide file tree
Showing 54 changed files with 1,795 additions and 1,610 deletions.
11 changes: 4 additions & 7 deletions android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
// original location:
// - https://github.com/facebook/react-native/blob/0.58-stable/local-cli/templates/HelloWorld/android/app/build.gradle

def DEFAULT_COMPILE_SDK_VERSION = 28
def DEFAULT_COMPILE_SDK_VERSION = 33
def DEFAULT_MIN_SDK_VERSION = 16
def DEFAULT_TARGET_SDK_VERSION = 28
def DEFAULT_TARGET_SDK_VERSION = 33

def safeExtGet(prop, fallback) {
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
Expand All @@ -27,11 +27,10 @@ buildscript {
// ref: https://docs.gradle.org/current/userguide/tutorial_using_tasks.html#sec:build_script_external_dependencies
repositories {
google()
jcenter()
}
if (project == rootProject) {
dependencies {
classpath 'com.android.tools.build:gradle:3.4.1'
classpath 'com.android.tools.build:gradle:3.4.3'
}
}
}
Expand Down Expand Up @@ -61,14 +60,12 @@ repositories {
url "$rootDir/../node_modules/jsc-android/dist"
}
google()
jcenter()
}

dependencies {
//noinspection GradleDynamicVersion
implementation 'com.facebook.react:react-native:+' // From node_modules
implementation "com.google.firebase:firebase-messaging:21.0.1" // Used for Qonversion.handleNotification compilation
implementation "io.qonversion.sandwich:sandwich:0.2.1"
implementation "io.qonversion.sandwich:sandwich:1.0.0"
}

afterEvaluate { project ->
Expand Down
73 changes: 72 additions & 1 deletion android/src/main/java/com/reactlibrary/AutomationsModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,22 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.modules.core.DeviceEventManagerModule;

import org.json.JSONException;

import java.util.Map;

import io.qonversion.sandwich.AutomationsEventListener;
import io.qonversion.sandwich.AutomationsSandwich;
import io.qonversion.sandwich.ResultListener;
import io.qonversion.sandwich.SandwichError;

class AutomationsModule extends ReactContextBaseJavaModule implements AutomationsEventListener {

Expand All @@ -33,14 +39,79 @@ public void initialize() {
eventEmitter = getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class);
}

@NonNull
@Override
public String getName() {
return "RNAutomations";
}

@ReactMethod
void subscribe() {
automationsSandwich.subscribe(this);
automationsSandwich.setDelegate(this);
}

@ReactMethod
public void setNotificationsToken(String token) {
automationsSandwich.setNotificationToken(token);
}

@ReactMethod
public void getNotificationCustomPayload(final ReadableMap notificationData, final Promise promise) {
if (notificationData == null) {
promise.resolve(null);
return;
}

final Map<String, Object> dataMap;
try {
dataMap = EntitiesConverter.convertReadableMapToHashMap(notificationData);
} catch (JSONException e) {
promise.reject(e);
return;
}

final Map<String, Object> payload = automationsSandwich.getNotificationCustomPayload(dataMap);
if (payload == null) {
promise.resolve(null);
} else {
final WritableMap convertedPayload = EntitiesConverter.convertMapToWritableMap(payload);

promise.resolve(convertedPayload);
}
}

@ReactMethod
public void handleNotification(final ReadableMap notificationData, final Promise promise) {
if (notificationData == null) {
promise.resolve(false);
return;
}

final Map<String, Object> dataMap;
try {
dataMap = EntitiesConverter.convertReadableMapToHashMap(notificationData);
} catch (JSONException e) {
promise.resolve(false);
return;
}

final boolean isQonversionNotification = automationsSandwich.handleNotification(dataMap);
promise.resolve(isQonversionNotification);
}

@ReactMethod
public void showScreen(final String screenId, final Promise promise) {
automationsSandwich.showScreen(screenId, new ResultListener() {
@Override
public void onSuccess(@NonNull Map<String, ?> map) {
promise.resolve(null);
}

@Override
public void onError(@NonNull SandwichError error) {
Utils.rejectWithError(error, promise);
}
});
}

@Override
Expand Down
9 changes: 5 additions & 4 deletions android/src/main/java/com/reactlibrary/EntitiesConverter.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;

public class EntitiesConverter {
Expand All @@ -27,7 +28,7 @@ static HashMap<String, Object> convertReadableMapToHashMap(ReadableMap readableM
}

static Map<String, Object> toMap(JSONObject jsonobj) throws JSONException {
Map<String, Object> map = new HashMap<String, Object>();
Map<String, Object> map = new HashMap<>();
Iterator<String> keys = jsonobj.keys();
while(keys.hasNext()) {
String key = keys.next();
Expand All @@ -42,7 +43,7 @@ static Map<String, Object> toMap(JSONObject jsonobj) throws JSONException {
}

public static List<Object> toList(JSONArray array) throws JSONException {
List<Object> list = new ArrayList<Object>();
List<Object> list = new ArrayList<>();
for(int i = 0; i < array.length(); i++) {
Object value = array.get(i);
if (value instanceof JSONArray) {
Expand Down Expand Up @@ -74,10 +75,10 @@ static JSONObject convertMapToJson(ReadableMap readableMap) throws JSONException
object.put(key, readableMap.getString(key));
break;
case Map:
object.put(key, convertMapToJson(readableMap.getMap(key)));
object.put(key, convertMapToJson(Objects.requireNonNull(readableMap.getMap(key))));
break;
case Array:
object.put(key, convertArrayToJson(readableMap.getArray(key)));
object.put(key, convertArrayToJson(Objects.requireNonNull(readableMap.getArray(key))));
break;
}
}
Expand Down
Loading

0 comments on commit 6eb7416

Please sign in to comment.