@robono/messaging-react-native 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/README.md +40 -37
  3. package/SBOM.spdx.json +235 -163
  4. package/dist/account.js +5 -3
  5. package/dist/attachment-menu.js +3 -1
  6. package/dist/call-message.js +6 -4
  7. package/dist/calling.js +3 -1
  8. package/dist/conversation-details.js +9 -6
  9. package/dist/expo-connected-calling.d.ts +4 -2
  10. package/dist/expo-connected-calling.js +19 -4
  11. package/dist/expo-extras.js +4 -1
  12. package/dist/expo-media.js +27 -5
  13. package/dist/expo-messenger.d.ts +42 -4
  14. package/dist/expo-messenger.js +57 -7
  15. package/dist/expo-notifications.d.ts +2 -0
  16. package/dist/expo-notifications.js +8 -3
  17. package/dist/expo-outbox.js +22 -1
  18. package/dist/expo-screen.d.ts +1 -1
  19. package/dist/expo-screen.js +23 -14
  20. package/dist/expo-social.js +3 -1
  21. package/dist/expo.d.ts +1 -1
  22. package/dist/expo.js +1 -1
  23. package/dist/extras.js +9 -6
  24. package/dist/forward.js +6 -4
  25. package/dist/group-editor.js +7 -5
  26. package/dist/header-calls.js +7 -5
  27. package/dist/inbox-search.js +4 -2
  28. package/dist/inbox.js +9 -7
  29. package/dist/index.d.ts +6 -3
  30. package/dist/index.js +91 -61
  31. package/dist/localization.d.ts +24 -0
  32. package/dist/localization.js +12 -0
  33. package/dist/maps-connection.js +3 -1
  34. package/dist/media-ui.js +13 -7
  35. package/dist/message-menu.js +3 -1
  36. package/dist/native-outbox.d.ts +9 -1
  37. package/dist/native-outbox.js +7 -0
  38. package/dist/polls.js +18 -14
  39. package/dist/popup.js +6 -3
  40. package/dist/quick-send.js +4 -2
  41. package/dist/safety.js +9 -7
  42. package/dist/saved.js +5 -3
  43. package/dist/scheduled.js +17 -13
  44. package/dist/search.js +5 -3
  45. package/dist/social.js +7 -4
  46. package/dist/translation-settings.js +5 -3
  47. package/dist/voice-composer.js +9 -5
  48. package/package.json +9 -7
  49. package/setup.plugin.cjs +20 -0
package/CHANGELOG.md CHANGED
@@ -1,4 +1,12 @@
1
- ## 0.7.0 — unreleased
1
+ ## 0.9.0 — release candidate
2
+
3
+ Supply hosted connections, durable offline actions, interface language, localized Maps/calls, and retryable native upload errors. Use native calling 0.7 and Maps 0.3 with an app rebuild.
4
+
5
+ ## 0.8.0
6
+
7
+ Connect the supplied Expo Messenger to native incoming calls automatically. Register VoIP/system calling with the existing signed-in device, clear account state on sign-out, cache contact names and use selected Android calling appearance. Requires calling-react-native 0.6.0 and a native app rebuild.
8
+
9
+ ## 0.7.0 — 2026-11-04
2
10
 
3
11
  Supply automatic Expo calling, Maps and connected chat extras. Use Messenger attachment menus, grouped media, bounded dialogs and anchored inbox actions. Connect managed call alerts, unanswered-call messages and call-aware media audio. Stop location and pending uploads during account cleanup.
4
12
 
package/README.md CHANGED
@@ -1,11 +1,48 @@
1
1
  # Optional Robono messaging screens
2
2
 
3
+ ## Recommended hosted installation
4
+
5
+ Run `npx --package @robono/server robono-messenger-install` in your Expo project. The installer sets up the connection and native plugin. Robono runs the communication services; your server verifies the existing login and issues its short-lived session. See the server package's [hosted guide](https://robono.com/guides/hosted-messenger.html).
6
+
7
+ ```tsx
8
+ import {createHostedExpoMessenger, ExpoMessenger} from '@robono/messaging-react-native/expo';
9
+ import {hostedRobonoTokenProvider} from '@robono/messaging';
10
+ const messenger = await createHostedExpoMessenger({
11
+ userId: session.userId,
12
+ tokenProvider: hostedRobonoTokenProvider({
13
+ tokenEndpoint: 'https://your-app.example/api/robono-token',
14
+ getAccessToken: () => session.accessToken(),
15
+ }),
16
+ });
17
+ <ExpoMessenger {...messenger} userId={session.userId}
18
+ companyName="Your company" contacts={contacts} />
19
+ try { await messenger.signOut(); } finally { await session.signOut(); }
20
+ ```
21
+
22
+ Create this connection outside repeated renders, and dispose it when unmounting. Use the generated component to handle account changes and retries automatically. The lower-level `createExpoMessenger` and server forwarding adapters remain available for an optional self-hosted connection.
23
+
24
+ Install the native dependencies below and rebuild both platforms. For alerts
25
+ outside the app, `createExpoMessenger` connects the managed service automatically. Use the Account screen’s Enable notifications action and follow
26
+ `@robono/server/NOTIFICATIONS.md`: iPhone needs **your** Apple Team ID, APNs Key ID,
27
+ private .p8 key and Bundle ID; Android needs **your** Firebase project, app
28
+ configuration and a service-account key uploaded in Robono’s private notification setup. Never ship private keys in the
29
+ app. Website chat itself does not require these mobile credentials.
30
+
31
+ The supplied group owner, shared-media, reply and pinned-message screens use the
32
+ same popup boundaries as Messenger. Global search and group controls require the
33
+ matching server and service migrations. Imported groups need a server-assigned
34
+ owner before users can edit them. Optional offline received history is disabled
35
+ by default; its network-selected expiry is honored and it is read-only offline.
36
+ Revocation while disconnected is not known until reconnection or expiry. Logout
37
+ clears the local account's history. `persistence:false` disables these local stores.
38
+
39
+
3
40
  Use a ready-made direct or group conversation screen, replace its sections, or compose the exported components into your own layout. Use `ExpoMessenger` for the complete inbox and conversation flow, or the individual components inside your existing navigation. The complete Expo messenger connects notification registration; nothing requests permission on mount. The shared icon controls require `react-native-svg` (install it with your framework’s native dependency installer).
4
41
 
5
42
  ## Connected features
6
43
 
7
44
  The complete messenger connects selected calling, chat weather/tracking and Maps
8
- through the same authenticated server route. Customers do not supply fake demo
45
+ through Robono’s authenticated hosted connection. Customers do not supply fake demo
9
46
  callbacks or create separate call controllers for this setup. Feature selection
10
47
  and appearance remain in **Features & preview**. Advanced custom interfaces can
11
48
  still use individual components and callbacks.
@@ -26,7 +63,7 @@ own database; retries with the same values are safe. Keep group membership in th
26
63
  messaging group API; eligible groups use that same membership for calls. Supergroups
27
64
  never start calls, and voice/video calls remain limited to eight people.
28
65
 
29
- The host's `authorize` function checks `calling.*`, `extras.*` and `location.*` as
66
+ For the optional self-hosted connection, the host's `authorize` function checks `calling.*`, `extras.*` and `location.*` as
30
67
  well as messaging operations. Account checks have no conversation ID; call actions
31
68
  use the actual conversation from the service, never a caller-supplied claim. Keep
32
69
  current membership, suspension and feature restrictions in those checks.
@@ -44,40 +81,6 @@ capture and calls, cancels unfinished tracking and unregisters the device. Old
44
81
  account credentials and unfinished work must never be reused for another person.
45
82
 
46
83
 
47
- ## Recommended installation
48
-
49
- Connect `createRobonoMessengerServer` from `@robono/server` at one authenticated
50
- HTTPS route. It supplies managed private attachments. Create one connection per
51
- signed-in account, outside repeated renders:
52
-
53
- ```tsx
54
- import {createExpoMessenger, ExpoMessenger} from '@robono/messaging-react-native/expo';
55
- const messenger = createExpoMessenger({
56
- endpoint: 'https://your-app.example/api/robono',
57
- userId: session.userId,
58
- getAccessToken: () => session.accessToken(),
59
- isCallActive: () => calls.isActive(),
60
- });
61
- <ExpoMessenger {...messenger} userId={session.userId}
62
- companyName="Your company" contacts={contacts} />
63
- // On logout, before destroying the user's session:
64
- try { await messenger.signOut(); } finally { await session.signOut(); }
65
- ```
66
-
67
- Install the native dependencies below and rebuild both platforms. For alerts
68
- outside the app, `createExpoMessenger` connects the managed service automatically. Use the Account screen’s Enable notifications action and follow
69
- `@robono/server/NOTIFICATIONS.md`: iPhone needs **your** Apple Team ID, APNs Key ID,
70
- private .p8 key and Bundle ID; Android needs **your** Firebase project, app
71
- configuration and a service-account key uploaded in Robono’s private notification setup. Never ship private keys in the
72
- app. Website chat itself does not require these mobile credentials.
73
-
74
- The supplied group owner, shared-media, reply and pinned-message screens use the
75
- same popup boundaries as Messenger. Global search and group controls require the
76
- matching server and service migrations. Imported groups need a server-assigned
77
- owner before users can edit them. Optional offline received history is disabled
78
- by default; its network-selected expiry is honored and it is read-only offline.
79
- Revocation while disconnected is not known until reconnection or expiry. Logout
80
- clears the local account's history. `persistence:false` disables these local stores.
81
84
 
82
85
  ## Individual screen inside existing navigation
83
86
 
@@ -252,7 +255,7 @@ Blocking retains history and stops direct messages and calls for that pair in yo
252
255
 
253
256
  Enable Reactions to show an emoji ribbon beside the long-pressed bubble, or the hover smile icon on desktop. Selected reactions stay above the delivery indicator. Polls are interactive chat messages created from the attachment menu. Transcript is a separate voice-message action. In the header's three-dot menu, choose translation **Off / Text / Voice** and languages once for the conversation. The saved choice controls Translate or Play Translation on eligible incoming messages; own messages and matching sender/target languages do not show it. The result has Show original / Show translation controls. Expo supplies translated-voice playback and its audio session; an explicit Play Translation action starts playback when ready. `language` supplies the initial target and `contact.language` / `participants[id].language` supply known sender languages, with a saved conversation incoming-language fallback. Defaults to Off. The Expo private outbox retains preferences across restarts on this device. Custom contact menus can call `client.setTranslationPreference({mode:'text',language:'es',sourceLanguage:'en'})`. Connect `MessagingClient.transformRequest` to the authenticated `createMessagingTransformBackendAdapter` on your server.
254
257
 
255
- ### November 1 behavior update (unpublished)
258
+ ### November 1 behavior update
256
259
 
257
260
  The default palette follows Messenger. Existing saved customer colors remain in
258
261
  place. Direct chats use the brand header; groups use Messenger’s blue header.