mirror of
https://github.com/streetwriters/notesnook.git
synced 2025-12-29 00:20:04 +01:00
441 lines
21 KiB
Diff
441 lines
21 KiB
Diff
diff --git a/node_modules/react-native-push-notification/android/build.gradle b/node_modules/react-native-push-notification/android/build.gradle
|
|
index d6019f6..1f7e5d1 100644
|
|
--- a/node_modules/react-native-push-notification/android/build.gradle
|
|
+++ b/node_modules/react-native-push-notification/android/build.gradle
|
|
@@ -60,5 +60,4 @@ dependencies {
|
|
implementation "$appCompatLibName:$supportLibVersion"
|
|
implementation 'com.facebook.react:react-native:+'
|
|
implementation 'me.leolin:ShortcutBadger:1.1.22@aar'
|
|
- implementation "com.google.firebase:firebase-messaging:${safeExtGet('firebaseMessagingVersion', '21.1.0')}"
|
|
}
|
|
diff --git a/node_modules/react-native-push-notification/android/src/main/java/com/dieam/reactnativepushnotification/modules/RNPushNotification.java b/node_modules/react-native-push-notification/android/src/main/java/com/dieam/reactnativepushnotification/modules/RNPushNotification.java
|
|
index d162680..56c5a76 100644
|
|
--- a/node_modules/react-native-push-notification/android/src/main/java/com/dieam/reactnativepushnotification/modules/RNPushNotification.java
|
|
+++ b/node_modules/react-native-push-notification/android/src/main/java/com/dieam/reactnativepushnotification/modules/RNPushNotification.java
|
|
@@ -2,14 +2,11 @@ package com.dieam.reactnativepushnotification.modules;
|
|
|
|
import android.app.Activity;
|
|
import android.app.Application;
|
|
-import android.app.NotificationManager;
|
|
-import android.content.BroadcastReceiver;
|
|
-import android.content.Context;
|
|
import android.content.Intent;
|
|
-import android.content.IntentFilter;
|
|
+import android.os.Build;
|
|
import android.os.Bundle;
|
|
-import androidx.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
+import androidx.annotation.RequiresApi;
|
|
import androidx.core.app.NotificationManagerCompat;
|
|
|
|
import com.dieam.reactnativepushnotification.helpers.ApplicationBadgeHelper;
|
|
@@ -26,7 +23,6 @@ import com.facebook.react.bridge.WritableArray;
|
|
import com.facebook.react.bridge.ReadableMap;
|
|
import com.facebook.react.bridge.WritableMap;
|
|
|
|
-import java.io.IOException;
|
|
import java.security.SecureRandom;
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
@@ -34,9 +30,6 @@ import java.util.Map;
|
|
|
|
import android.util.Log;
|
|
|
|
-import com.google.android.gms.tasks.OnCompleteListener;
|
|
-import com.google.android.gms.tasks.Task;
|
|
-import com.google.firebase.messaging.FirebaseMessaging;
|
|
|
|
public class RNPushNotification extends ReactContextBaseJavaModule implements ActivityEventListener {
|
|
public static final String LOG_TAG = "RNPushNotification";// all logging should use this tag
|
|
@@ -137,30 +130,6 @@ public class RNPushNotification extends ReactContextBaseJavaModule implements Ac
|
|
public void requestPermissions() {
|
|
final RNPushNotificationJsDelivery fMjsDelivery = mJsDelivery;
|
|
|
|
- FirebaseMessaging.getInstance().getToken()
|
|
- .addOnCompleteListener(new OnCompleteListener<String>() {
|
|
- @Override
|
|
- public void onComplete(@NonNull Task<String> task) {
|
|
- if (!task.isSuccessful()) {
|
|
- Log.e(LOG_TAG, "exception", task.getException());
|
|
- return;
|
|
- }
|
|
-
|
|
- WritableMap params = Arguments.createMap();
|
|
- params.putString("deviceToken", task.getResult());
|
|
- fMjsDelivery.sendEvent("remoteNotificationsRegistered", params);
|
|
- }
|
|
- });
|
|
- }
|
|
-
|
|
- @ReactMethod
|
|
- public void subscribeToTopic(String topic) {
|
|
- FirebaseMessaging.getInstance().subscribeToTopic(topic);
|
|
- }
|
|
-
|
|
- @ReactMethod
|
|
- public void unsubscribeFromTopic(String topic) {
|
|
- FirebaseMessaging.getInstance().unsubscribeFromTopic(topic);
|
|
}
|
|
|
|
@ReactMethod
|
|
@@ -280,7 +249,6 @@ public class RNPushNotification extends ReactContextBaseJavaModule implements Ac
|
|
* Unregister for all remote notifications received
|
|
*/
|
|
public void abandonPermissions() {
|
|
- FirebaseMessaging.getInstance().deleteToken();
|
|
Log.i(LOG_TAG, "InstanceID deleted");
|
|
}
|
|
|
|
diff --git a/node_modules/react-native-push-notification/android/src/main/java/com/dieam/reactnativepushnotification/modules/RNPushNotificationHelper.java b/node_modules/react-native-push-notification/android/src/main/java/com/dieam/reactnativepushnotification/modules/RNPushNotificationHelper.java
|
|
index 248ff08..ff198d5 100644
|
|
--- a/node_modules/react-native-push-notification/android/src/main/java/com/dieam/reactnativepushnotification/modules/RNPushNotificationHelper.java
|
|
+++ b/node_modules/react-native-push-notification/android/src/main/java/com/dieam/reactnativepushnotification/modules/RNPushNotificationHelper.java
|
|
@@ -56,11 +56,12 @@ public class RNPushNotificationHelper {
|
|
private Context context;
|
|
private RNPushNotificationConfig config;
|
|
private final SharedPreferences scheduledNotificationsPersistence;
|
|
-
|
|
+ private int FLAG_MUTABLE = 1<<25;
|
|
public RNPushNotificationHelper(Application context) {
|
|
this.context = context;
|
|
this.config = new RNPushNotificationConfig(context);
|
|
this.scheduledNotificationsPersistence = context.getSharedPreferences(RNPushNotificationHelper.PREFERENCES_KEY, Context.MODE_PRIVATE);
|
|
+
|
|
}
|
|
|
|
public Class getMainActivityClass() {
|
|
@@ -455,6 +456,7 @@ public class RNPushNotificationHelper {
|
|
|
|
int notificationID = Integer.parseInt(notificationIdString);
|
|
|
|
+
|
|
PendingIntent pendingIntent = PendingIntent.getActivity(context, notificationID, intent,
|
|
Build.VERSION.SDK_INT >= Build.VERSION_CODES.M ? PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE : PendingIntent.FLAG_UPDATE_CURRENT);
|
|
|
|
@@ -533,7 +535,18 @@ public class RNPushNotificationHelper {
|
|
intent.putExtra("message_id", messageId);
|
|
}
|
|
|
|
- int flags = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M ? PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE : PendingIntent.FLAG_UPDATE_CURRENT;
|
|
+ int flags = PendingIntent.FLAG_UPDATE_CURRENT;
|
|
+
|
|
+ if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
|
+ if(action.equals("ReplyInput") ) {
|
|
+ if (Build.VERSION.SDK_INT == 31) {
|
|
+ flags = PendingIntent.FLAG_UPDATE_CURRENT | FLAG_MUTABLE;
|
|
+ }
|
|
+ }
|
|
+ else {
|
|
+ flags = PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE;
|
|
+ }
|
|
+ }
|
|
|
|
PendingIntent pendingActionIntent = PendingIntent.getBroadcast(context, notificationID, actionIntent, flags);
|
|
|
|
diff --git a/node_modules/react-native-push-notification/android/src/main/java/com/dieam/reactnativepushnotification/modules/RNPushNotificationListenerService.java b/node_modules/react-native-push-notification/android/src/main/java/com/dieam/reactnativepushnotification/modules/RNPushNotificationListenerService.java
|
|
index ca78c03..9ee3650 100644
|
|
--- a/node_modules/react-native-push-notification/android/src/main/java/com/dieam/reactnativepushnotification/modules/RNPushNotificationListenerService.java
|
|
+++ b/node_modules/react-native-push-notification/android/src/main/java/com/dieam/reactnativepushnotification/modules/RNPushNotificationListenerService.java
|
|
@@ -1,79 +1,5 @@
|
|
package com.dieam.reactnativepushnotification.modules;
|
|
|
|
-import com.google.firebase.messaging.FirebaseMessagingService;
|
|
-import com.google.firebase.messaging.RemoteMessage;
|
|
+public class RNPushNotificationListenerService {
|
|
|
|
-import android.os.Handler;
|
|
-import android.os.Looper;
|
|
-import android.util.Log;
|
|
-
|
|
-import com.facebook.react.ReactApplication;
|
|
-import com.facebook.react.ReactInstanceManager;
|
|
-import com.facebook.react.bridge.Arguments;
|
|
-import com.facebook.react.bridge.ReactApplicationContext;
|
|
-import com.facebook.react.bridge.ReactContext;
|
|
-import com.facebook.react.bridge.WritableMap;
|
|
-
|
|
-import static com.dieam.reactnativepushnotification.modules.RNPushNotification.LOG_TAG;
|
|
-
|
|
-public class RNPushNotificationListenerService extends FirebaseMessagingService {
|
|
-
|
|
- private RNReceivedMessageHandler mMessageReceivedHandler;
|
|
- private FirebaseMessagingService mFirebaseServiceDelegate;
|
|
-
|
|
- public RNPushNotificationListenerService() {
|
|
- super();
|
|
- this.mMessageReceivedHandler = new RNReceivedMessageHandler(this);
|
|
- }
|
|
-
|
|
- public RNPushNotificationListenerService(FirebaseMessagingService delegate) {
|
|
- super();
|
|
- this.mFirebaseServiceDelegate = delegate;
|
|
- this.mMessageReceivedHandler = new RNReceivedMessageHandler(delegate);
|
|
- }
|
|
-
|
|
- @Override
|
|
- public void onNewToken(String token) {
|
|
- final String deviceToken = token;
|
|
- final FirebaseMessagingService serviceRef = (this.mFirebaseServiceDelegate == null) ? this : this.mFirebaseServiceDelegate;
|
|
- Log.d(LOG_TAG, "Refreshed token: " + deviceToken);
|
|
-
|
|
- Handler handler = new Handler(Looper.getMainLooper());
|
|
- handler.post(new Runnable() {
|
|
- public void run() {
|
|
- // Construct and load our normal React JS code bundle
|
|
- final ReactInstanceManager mReactInstanceManager = ((ReactApplication)serviceRef.getApplication()).getReactNativeHost().getReactInstanceManager();
|
|
- ReactContext context = mReactInstanceManager.getCurrentReactContext();
|
|
- // If it's constructed, send a notification
|
|
- if (context != null) {
|
|
- handleNewToken((ReactApplicationContext) context, deviceToken);
|
|
- } else {
|
|
- // Otherwise wait for construction, then send the notification
|
|
- mReactInstanceManager.addReactInstanceEventListener(new ReactInstanceManager.ReactInstanceEventListener() {
|
|
- public void onReactContextInitialized(ReactContext context) {
|
|
- handleNewToken((ReactApplicationContext) context, deviceToken);
|
|
- mReactInstanceManager.removeReactInstanceEventListener(this);
|
|
- }
|
|
- });
|
|
- if (!mReactInstanceManager.hasStartedCreatingInitialContext()) {
|
|
- // Construct it in the background
|
|
- mReactInstanceManager.createReactContextInBackground();
|
|
- }
|
|
- }
|
|
- }
|
|
- });
|
|
- }
|
|
-
|
|
- private void handleNewToken(ReactApplicationContext context, String token) {
|
|
- RNPushNotificationJsDelivery jsDelivery = new RNPushNotificationJsDelivery(context);
|
|
-
|
|
- WritableMap params = Arguments.createMap();
|
|
- params.putString("deviceToken", token);
|
|
- jsDelivery.sendEvent("remoteNotificationsRegistered", params);
|
|
- }
|
|
-
|
|
- @Override
|
|
- public void onMessageReceived(RemoteMessage message) {
|
|
- mMessageReceivedHandler.handleReceivedMessage(message);
|
|
- }
|
|
}
|
|
diff --git a/node_modules/react-native-push-notification/android/src/main/java/com/dieam/reactnativepushnotification/modules/RNReceivedMessageHandler.java b/node_modules/react-native-push-notification/android/src/main/java/com/dieam/reactnativepushnotification/modules/RNReceivedMessageHandler.java
|
|
index 721ca40..b7bff2f 100644
|
|
--- a/node_modules/react-native-push-notification/android/src/main/java/com/dieam/reactnativepushnotification/modules/RNReceivedMessageHandler.java
|
|
+++ b/node_modules/react-native-push-notification/android/src/main/java/com/dieam/reactnativepushnotification/modules/RNReceivedMessageHandler.java
|
|
@@ -1,215 +1,6 @@
|
|
package com.dieam.reactnativepushnotification.modules;
|
|
|
|
-import com.google.firebase.messaging.FirebaseMessagingService;
|
|
-import com.google.firebase.messaging.RemoteMessage;
|
|
-
|
|
-import android.app.ActivityManager;
|
|
-import android.app.ActivityManager.RunningAppProcessInfo;
|
|
-import android.app.Application;
|
|
-import android.os.Bundle;
|
|
-import android.os.Handler;
|
|
-import android.os.Looper;
|
|
-import android.content.Context;
|
|
-import android.util.Log;
|
|
-import android.net.Uri;
|
|
-import androidx.annotation.NonNull;
|
|
-import androidx.core.app.NotificationCompat;
|
|
-
|
|
-import com.dieam.reactnativepushnotification.helpers.ApplicationBadgeHelper;
|
|
-import com.facebook.react.ReactApplication;
|
|
-import com.facebook.react.ReactInstanceManager;
|
|
-import com.facebook.react.bridge.ReactApplicationContext;
|
|
-import com.facebook.react.bridge.ReactContext;
|
|
-
|
|
-import org.json.JSONObject;
|
|
-
|
|
-import java.util.Map;
|
|
-import java.util.List;
|
|
-import java.security.SecureRandom;
|
|
-
|
|
-import static android.content.Context.ACTIVITY_SERVICE;
|
|
-import static com.dieam.reactnativepushnotification.modules.RNPushNotification.LOG_TAG;
|
|
-
|
|
public class RNReceivedMessageHandler {
|
|
- private FirebaseMessagingService mFirebaseMessagingService;
|
|
-
|
|
- public RNReceivedMessageHandler(@NonNull FirebaseMessagingService service) {
|
|
- this.mFirebaseMessagingService = service;
|
|
- }
|
|
-
|
|
- public void handleReceivedMessage(RemoteMessage message) {
|
|
- String from = message.getFrom();
|
|
- RemoteMessage.Notification remoteNotification = message.getNotification();
|
|
- final Bundle bundle = new Bundle();
|
|
- // Putting it from remoteNotification first so it can be overriden if message
|
|
- // data has it
|
|
- if (remoteNotification != null) {
|
|
- // ^ It's null when message is from GCM
|
|
- RNPushNotificationConfig config = new RNPushNotificationConfig(mFirebaseMessagingService.getApplication());
|
|
-
|
|
- String title = getLocalizedString(remoteNotification.getTitle(), remoteNotification.getTitleLocalizationKey(), remoteNotification.getTitleLocalizationArgs());
|
|
- String body = getLocalizedString(remoteNotification.getBody(), remoteNotification.getBodyLocalizationKey(), remoteNotification.getBodyLocalizationArgs());
|
|
-
|
|
- bundle.putString("title", title);
|
|
- bundle.putString("message", body);
|
|
- bundle.putString("sound", remoteNotification.getSound());
|
|
- bundle.putString("color", remoteNotification.getColor());
|
|
- bundle.putString("tag", remoteNotification.getTag());
|
|
-
|
|
- if(remoteNotification.getIcon() != null) {
|
|
- bundle.putString("smallIcon", remoteNotification.getIcon());
|
|
- } else {
|
|
- bundle.putString("smallIcon", "ic_notification");
|
|
- }
|
|
-
|
|
- if(remoteNotification.getChannelId() != null) {
|
|
- bundle.putString("channelId", remoteNotification.getChannelId());
|
|
- }
|
|
- else {
|
|
- bundle.putString("channelId", config.getNotificationDefaultChannelId());
|
|
- }
|
|
-
|
|
- Integer visibilty = remoteNotification.getVisibility();
|
|
- String visibilityString = "private";
|
|
-
|
|
- if (visibilty != null) {
|
|
- switch (visibilty) {
|
|
- case NotificationCompat.VISIBILITY_PUBLIC:
|
|
- visibilityString = "public";
|
|
- break;
|
|
- case NotificationCompat.VISIBILITY_SECRET:
|
|
- visibilityString = "secret";
|
|
- break;
|
|
- }
|
|
- }
|
|
-
|
|
- bundle.putString("visibility", visibilityString);
|
|
-
|
|
- Integer priority = remoteNotification.getNotificationPriority();
|
|
- String priorityString = "high";
|
|
-
|
|
- if (priority != null) {
|
|
- switch (priority) {
|
|
- case NotificationCompat.PRIORITY_MAX:
|
|
- priorityString = "max";
|
|
- break;
|
|
- case NotificationCompat.PRIORITY_LOW:
|
|
- priorityString = "low";
|
|
- break;
|
|
- case NotificationCompat.PRIORITY_MIN:
|
|
- priorityString = "min";
|
|
- break;
|
|
- case NotificationCompat.PRIORITY_DEFAULT:
|
|
- priorityString = "default";
|
|
- break;
|
|
- }
|
|
- }
|
|
-
|
|
- bundle.putString("priority", priorityString);
|
|
-
|
|
- Uri uri = remoteNotification.getImageUrl();
|
|
-
|
|
- if(uri != null) {
|
|
- String imageUrl = uri.toString();
|
|
|
|
- bundle.putString("bigPictureUrl", imageUrl);
|
|
- bundle.putString("largeIconUrl", imageUrl);
|
|
- }
|
|
- }
|
|
-
|
|
- Bundle dataBundle = new Bundle();
|
|
- Map<String, String> notificationData = message.getData();
|
|
-
|
|
- for(Map.Entry<String, String> entry : notificationData.entrySet()) {
|
|
- dataBundle.putString(entry.getKey(), entry.getValue());
|
|
- }
|
|
-
|
|
- bundle.putParcelable("data", dataBundle);
|
|
-
|
|
- Log.v(LOG_TAG, "onMessageReceived: " + bundle);
|
|
-
|
|
- // We need to run this on the main thread, as the React code assumes that is true.
|
|
- // Namely, DevServerHelper constructs a Handler() without a Looper, which triggers:
|
|
- // "Can't create handler inside thread that has not called Looper.prepare()"
|
|
- Handler handler = new Handler(Looper.getMainLooper());
|
|
- handler.post(new Runnable() {
|
|
- public void run() {
|
|
- // Construct and load our normal React JS code bundle
|
|
- final ReactInstanceManager mReactInstanceManager = ((ReactApplication) mFirebaseMessagingService.getApplication()).getReactNativeHost().getReactInstanceManager();
|
|
- ReactContext context = mReactInstanceManager.getCurrentReactContext();
|
|
- // If it's constructed, send a notificationre
|
|
- if (context != null) {
|
|
- handleRemotePushNotification((ReactApplicationContext) context, bundle);
|
|
- } else {
|
|
- // Otherwise wait for construction, then send the notification
|
|
- mReactInstanceManager.addReactInstanceEventListener(new ReactInstanceManager.ReactInstanceEventListener() {
|
|
- public void onReactContextInitialized(ReactContext context) {
|
|
- handleRemotePushNotification((ReactApplicationContext) context, bundle);
|
|
- mReactInstanceManager.removeReactInstanceEventListener(this);
|
|
- }
|
|
- });
|
|
- if (!mReactInstanceManager.hasStartedCreatingInitialContext()) {
|
|
- // Construct it in the background
|
|
- mReactInstanceManager.createReactContextInBackground();
|
|
- }
|
|
- }
|
|
- }
|
|
- });
|
|
- }
|
|
-
|
|
- private void handleRemotePushNotification(ReactApplicationContext context, Bundle bundle) {
|
|
-
|
|
- // If notification ID is not provided by the user for push notification, generate one at random
|
|
- if (bundle.getString("id") == null) {
|
|
- SecureRandom randomNumberGenerator = new SecureRandom();
|
|
- bundle.putString("id", String.valueOf(randomNumberGenerator.nextInt()));
|
|
- }
|
|
-
|
|
- Application applicationContext = (Application) context.getApplicationContext();
|
|
-
|
|
- RNPushNotificationConfig config = new RNPushNotificationConfig(mFirebaseMessagingService.getApplication());
|
|
- RNPushNotificationHelper pushNotificationHelper = new RNPushNotificationHelper(applicationContext);
|
|
-
|
|
- boolean isForeground = pushNotificationHelper.isApplicationInForeground();
|
|
-
|
|
- RNPushNotificationJsDelivery jsDelivery = new RNPushNotificationJsDelivery(context);
|
|
- bundle.putBoolean("foreground", isForeground);
|
|
- bundle.putBoolean("userInteraction", false);
|
|
- jsDelivery.notifyNotification(bundle);
|
|
-
|
|
- // If contentAvailable is set to true, then send out a remote fetch event
|
|
- if (bundle.getString("contentAvailable", "false").equalsIgnoreCase("true")) {
|
|
- jsDelivery.notifyRemoteFetch(bundle);
|
|
- }
|
|
-
|
|
- if (config.getNotificationForeground() || !isForeground) {
|
|
- Log.v(LOG_TAG, "sendNotification: " + bundle);
|
|
-
|
|
- pushNotificationHelper.sendToNotificationCentre(bundle);
|
|
- }
|
|
- }
|
|
-
|
|
- private String getLocalizedString(String text, String locKey, String[] locArgs) {
|
|
- if(text != null) {
|
|
- return text;
|
|
- }
|
|
-
|
|
- Context context = mFirebaseMessagingService.getApplicationContext();
|
|
- String packageName = context.getPackageName();
|
|
-
|
|
- String result = null;
|
|
-
|
|
- if (locKey != null) {
|
|
- int id = context.getResources().getIdentifier(locKey, "string", packageName);
|
|
- if (id != 0) {
|
|
- if (locArgs != null) {
|
|
- result = context.getResources().getString(id, (Object[]) locArgs);
|
|
- } else {
|
|
- result = context.getResources().getString(id);
|
|
- }
|
|
- }
|
|
- }
|
|
-
|
|
- return result;
|
|
- }
|
|
}
|
|
+
|