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 ---- 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..4096b94 100644 --- a/ios/RNBatch.mm +++ b/ios/RNBatch.mm @@ -786,8 +786,27 @@ - (BatchInboxNotificationContent *) findNotificationInList: (NSArray { + return RNBatch.inbox_fetcher_setFilterSilentNotifications(this.identifier, filterSilentNotifications); + } + /** * Fetches new notifications (and resets pagination to 0). * @@ -109,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) { 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;