Skip to content
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
30 changes: 28 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
name: Test

name: Run Checks
on:
pull_request:
branches:
- '**'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
Expand All @@ -10,6 +15,27 @@ jobs:
- name: 'Checkout'
uses: actions/checkout@v5

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'

- name: Setup Homebrew
uses: Homebrew/actions/setup-homebrew@main

- name: Setup Clang
uses: tecolicom/actions-use-homebrew-tools@v1
with:
tools: clang-format
cache: yes

- name: Link clang-format
run: |
brew link --overwrite --force clang-format >/dev/null
export PATH="/home/linuxbrew/.linuxbrew/bin:$PATH"
clang-format --version

- name: 'Setup Bun'
uses: oven-sh/setup-bun@v2
with:
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ coverage/

# tsc / build
#
.gradle
build
dist
android/build
*.tgz
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,7 @@ of this software and associated documentation files (the "Software"), to deal
package com.onesignal.rnonesignalandroid;

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.os.Bundle;
import com.onesignal.debug.internal.logging.Logging;
import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.LifecycleEventListener;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
Expand All @@ -48,46 +45,41 @@ of this software and associated documentation files (the "Software"), to deal
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.modules.core.DeviceEventManagerModule;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.modules.core.DeviceEventManagerModule;
import com.onesignal.Continue;
import com.onesignal.OneSignal;
import com.onesignal.debug.LogLevel;
import com.onesignal.common.OneSignalWrapper;
import com.onesignal.inAppMessages.IInAppMessage;
import com.onesignal.inAppMessages.IInAppMessageClickListener;
import com.onesignal.debug.LogLevel;
import com.onesignal.debug.internal.logging.Logging;
import com.onesignal.inAppMessages.IInAppMessageClickEvent;
import com.onesignal.inAppMessages.IInAppMessageClickResult;
import com.onesignal.inAppMessages.IInAppMessageLifecycleListener;
import com.onesignal.inAppMessages.IInAppMessageWillDisplayEvent;
import com.onesignal.inAppMessages.IInAppMessageClickListener;
import com.onesignal.inAppMessages.IInAppMessageDidDismissEvent;
import com.onesignal.inAppMessages.IInAppMessageDidDisplayEvent;
import com.onesignal.inAppMessages.IInAppMessageLifecycleListener;
import com.onesignal.inAppMessages.IInAppMessageWillDismissEvent;
import com.onesignal.inAppMessages.IInAppMessageDidDismissEvent;
import com.onesignal.inAppMessages.IInAppMessageWillDisplayEvent;
import com.onesignal.notifications.INotification;
import com.onesignal.notifications.INotificationClickListener;
import com.onesignal.notifications.INotificationClickEvent;
import com.onesignal.notifications.INotificationClickListener;
import com.onesignal.notifications.INotificationLifecycleListener;
import com.onesignal.notifications.INotificationWillDisplayEvent;
import com.onesignal.notifications.IPermissionObserver;
import com.onesignal.user.state.IUserStateObserver;
import com.onesignal.user.state.UserChangedState;
import com.onesignal.user.subscriptions.IPushSubscription;
import com.onesignal.user.subscriptions.IPushSubscriptionObserver;
import com.onesignal.user.subscriptions.PushSubscriptionState;
import com.onesignal.user.subscriptions.PushSubscriptionChangedState;
import com.onesignal.user.state.UserState;
import com.onesignal.user.state.UserChangedState;
import com.onesignal.user.state.IUserStateObserver;
import org.json.JSONException;

import java.util.HashMap;
import java.util.Map;
import org.json.JSONException;

public class RNOneSignal extends ReactContextBaseJavaModule implements
IPushSubscriptionObserver,
IPermissionObserver,
IUserStateObserver,
LifecycleEventListener,
INotificationLifecycleListener{
public class RNOneSignal extends ReactContextBaseJavaModule
implements IPushSubscriptionObserver,
IPermissionObserver,
IUserStateObserver,
LifecycleEventListener,
INotificationLifecycleListener {
private ReactApplicationContext mReactApplicationContext;
private ReactContext mReactContext;

Expand All @@ -108,7 +100,9 @@ public class RNOneSignal extends ReactContextBaseJavaModule implements
@Override
public void onClick(IInAppMessageClickEvent event) {
try {
sendEvent("OneSignal-inAppMessageClicked", RNUtils.convertHashMapToWritableMap(RNUtils.convertInAppMessageClickEventToMap(event)));
sendEvent(
"OneSignal-inAppMessageClicked",
RNUtils.convertHashMapToWritableMap(RNUtils.convertInAppMessageClickEventToMap(event)));
} catch (JSONException e) {
e.printStackTrace();
}
Expand All @@ -119,7 +113,9 @@ public void onClick(IInAppMessageClickEvent event) {
@Override
public void onWillDisplay(IInAppMessageWillDisplayEvent event) {
try {
sendEvent("OneSignal-inAppMessageWillDisplay", RNUtils.convertHashMapToWritableMap(RNUtils.convertInAppMessageWillDisplayEventToMap(event)));
sendEvent(
"OneSignal-inAppMessageWillDisplay",
RNUtils.convertHashMapToWritableMap(RNUtils.convertInAppMessageWillDisplayEventToMap(event)));
} catch (JSONException e) {
e.printStackTrace();
}
Expand All @@ -128,7 +124,9 @@ public void onWillDisplay(IInAppMessageWillDisplayEvent event) {
@Override
public void onDidDisplay(IInAppMessageDidDisplayEvent event) {
try {
sendEvent("OneSignal-inAppMessageDidDisplay", RNUtils.convertHashMapToWritableMap(RNUtils.convertInAppMessageDidDisplayEventToMap(event)));
sendEvent(
"OneSignal-inAppMessageDidDisplay",
RNUtils.convertHashMapToWritableMap(RNUtils.convertInAppMessageDidDisplayEventToMap(event)));
} catch (JSONException e) {
e.printStackTrace();
}
Expand All @@ -137,7 +135,9 @@ public void onDidDisplay(IInAppMessageDidDisplayEvent event) {
@Override
public void onWillDismiss(IInAppMessageWillDismissEvent event) {
try {
sendEvent("OneSignal-inAppMessageWillDismiss", RNUtils.convertHashMapToWritableMap(RNUtils.convertInAppMessageWillDismissEventToMap(event)));
sendEvent(
"OneSignal-inAppMessageWillDismiss",
RNUtils.convertHashMapToWritableMap(RNUtils.convertInAppMessageWillDismissEventToMap(event)));
} catch (JSONException e) {
e.printStackTrace();
}
Expand All @@ -146,7 +146,9 @@ public void onWillDismiss(IInAppMessageWillDismissEvent event) {
@Override
public void onDidDismiss(IInAppMessageDidDismissEvent event) {
try {
sendEvent("OneSignal-inAppMessageDidDismiss", RNUtils.convertHashMapToWritableMap(RNUtils.convertInAppMessageDidDismissEventToMap(event)));
sendEvent(
"OneSignal-inAppMessageDidDismiss",
RNUtils.convertHashMapToWritableMap(RNUtils.convertInAppMessageDidDismissEventToMap(event)));
} catch (JSONException e) {
e.printStackTrace();
}
Expand All @@ -157,7 +159,9 @@ public void onDidDismiss(IInAppMessageDidDismissEvent event) {
@Override
public void onClick(INotificationClickEvent event) {
try {
sendEvent("OneSignal-notificationClicked", RNUtils.convertHashMapToWritableMap(RNUtils.convertNotificationClickEventToMap(event)));
sendEvent(
"OneSignal-notificationClicked",
RNUtils.convertHashMapToWritableMap(RNUtils.convertNotificationClickEventToMap(event)));
} catch (JSONException e) {
e.printStackTrace();
}
Expand All @@ -171,7 +175,7 @@ private void removeObservers() {
}

private void removeHandlers() {
if(!oneSignalInitDone) {
if (!oneSignalInitDone) {
Logging.debug("OneSignal React-Native SDK not initialized yet. Could not remove handlers.", null);
return;
}
Expand All @@ -187,7 +191,9 @@ private void removeHandlers() {
}

private void sendEvent(String eventName, Object params) {
mReactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(eventName, params);
mReactContext
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
.emit(eventName, params);
}

public RNOneSignal(ReactApplicationContext reactContext) {
Expand All @@ -199,7 +205,6 @@ public RNOneSignal(ReactApplicationContext reactContext) {
preventDefaultCache = new HashMap<String, INotificationWillDisplayEvent>();
}


/** Native Module Overrides */
@Override
public String getName() {
Expand Down Expand Up @@ -257,7 +262,6 @@ public void setPrivacyConsentRequired(Boolean required) {
OneSignal.setConsentRequired(required);
}


// OneSignal.Debug namespace methods
@ReactMethod
public void setLogLevel(int logLevel) {
Expand All @@ -269,7 +273,6 @@ public void setAlertLevel(int logLevel) {
OneSignal.getDebug().setAlertLevel(LogLevel.fromInt(logLevel));
}


// OneSignal.InAppMessages namespace methods
@ReactMethod
public void addInAppMessageClickListener() {
Expand Down Expand Up @@ -322,7 +325,6 @@ public void clearTriggers() {
OneSignal.getInAppMessages().clearTriggers();
}


// OneSignal.Location namespace methods
@ReactMethod
public void requestLocationPermission() {
Expand All @@ -339,7 +341,6 @@ public void setLocationShared(Boolean shared) {
OneSignal.getLocation().setShared(shared);
}


// OneSignal.Notifications namespace methods
@ReactMethod
public void addNotificationClickListener() {
Expand Down Expand Up @@ -373,17 +374,17 @@ public void onWillDisplay(INotificationWillDisplayEvent event) {
event.preventDefault();

try {
sendEvent("OneSignal-notificationWillDisplayInForeground",
RNUtils.convertHashMapToWritableMap(
RNUtils.convertNotificationToMap(notification)));
sendEvent(
"OneSignal-notificationWillDisplayInForeground",
RNUtils.convertHashMapToWritableMap(RNUtils.convertNotificationToMap(notification)));

try {
synchronized (event) {
while (preventDefaultCache.containsKey(notificationId)) {
event.wait();
}
}
} catch(InterruptedException e){
} catch (InterruptedException e) {
Logging.error("InterruptedException: " + e.toString(), null);
}
} catch (JSONException e) {
Expand All @@ -392,10 +393,11 @@ public void onWillDisplay(INotificationWillDisplayEvent event) {
}

@ReactMethod
private void displayNotification(String notificationId){
private void displayNotification(String notificationId) {
INotificationWillDisplayEvent event = notificationWillDisplayCache.get(notificationId);
if (event == null) {
Logging.error("Could not find onWillDisplayNotification event for notification with id: " + notificationId, null);
Logging.error(
"Could not find onWillDisplayNotification event for notification with id: " + notificationId, null);
return;
}
event.getNotification().display();
Expand All @@ -405,7 +407,8 @@ private void displayNotification(String notificationId){
private void preventDefault(String notificationId) {
INotificationWillDisplayEvent event = notificationWillDisplayCache.get(notificationId);
if (event == null) {
Logging.error("Could not find onWillDisplayNotification event for notification with id: " + notificationId, null);
Logging.error(
"Could not find onWillDisplayNotification event for notification with id: " + notificationId, null);
return;
}
event.preventDefault();
Expand All @@ -431,7 +434,9 @@ public void removePermissionObserver() {
@Override
public void onNotificationPermissionChange(boolean permission) {
try {
sendEvent("OneSignal-permissionChanged", RNUtils.convertHashMapToWritableMap(RNUtils.convertPermissionToMap(permission)));
sendEvent(
"OneSignal-permissionChanged",
RNUtils.convertHashMapToWritableMap(RNUtils.convertPermissionToMap(permission)));
Logging.debug("Sending permission change event", null);
} catch (JSONException e) {
e.printStackTrace();
Expand Down Expand Up @@ -464,8 +469,7 @@ public void hasNotificationPermission(Promise promise) {
public void permissionNative(Promise promise) {
if (OneSignal.getNotifications().getPermission()) {
promise.resolve(2);
}
else {
} else {
promise.resolve(1);
}
}
Expand All @@ -490,13 +494,12 @@ public void removeGroupedNotifications(String id) {
OneSignal.getNotifications().removeGroupedNotifications(id);
}


// OneSignal.User.pushSubscription namespace methods
@ReactMethod
public void getPushSubscriptionId(Promise promise) {
IPushSubscription pushSubscription = OneSignal.getUser().getPushSubscription();
String pushId = pushSubscription.getId();
if (pushId != null && !pushId.isEmpty()){
if (pushId != null && !pushId.isEmpty()) {
promise.resolve(pushId);
} else {
promise.resolve(null);
Expand Down Expand Up @@ -543,13 +546,14 @@ public void addPushSubscriptionObserver() {
@Override
public void onPushSubscriptionChange(PushSubscriptionChangedState pushSubscriptionChangedState) {
try {
sendEvent("OneSignal-subscriptionChanged",
sendEvent(
"OneSignal-subscriptionChanged",
RNUtils.convertHashMapToWritableMap(
RNUtils.convertPushSubscriptionChangedStateToMap(pushSubscriptionChangedState)));
Logging.debug("Sending subscription change event", null);
} catch (JSONException e) {
e.printStackTrace();
}
}
}

@ReactMethod
Expand Down Expand Up @@ -619,7 +623,7 @@ public void getTags(Promise promise) {
for (Map.Entry<String, String> entry : tags.entrySet()) {
writableTags.putString(entry.getKey(), entry.getValue());
}
promise.resolve(writableTags);
promise.resolve(writableTags);
}

@ReactMethod
Expand Down Expand Up @@ -689,7 +693,6 @@ public void getOnesignalId(Promise promise) {
onesignalId = null;
}
promise.resolve(onesignalId);

}

@ReactMethod
Expand All @@ -712,13 +715,13 @@ public void addUserStateObserver() {
@Override
public void onUserStateChange(UserChangedState state) {
try {
sendEvent("OneSignal-userStateChanged",
RNUtils.convertHashMapToWritableMap(
RNUtils.convertUserChangedStateToMap(state)));
sendEvent(
"OneSignal-userStateChanged",
RNUtils.convertHashMapToWritableMap(RNUtils.convertUserChangedStateToMap(state)));
Logging.debug("Sending user state change event", null);
} catch (JSONException e) {
e.printStackTrace();
}
}
}

@ReactMethod
Expand Down
Loading
Loading