From 8201e3eef69389ab8dd89a1eef30b82746fa3a37 Mon Sep 17 00:00:00 2001 From: Mahmoud Elmorabea Date: Wed, 29 Jul 2026 12:13:42 +0300 Subject: [PATCH 1/2] feat(sample): Visual Inbox demo screen in the RN example app MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a Visual Inbox screen exercising all three components — the drop-in overlay, the standalone bell driving a modal, and the embedded message list — plus an on-screen readout of the InboxEventListener callbacks (action / shown / opened / dismissed) so the listener bridge can be checked by hand. Stacked on the SDK branch: this only adds demo UI. The build wiring the sample needs to resolve the unreleased native inbox (example Podfile branch pins, core library desugaring) lives in the SDK commit, so that PR stands on its own in CI. Co-Authored-By: Claude Opus 5 (1M context) --- example/package-lock.json | 4 +- example/src/navigation/props.ts | 2 + example/src/screens/content-navigator.tsx | 10 ++ example/src/screens/home.tsx | 7 + example/src/screens/index.ts | 1 + example/src/screens/visual-inbox.tsx | 156 ++++++++++++++++++++++ 6 files changed, 178 insertions(+), 2 deletions(-) create mode 100644 example/src/screens/visual-inbox.tsx diff --git a/example/package-lock.json b/example/package-lock.json index a6c0aec2..a1d275c3 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -5201,9 +5201,9 @@ "license": "MIT" }, "node_modules/customerio-reactnative": { - "version": "6.4.0", + "version": "6.5.2", "resolved": "file:../customerio-reactnative.tgz", - "integrity": "sha512-zecDKrOc6EXHFdC04KLqiTeYTBRmV0cFEGEhTzVn2+wjskKFy8kxMKN/5yAxXi7uMyO08AYM4nuckKfn5ayZjw==", + "integrity": "sha512-rNij5E016mf4wUwMmsSM9/VSsCxOUU2sVwUvsXfWV24qKyXhqzKyifEZs17APbfzkz1DmaJbtmMPJ49DzdS3mA==", "hasInstallScript": true, "license": "MIT", "engines": { diff --git a/example/src/navigation/props.ts b/example/src/navigation/props.ts index f7e24907..660a0482 100644 --- a/example/src/navigation/props.ts +++ b/example/src/navigation/props.ts @@ -12,6 +12,7 @@ export const CustomDeviceAttrScreenName = 'Device Attributes' as const; export const InternalSettingsScreenName = 'Internal Settings' as const; export const InlineExamplesScreenName = 'Inline Examples' as const; export const InboxMessagesScreenName = 'Inbox Messages' as const; +export const VisualInboxScreenName = 'Visual Inbox' as const; export const LocationScreenName = 'Location' as const; export type NavigationStackParamList = { @@ -25,6 +26,7 @@ export type NavigationStackParamList = { [InternalSettingsScreenName]: undefined; [InlineExamplesScreenName]: undefined; [InboxMessagesScreenName]: undefined; + [VisualInboxScreenName]: undefined; [LocationScreenName]: undefined; }; diff --git a/example/src/screens/content-navigator.tsx b/example/src/screens/content-navigator.tsx index 7a3b420e..400693fd 100644 --- a/example/src/screens/content-navigator.tsx +++ b/example/src/screens/content-navigator.tsx @@ -11,6 +11,7 @@ import { NavigationStackParamList, SettingsScreenName, TrackScreenName, + VisualInboxScreenName, } from '@navigation'; import { createNativeStackNavigator } from '@react-navigation/native-stack'; import { screenStylingOptions } from '@utils'; @@ -27,6 +28,7 @@ import { LogingScreen, SettingsScreen, TrackScreen, + VisualInboxScreen, } from '@screens'; import { Storage } from '@services'; @@ -130,6 +132,14 @@ export const ContentNavigator = ({ appName }: { appName: string }) => { headerBackVisible: true, }} /> + +