From f78f3b7db263525566f6dd00546a6788a1fa9611 Mon Sep 17 00:00:00 2001 From: Arnaud Roland Date: Wed, 4 Dec 2024 18:04:32 +0100 Subject: [PATCH 1/4] inbox: add api setFilterSilentNotifications and property isSilent --- .../java/com/batch/batch_rn/RNBatchInbox.java | 1 + .../com/batch/batch_rn/RNBatchModuleImpl.java | 9 ++++++ .../com/batch/batch_rn/RNBatchModule.java | 5 ++++ .../com/batch/batch_rn/RNBatchModule.java | 5 ++++ ios/RNBatch.mm | 28 +++++++++++++++++-- src/BatchInbox.ts | 9 ++++-- src/BatchInboxFetcher.ts | 10 +++++++ src/NativeRNBatchModule.ts | 1 + 8 files changed, 63 insertions(+), 5 deletions(-) diff --git a/android/src/main/java/com/batch/batch_rn/RNBatchInbox.java b/android/src/main/java/com/batch/batch_rn/RNBatchInbox.java index 76eac0f..086898c 100644 --- a/android/src/main/java/com/batch/batch_rn/RNBatchInbox.java +++ b/android/src/main/java/com/batch/batch_rn/RNBatchInbox.java @@ -51,6 +51,7 @@ private static WritableMap getWritableMapNotification(BatchInboxNotificationCont output.putString("identifier", notification.getNotificationIdentifier()); output.putString("body", notification.getBody()); output.putBoolean("isUnread", notification.isUnread()); + output.putBoolean("isSilent", notification.isSilent()); output.putDouble("date", notification.getDate().getTime()); int source = 0; // UNKNOWN diff --git a/android/src/main/java/com/batch/batch_rn/RNBatchModuleImpl.java b/android/src/main/java/com/batch/batch_rn/RNBatchModuleImpl.java index 165c2b0..891dcfd 100644 --- a/android/src/main/java/com/batch/batch_rn/RNBatchModuleImpl.java +++ b/android/src/main/java/com/batch/batch_rn/RNBatchModuleImpl.java @@ -459,6 +459,15 @@ public void inbox_fetcher_displayLandingMessage(Activity currentActivity, String promise.resolve(null); } + public void inbox_fetcher_setFilterSilentNotifications(String fetcherIdentifier, boolean filterSilentNotifications, Promise promise) { + if (!this.batchInboxFetcherMap.containsKey(fetcherIdentifier)) { + promise.reject("InboxError", "FETCHER_NOT_FOUND"); + return; + } + BatchInboxFetcher fetcher = this.batchInboxFetcherMap.get(fetcherIdentifier); + fetcher.setFilterSilentNotifications(filterSilentNotifications); + } + // USER MODULE public void user_getInstallationId(Promise promise) { diff --git a/android/src/newarch/java/com/batch/batch_rn/RNBatchModule.java b/android/src/newarch/java/com/batch/batch_rn/RNBatchModule.java index e8fde3a..022e354 100644 --- a/android/src/newarch/java/com/batch/batch_rn/RNBatchModule.java +++ b/android/src/newarch/java/com/batch/batch_rn/RNBatchModule.java @@ -197,6 +197,11 @@ public void inbox_fetcher_displayLandingMessage(String fetcherIdentifier, String impl.inbox_fetcher_displayLandingMessage(getCurrentActivity(), fetcherIdentifier, notificationIdentifier, promise); } + @Override + public void inbox_fetcher_setFilterSilentNotifications(String fetcherIdentifier, boolean filterSilentNotifications, Promise promise) { + impl.inbox_fetcher_setFilterSilentNotifications(fetcherIdentifier, filterSilentNotifications, promise); + } + // USER MODULE @Override diff --git a/android/src/oldarch/java/com/batch/batch_rn/RNBatchModule.java b/android/src/oldarch/java/com/batch/batch_rn/RNBatchModule.java index b12b7ba..43163e0 100644 --- a/android/src/oldarch/java/com/batch/batch_rn/RNBatchModule.java +++ b/android/src/oldarch/java/com/batch/batch_rn/RNBatchModule.java @@ -203,6 +203,11 @@ public void inbox_fetcher_displayLandingMessage(String fetcherIdentifier, String impl.inbox_fetcher_displayLandingMessage(getCurrentActivity(), fetcherIdentifier, notificationIdentifier, promise); } + @ReactMethod + public void inbox_fetcher_setFilterSilentNotifications(String fetcherIdentifier, boolean filterSilentNotifications, final Promise promise) { + impl.inbox_fetcher_setFilterSilentNotifications(fetcherIdentifier, filterSilentNotifications, promise); + } + // USER MODULE @ReactMethod diff --git a/ios/RNBatch.mm b/ios/RNBatch.mm index 5912db1..f83bdbb 100644 --- a/ios/RNBatch.mm +++ b/ios/RNBatch.mm @@ -791,6 +791,24 @@ - (BatchInboxNotificationContent *) findNotificationInList: (NSArray { + return RNBatch.inbox_fetcher_setFilterSilentNotifications(this.identifier, filterSilentNotifications); + } + /** * Fetches new notifications (and resets pagination to 0). * diff --git a/src/NativeRNBatchModule.ts b/src/NativeRNBatchModule.ts index 2fdec45..b9b0235 100644 --- a/src/NativeRNBatchModule.ts +++ b/src/NativeRNBatchModule.ts @@ -65,6 +65,7 @@ export interface Spec extends TurboModule { endReached: boolean; }>; inbox_fetcher_displayLandingMessage(fetcherIdentifier: string, notificationIdentifier: string): Promise; + inbox_fetcher_setFilterSilentNotifications(fetcherIdentifier: string, filterSilentNotifications: boolean): Promise; // User Module user_getInstallationId(): Promise; From c3bb82fcd75c9675a432f1b583c5c0d916ea4601 Mon Sep 17 00:00:00 2001 From: Arnaud Roland Date: Wed, 4 Dec 2024 18:26:37 +0100 Subject: [PATCH 2/4] ios: fix main thread analyser warning on display landing message from inbox --- ios/RNBatch.mm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ios/RNBatch.mm b/ios/RNBatch.mm index f83bdbb..4096b94 100644 --- a/ios/RNBatch.mm +++ b/ios/RNBatch.mm @@ -786,9 +786,10 @@ - (BatchInboxNotificationContent *) findNotificationInList: (NSArray Date: Wed, 4 Dec 2024 18:36:37 +0100 Subject: [PATCH 3/4] all: update changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6989301..ecf01ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,11 @@ UPCOMING - Added `messagingCustomPayload` property to `BatchMessagingEventPayload` (only for In-App Message). - Added `pushPayload` property to `BatchMessagingEventPayload` (only for Landing Mobile). +**Inbox** +- Added `isSilent` property to `IInboxNotification`. +- Added `setFilterSilentNotifications` method to `BatchInboxFetcher`. Default value is true. +- ⚠️ BREAKING: `body` property from `IInboxNotification` is now nullable since the inbox fetcher may not filter silent notifications. + 9.0.2 ---- From b23a78c06ec3b2b74ba71d63ffeea73ee3645e90 Mon Sep 17 00:00:00 2001 From: Arnaud Roland Date: Thu, 5 Dec 2024 10:42:32 +0100 Subject: [PATCH 4/4] inbox: fix parsing inbox notification payload --- src/BatchInboxFetcher.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BatchInboxFetcher.ts b/src/BatchInboxFetcher.ts index a8c4454..59fe7d4 100644 --- a/src/BatchInboxFetcher.ts +++ b/src/BatchInboxFetcher.ts @@ -119,7 +119,7 @@ const parseNotifications = (notifications: IInboxNotification[]): IInboxNotifica ...notification, payload: { ...(notification.payload as Record), - 'com.batch': JSON.parse(batchPayload), + 'com.batch': typeof batchPayload == 'string' ? JSON.parse(batchPayload) : batchPayload, }, }; } catch (error) {