@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.
- package/CHANGELOG.md +9 -1
- package/README.md +40 -37
- package/SBOM.spdx.json +235 -163
- package/dist/account.js +5 -3
- package/dist/attachment-menu.js +3 -1
- package/dist/call-message.js +6 -4
- package/dist/calling.js +3 -1
- package/dist/conversation-details.js +9 -6
- package/dist/expo-connected-calling.d.ts +4 -2
- package/dist/expo-connected-calling.js +19 -4
- package/dist/expo-extras.js +4 -1
- package/dist/expo-media.js +27 -5
- package/dist/expo-messenger.d.ts +42 -4
- package/dist/expo-messenger.js +57 -7
- package/dist/expo-notifications.d.ts +2 -0
- package/dist/expo-notifications.js +8 -3
- package/dist/expo-outbox.js +22 -1
- package/dist/expo-screen.d.ts +1 -1
- package/dist/expo-screen.js +23 -14
- package/dist/expo-social.js +3 -1
- package/dist/expo.d.ts +1 -1
- package/dist/expo.js +1 -1
- package/dist/extras.js +9 -6
- package/dist/forward.js +6 -4
- package/dist/group-editor.js +7 -5
- package/dist/header-calls.js +7 -5
- package/dist/inbox-search.js +4 -2
- package/dist/inbox.js +9 -7
- package/dist/index.d.ts +6 -3
- package/dist/index.js +91 -61
- package/dist/localization.d.ts +24 -0
- package/dist/localization.js +12 -0
- package/dist/maps-connection.js +3 -1
- package/dist/media-ui.js +13 -7
- package/dist/message-menu.js +3 -1
- package/dist/native-outbox.d.ts +9 -1
- package/dist/native-outbox.js +7 -0
- package/dist/polls.js +18 -14
- package/dist/popup.js +6 -3
- package/dist/quick-send.js +4 -2
- package/dist/safety.js +9 -7
- package/dist/saved.js +5 -3
- package/dist/scheduled.js +17 -13
- package/dist/search.js +5 -3
- package/dist/social.js +7 -4
- package/dist/translation-settings.js +5 -3
- package/dist/voice-composer.js +9 -5
- package/package.json +9 -7
- package/setup.plugin.cjs +20 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
## 0.
|
|
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
|
|
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
|
-
|
|
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
|
|
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.
|