Skip to content

No codes #351

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

Merged
merged 10 commits into from
Jun 20, 2025
Merged
Show file tree
Hide file tree
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
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,8 @@ buck-out/
*.keystore

# vscode
.vscode
.vscode

# CocoaPods
Pods/
Podfile.lock
2 changes: 1 addition & 1 deletion android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ repositories {
dependencies {
//noinspection GradleDynamicVersion
implementation 'com.facebook.react:react-native:+' // From node_modules
implementation "io.qonversion.sandwich:sandwich:5.2.0"
implementation "io.qonversion:sandwich:6.0.6"
}

afterEvaluate { project ->
Expand Down
3 changes: 2 additions & 1 deletion android/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#Wed Jun 18 14:18:27 MSK 2025
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
137 changes: 0 additions & 137 deletions android/src/main/java/com/reactlibrary/AutomationsModule.java

This file was deleted.

98 changes: 98 additions & 0 deletions android/src/main/java/com/reactlibrary/NoCodesModule.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
package com.reactlibrary;

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.bridge.Arguments;
import com.facebook.react.modules.core.DeviceEventManagerModule;
import com.facebook.react.module.annotations.ReactModule;
import io.qonversion.sandwich.NoCodesSandwich;
import io.qonversion.sandwich.NoCodesEventListener;

import java.util.HashMap;
import java.util.Map;

public class NoCodesModule extends ReactContextBaseJavaModule {
private final ReactApplicationContext reactContext;
private final NoCodesSandwich noCodesSandwich;
private final NoCodesEventListener noCodesEventListener;
private DeviceEventManagerModule.RCTDeviceEventEmitter eventEmitter = null;

public NoCodesModule(ReactApplicationContext reactContext) {
super(reactContext);
this.reactContext = reactContext;
this.noCodesSandwich = new NoCodesSandwich();

this.noCodesEventListener = (event, payload) -> {
WritableMap payloadMap = null;
if (payload != null) {
payloadMap = EntitiesConverter.convertMapToWritableMap(payload);
}

sendEvent(event.getKey(), payloadMap);
};
}

@Override
public void initialize() {
super.initialize();

eventEmitter = getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class);
}

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

@ReactMethod
public void initialize(String projectKey) {
noCodesSandwich.initialize(reactContext, projectKey, null, null, null);
noCodesSandwich.setDelegate(noCodesEventListener);
noCodesSandwich.setScreenCustomizationDelegate();
}

@ReactMethod
public void setScreenPresentationConfig(ReadableMap configData, String contextKey, final Promise promise) {
try {
Map<String, Object> config = EntitiesConverter.convertReadableMapToHashMap(configData);
noCodesSandwich.setScreenPresentationConfig(config, contextKey);
Utils.resolveWithSuccess(promise);
} catch (Exception e) {
promise.reject(e);
}
}

@ReactMethod
public void showScreen(String contextKey, final Promise promise) {
try {
noCodesSandwich.showScreen(contextKey);
Utils.resolveWithSuccess(promise);
} catch (Exception e) {
promise.reject(e);
}
}

@ReactMethod
public void close(final Promise promise) {
try {
noCodesSandwich.close();
Utils.resolveWithSuccess(promise);
} catch (Exception e) {
promise.reject(e);
}
}

private void sendEvent(String eventName, WritableMap params) {
if (eventEmitter != null) {
eventEmitter.emit(eventName, params);
}
}
}
3 changes: 1 addition & 2 deletions android/src/main/java/com/reactlibrary/QonversionModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -223,9 +223,8 @@ public void isFallbackFileAccessible(final Promise promise) {

@Override
public void onEntitlementsUpdated(@NonNull Map<String, ?> map) {
final WritableMap payload = EntitiesConverter.convertMapToWritableMap(map);
if (eventEmitter != null) {
eventEmitter.emit(EVENT_ENTITLEMENTS_UPDATED, payload);
eventEmitter.emit(EVENT_ENTITLEMENTS_UPDATED, EntitiesConverter.convertMapToWritableMap(map));
}
}
}
4 changes: 2 additions & 2 deletions android/src/main/java/com/reactlibrary/QonversionPackage.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ public class QonversionPackage implements ReactPackage {
@Override
public List<NativeModule> createNativeModules(@NonNull ReactApplicationContext reactContext) {
return Arrays.asList(
new QonversionModule(reactContext),
new AutomationsModule(reactContext)
new NoCodesModule(reactContext),
new QonversionModule(reactContext)
);
}

Expand Down
8 changes: 8 additions & 0 deletions android/src/main/java/com/reactlibrary/Utils.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import androidx.annotation.Nullable;

import java.util.Map;

import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.WritableMap;

Expand All @@ -26,6 +28,12 @@ public void onError(@NonNull SandwichError error) {
};
}

static void resolveWithSuccess(final Promise promise) {
WritableMap response = Arguments.createMap();
response.putBoolean("success", true);
promise.resolve(response);
}

static void rejectWithError(@NonNull SandwichError sandwichError, final Promise promise) {
rejectWithError(sandwichError, promise, null);
}
Expand Down
Loading