@repzo/widget-react-native 1.2.1 → 1.2.2

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 (117) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +31 -0
  3. package/lib/commonjs/api/client.js +47 -2
  4. package/lib/commonjs/api/client.js.map +1 -1
  5. package/lib/commonjs/audio/voice.js +119 -0
  6. package/lib/commonjs/audio/voice.js.map +1 -0
  7. package/lib/commonjs/i18n.js +6 -0
  8. package/lib/commonjs/i18n.js.map +1 -1
  9. package/lib/commonjs/locales.js +4 -0
  10. package/lib/commonjs/locales.js.map +1 -1
  11. package/lib/commonjs/state/use-widget-state.js +31 -0
  12. package/lib/commonjs/state/use-widget-state.js.map +1 -1
  13. package/lib/commonjs/state/widget-store.js +22 -1
  14. package/lib/commonjs/state/widget-store.js.map +1 -1
  15. package/lib/commonjs/ui/WidgetProvider.js +6 -0
  16. package/lib/commonjs/ui/WidgetProvider.js.map +1 -1
  17. package/lib/commonjs/ui/components/FileCard.js +134 -0
  18. package/lib/commonjs/ui/components/FileCard.js.map +1 -0
  19. package/lib/commonjs/ui/components/Launcher.js +15 -1
  20. package/lib/commonjs/ui/components/Launcher.js.map +1 -1
  21. package/lib/commonjs/ui/components/VoiceNote.js +354 -0
  22. package/lib/commonjs/ui/components/VoiceNote.js.map +1 -0
  23. package/lib/commonjs/ui/components/icons.js +57 -0
  24. package/lib/commonjs/ui/components/icons.js.map +1 -1
  25. package/lib/commonjs/ui/screens/chat/ChatView.js +33 -14
  26. package/lib/commonjs/ui/screens/chat/ChatView.js.map +1 -1
  27. package/lib/commonjs/ui/screens/chat/ChatView.styles.js +0 -9
  28. package/lib/commonjs/ui/screens/chat/ChatView.styles.js.map +1 -1
  29. package/lib/module/api/client.js +48 -2
  30. package/lib/module/api/client.js.map +1 -1
  31. package/lib/module/audio/voice.js +110 -0
  32. package/lib/module/audio/voice.js.map +1 -0
  33. package/lib/module/i18n.js +6 -0
  34. package/lib/module/i18n.js.map +1 -1
  35. package/lib/module/locales.js +4 -0
  36. package/lib/module/locales.js.map +1 -1
  37. package/lib/module/state/use-widget-state.js +30 -1
  38. package/lib/module/state/use-widget-state.js.map +1 -1
  39. package/lib/module/state/widget-store.js +22 -1
  40. package/lib/module/state/widget-store.js.map +1 -1
  41. package/lib/module/ui/WidgetProvider.js +6 -0
  42. package/lib/module/ui/WidgetProvider.js.map +1 -1
  43. package/lib/module/ui/components/FileCard.js +130 -0
  44. package/lib/module/ui/components/FileCard.js.map +1 -0
  45. package/lib/module/ui/components/Launcher.js +16 -2
  46. package/lib/module/ui/components/Launcher.js.map +1 -1
  47. package/lib/module/ui/components/VoiceNote.js +350 -0
  48. package/lib/module/ui/components/VoiceNote.js.map +1 -0
  49. package/lib/module/ui/components/icons.js +55 -0
  50. package/lib/module/ui/components/icons.js.map +1 -1
  51. package/lib/module/ui/screens/chat/ChatView.js +33 -14
  52. package/lib/module/ui/screens/chat/ChatView.js.map +1 -1
  53. package/lib/module/ui/screens/chat/ChatView.styles.js +0 -9
  54. package/lib/module/ui/screens/chat/ChatView.styles.js.map +1 -1
  55. package/lib/typescript/commonjs/api/client.d.ts +12 -0
  56. package/lib/typescript/commonjs/api/client.d.ts.map +1 -1
  57. package/lib/typescript/commonjs/audio/voice.d.ts +29 -0
  58. package/lib/typescript/commonjs/audio/voice.d.ts.map +1 -0
  59. package/lib/typescript/commonjs/i18n.d.ts +4 -0
  60. package/lib/typescript/commonjs/i18n.d.ts.map +1 -1
  61. package/lib/typescript/commonjs/locales.d.ts.map +1 -1
  62. package/lib/typescript/commonjs/state/use-widget-state.d.ts +8 -0
  63. package/lib/typescript/commonjs/state/use-widget-state.d.ts.map +1 -1
  64. package/lib/typescript/commonjs/state/widget-store.d.ts +2 -0
  65. package/lib/typescript/commonjs/state/widget-store.d.ts.map +1 -1
  66. package/lib/typescript/commonjs/ui/WidgetProvider.d.ts.map +1 -1
  67. package/lib/typescript/commonjs/ui/components/FileCard.d.ts +21 -0
  68. package/lib/typescript/commonjs/ui/components/FileCard.d.ts.map +1 -0
  69. package/lib/typescript/commonjs/ui/components/Launcher.d.ts.map +1 -1
  70. package/lib/typescript/commonjs/ui/components/VoiceNote.d.ts +32 -0
  71. package/lib/typescript/commonjs/ui/components/VoiceNote.d.ts.map +1 -0
  72. package/lib/typescript/commonjs/ui/components/icons.d.ts +4 -0
  73. package/lib/typescript/commonjs/ui/components/icons.d.ts.map +1 -1
  74. package/lib/typescript/commonjs/ui/screens/chat/ChatView.d.ts.map +1 -1
  75. package/lib/typescript/commonjs/ui/screens/chat/ChatView.styles.d.ts +0 -9
  76. package/lib/typescript/commonjs/ui/screens/chat/ChatView.styles.d.ts.map +1 -1
  77. package/lib/typescript/commonjs/ui/screens/chat/ChatView.types.d.ts +4 -0
  78. package/lib/typescript/commonjs/ui/screens/chat/ChatView.types.d.ts.map +1 -1
  79. package/lib/typescript/module/api/client.d.ts +12 -0
  80. package/lib/typescript/module/api/client.d.ts.map +1 -1
  81. package/lib/typescript/module/audio/voice.d.ts +29 -0
  82. package/lib/typescript/module/audio/voice.d.ts.map +1 -0
  83. package/lib/typescript/module/i18n.d.ts +4 -0
  84. package/lib/typescript/module/i18n.d.ts.map +1 -1
  85. package/lib/typescript/module/locales.d.ts.map +1 -1
  86. package/lib/typescript/module/state/use-widget-state.d.ts +8 -0
  87. package/lib/typescript/module/state/use-widget-state.d.ts.map +1 -1
  88. package/lib/typescript/module/state/widget-store.d.ts +2 -0
  89. package/lib/typescript/module/state/widget-store.d.ts.map +1 -1
  90. package/lib/typescript/module/ui/WidgetProvider.d.ts.map +1 -1
  91. package/lib/typescript/module/ui/components/FileCard.d.ts +21 -0
  92. package/lib/typescript/module/ui/components/FileCard.d.ts.map +1 -0
  93. package/lib/typescript/module/ui/components/Launcher.d.ts.map +1 -1
  94. package/lib/typescript/module/ui/components/VoiceNote.d.ts +32 -0
  95. package/lib/typescript/module/ui/components/VoiceNote.d.ts.map +1 -0
  96. package/lib/typescript/module/ui/components/icons.d.ts +4 -0
  97. package/lib/typescript/module/ui/components/icons.d.ts.map +1 -1
  98. package/lib/typescript/module/ui/screens/chat/ChatView.d.ts.map +1 -1
  99. package/lib/typescript/module/ui/screens/chat/ChatView.styles.d.ts +0 -9
  100. package/lib/typescript/module/ui/screens/chat/ChatView.styles.d.ts.map +1 -1
  101. package/lib/typescript/module/ui/screens/chat/ChatView.types.d.ts +4 -0
  102. package/lib/typescript/module/ui/screens/chat/ChatView.types.d.ts.map +1 -1
  103. package/package.json +5 -1
  104. package/src/api/client.ts +56 -2
  105. package/src/audio/voice.ts +103 -0
  106. package/src/i18n.ts +6 -0
  107. package/src/locales.ts +4 -0
  108. package/src/state/use-widget-state.ts +30 -1
  109. package/src/state/widget-store.ts +22 -1
  110. package/src/ui/WidgetProvider.tsx +6 -0
  111. package/src/ui/components/FileCard.tsx +111 -0
  112. package/src/ui/components/Launcher.tsx +7 -2
  113. package/src/ui/components/VoiceNote.tsx +363 -0
  114. package/src/ui/components/icons.tsx +33 -0
  115. package/src/ui/screens/chat/ChatView.styles.ts +0 -9
  116. package/src/ui/screens/chat/ChatView.tsx +39 -13
  117. package/src/ui/screens/chat/ChatView.types.ts +4 -0
package/CHANGELOG.md CHANGED
@@ -12,6 +12,34 @@ All notable changes to `@repzo/widget-react-native`, newest first.
12
12
 
13
13
  ## Unreleased
14
14
 
15
+ ## 1.2.2 — 2026-10-26
16
+
17
+ ### Added
18
+
19
+ - **Voice messages play in the chat.** Voice notes from your team (and any
20
+ other audio file) get a player in the message — play/pause, a waveform to
21
+ tap or drag through, and 1×/1.5×/2× speed — instead of a file that opens in
22
+ the browser. Needs the new optional peer `expo-audio` (Expo SDK 53+) in your
23
+ app and a native rebuild; without it, audio still opens in the browser. A
24
+ note downloads only when it's played, and one that can't be played opens in
25
+ the browser instead. The widget doesn't change your app's audio session, so
26
+ on iOS notes stay muted with the ringer switch on silent unless your app
27
+ calls `setAudioModeAsync({ playsInSilentMode: true })` from `expo-audio`.
28
+
29
+ ### Changed
30
+
31
+ - **Fewer requests when your app comes back to the foreground.** Back within
32
+ five minutes, the widget only catches up the conversation list and the open
33
+ conversation; availability and the Send post are re-checked after longer
34
+ breaks. Returning from a system sheet, Face ID or the notification shade
35
+ (the app never left the foreground) no longer re-checks anything.
36
+ - **One request for the post and the launcher's chat message at start-up**
37
+ instead of two, with a newer Workstation. Older deployments keep getting
38
+ the two requests as before.
39
+ - **`RepzoWidgetLauncher` redraws less.** It now only re-renders when its
40
+ color, position, open state or unread badge changes, not on every message
41
+ or typing event.
42
+
15
43
  ## 1.2.1 — 2026-10-18
16
44
 
17
45
  ### Added
package/README.md CHANGED
@@ -25,6 +25,7 @@ in your Repzo Inbox and agent replies arrive live.
25
25
  - Catches up after a dropped connection or a trip to the background — no missed or duplicated replies
26
26
  - Agent UI blocks: product cards, slot pickers, lead forms, quotes, receipts
27
27
  - **Photo and file attachments** (optional — with `expo-image-picker` / `expo-document-picker`, or your own picker)
28
+ - **Voice messages play in the chat** (optional — with `expo-audio`)
28
29
  - **In-app notification cards** for new replies while the messenger is closed
29
30
  - **Posts** from Workstation over the app, with replies or emoji reactions
30
31
  - **Push notifications via FCM** (optional — needs `@react-native-firebase/messaging` in the host app), including Mobile Push campaigns from Workstation with images
@@ -45,6 +46,7 @@ in your Repzo Inbox and agent replies arrive live.
45
46
  | `expo-document-picker` | optional — "File" attachments |
46
47
  | `expo-file-system` | optional — reads picked files as base64 (falls back to `fetch` without it) |
47
48
  | `expo-image-manipulator` | optional — shrinks photos so camera shots fit the 1.5 MB attachment limit |
49
+ | `expo-audio` | optional (*1.2.2+*) — plays voice messages and audio files inside the chat (Expo SDK 53+) |
48
50
  | `expo-crypto` | optional (*1.1.0+*) — secure random source for the anonymous device id when the runtime has no `crypto` global (see below) |
49
51
 
50
52
  Realtime uses React Native’s built-in streaming XMLHttpRequest; there are no bundled runtime dependencies.
@@ -374,6 +376,35 @@ await RepzoWidget.boot({
374
376
  The limits still apply to whatever `pick` returns. To turn attachments off in
375
377
  the app regardless of the channel setting, pass `attachments: { enabled: false }`.
376
378
 
379
+ ### Voice messages
380
+
381
+ *1.2.2+.* Voice messages from your team, and any other audio file in the
382
+ conversation, play right in the chat — a play button, a waveform to tap or
383
+ drag through, and 1×/1.5×/2× speed — once your app has `expo-audio`:
384
+
385
+ ```sh
386
+ npx expo install expo-audio
387
+ ```
388
+
389
+ It's a native module, so rebuild the app (a new development build or store
390
+ build; an over-the-air update alone isn't enough). Without it, audio shows as a
391
+ file the visitor taps to open in the browser, as before. A note only downloads
392
+ once the visitor taps play, starting one pauses any other, and a note that
393
+ can't be played falls back to that file.
394
+
395
+ The widget leaves your app's audio session alone, so notes follow your
396
+ expo-audio settings. On iOS that means they're muted while the ringer switch is
397
+ on silent, unless your app turns that on:
398
+
399
+ ```ts
400
+ import { setAudioModeAsync } from 'expo-audio';
401
+
402
+ await setAudioModeAsync({ playsInSilentMode: true });
403
+ ```
404
+
405
+ On iOS, `setAudioModeAsync` resets any field you leave out to its default, so
406
+ pass the rest of your app's audio mode along with it.
407
+
377
408
  ## Errors
378
409
 
379
410
  `boot()` / login calls reject with a `RepzoWidgetError` (`status`, `code`).
@@ -38,6 +38,8 @@ class RepzoWidgetError extends Error {
38
38
  return new RepzoWidgetError(message || `HTTP ${status}`, status, code);
39
39
  }
40
40
  }
41
+
42
+ /** A Send message part asked for on its own, which may share one request with others. */
41
43
  exports.RepzoWidgetError = RepzoWidgetError;
42
44
  class WidgetApiClient {
43
45
  baseUrl = '';
@@ -53,6 +55,9 @@ class WidgetApiClient {
53
55
 
54
56
  /** Set by the store: a 403 with a terminal `code` came back from any endpoint. */
55
57
  onTerminalError = null;
58
+
59
+ /** Send parts asked for in this tick — see askSendPart. */
60
+ sendPartBatch = null;
56
61
  configure(baseUrl, channelAccountId) {
57
62
  this.baseUrl = baseUrl.replace(/\/$/, '');
58
63
  this.channelAccountId = channelAccountId;
@@ -141,7 +146,7 @@ class WidgetApiClient {
141
146
  return this.request(`/api/widget/config/${encodeURIComponent(this.channelAccountId)}${query}`);
142
147
  }
143
148
  getOutboundMessage() {
144
- return this.request(`/api/widget/outbound/${encodeURIComponent(this.channelAccountId)}`);
149
+ return this.askSendPart('outbound', () => this.request(`/api/widget/outbound/${encodeURIComponent(this.channelAccountId)}`));
145
150
  }
146
151
 
147
152
  /**
@@ -149,7 +154,47 @@ class WidgetApiClient {
149
154
  * `recheckInMs`: ask again after this long — the shown one stops then.
150
155
  */
151
156
  getPost() {
152
- return this.request('/api/widget/send/post?platform=mobile');
157
+ return this.askSendPart('post', () => this.request('/api/widget/send/post?platform=mobile'));
158
+ }
159
+
160
+ /**
161
+ * The post and the launcher's chat message are both asked for right after a
162
+ * session starts: asks made in the same tick go out as one request (each
163
+ * part answers the way its own endpoint does). A lone ask, a Workstation
164
+ * deployment that doesn't know a part yet (it leaves it out — the
165
+ * `outbound` part is newer than the combined endpoint), or a failed combined
166
+ * request falls back to each part's own endpoint, as before.
167
+ */
168
+ askSendPart(part, own) {
169
+ return new Promise((resolve, reject) => {
170
+ if (!this.sendPartBatch) {
171
+ this.sendPartBatch = [];
172
+ setTimeout(() => void this.flushSendParts(), 0);
173
+ }
174
+ this.sendPartBatch.push({
175
+ part,
176
+ own,
177
+ resolve: resolve,
178
+ reject
179
+ });
180
+ });
181
+ }
182
+ async flushSendParts() {
183
+ const asks = this.sendPartBatch ?? [];
184
+ this.sendPartBatch = null;
185
+ const parts = Array.from(new Set(asks.map(ask => ask.part)));
186
+ let answer = null;
187
+ if (parts.length > 1) {
188
+ try {
189
+ answer = await this.request(`/api/widget/send/messages?include=${parts.join(',')}&platform=mobile`);
190
+ } catch {
191
+ answer = null;
192
+ }
193
+ }
194
+ for (const ask of asks) {
195
+ const value = answer?.[ask.part];
196
+ if (value && typeof value === 'object') ask.resolve(value);else ask.own().then(ask.resolve, ask.reject);
197
+ }
153
198
  }
154
199
 
155
200
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["_storage","require","_safeUrl","TERMINAL_CODES","Set","isTerminalErrorCode","code","has","RepzoWidgetError","Error","constructor","message","status","name","fromResponse","body","payload","exports","WidgetApiClient","baseUrl","channelAccountId","token","tokenLoaded","reauthorize","onTerminalError","configure","replace","getBaseUrl","getChannelAccountId","getToken","SecureStorage","getItem","TOKEN_KEY","setToken","setItem","clearToken","removeItem","resolveUrl","url","trimmed","trim","isHttpUrl","urlScheme","resolved","startsWith","request","path","options","sentToken","send","headers","authToken","undefined","Authorization","fetch","method","JSON","stringify","error","response","skipReauth","refreshed","ok","json","catch","getConfig","platform","query","encodeURIComponent","getOutboundMessage","getPost","sendPostInteraction","campaignId","kind","value","init","params","visitorToken","resumeToken","user","email","phone","userId","user_id","userHash","user_hash","account","id","signedUpAt","signed_up_at","Date","toISOString","trackingVisitorId","sdkVersion","logout","sendMessage","data","listConversations","listMessages","conversationId","cursor","markConversationRead","rateConversation","ratingId","identify","sendTyping","isTyping","trackEvent","registerPushToken","reportPushOpened","deliveryId","removePushToken","auth"],"sourceRoot":"../../../src","sources":["api/client.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_storage","require","_safeUrl","TERMINAL_CODES","Set","isTerminalErrorCode","code","has","RepzoWidgetError","Error","constructor","message","status","name","fromResponse","body","payload","exports","WidgetApiClient","baseUrl","channelAccountId","token","tokenLoaded","reauthorize","onTerminalError","sendPartBatch","configure","replace","getBaseUrl","getChannelAccountId","getToken","SecureStorage","getItem","TOKEN_KEY","setToken","setItem","clearToken","removeItem","resolveUrl","url","trimmed","trim","isHttpUrl","urlScheme","resolved","startsWith","request","path","options","sentToken","send","headers","authToken","undefined","Authorization","fetch","method","JSON","stringify","error","response","skipReauth","refreshed","ok","json","catch","getConfig","platform","query","encodeURIComponent","getOutboundMessage","askSendPart","getPost","part","own","Promise","resolve","reject","setTimeout","flushSendParts","push","asks","parts","Array","from","map","ask","answer","length","join","value","then","sendPostInteraction","campaignId","kind","init","params","visitorToken","resumeToken","user","email","phone","userId","user_id","userHash","user_hash","account","id","signedUpAt","signed_up_at","Date","toISOString","trackingVisitorId","sdkVersion","logout","sendMessage","data","listConversations","listMessages","conversationId","cursor","markConversationRead","rateConversation","ratingId","identify","sendTyping","isTyping","trackEvent","registerPushToken","reportPushOpened","deliveryId","removePushToken","auth"],"sourceRoot":"../../../src","sources":["api/client.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.audioPlayerOptions = audioPlayerOptions;
7
+ exports.claimVoicePlayback = claimVoicePlayback;
8
+ exports.formatVoiceClock = formatVoiceClock;
9
+ exports.isPlayableAudio = isPlayableAudio;
10
+ exports.voicePlaybackModule = voicePlaybackModule;
11
+ exports.voiceWaveformLevels = voiceWaveformLevels;
12
+ /**
13
+ * Voice notes (and any audio file) play inside the chat when the host app has
14
+ * `expo-audio`; without it they stay a file row that opens in the browser.
15
+ *
16
+ * Resolved once at module load, like the attachment pickers: each `require` is
17
+ * static so Metro can see it, and with `allowOptionalDependencies` (see
18
+ * metro.js) an uninstalled one bundles as a require that throws, which the
19
+ * `try` around it catches.
20
+ */
21
+
22
+ let expoAudio = null;
23
+ try {
24
+ const mod = require('expo-audio');
25
+ if (typeof mod?.useAudioPlayer === 'function' && typeof mod?.useAudioPlayerStatus === 'function') {
26
+ expoAudio = mod;
27
+ }
28
+ } catch {
29
+ expoAudio = null;
30
+ }
31
+
32
+ // expo-audio 1.x (Expo SDK 54+) takes `{ updateInterval }`; 0.x (SDK 53) took
33
+ // the interval itself. Passing the wrong shape would break the player.
34
+ let takesOptionsObject = true;
35
+ try {
36
+ const version = require('expo-audio/package.json')?.version;
37
+ if (typeof version === 'string') takesOptionsObject = Number(version.split('.')[0]) >= 1;
38
+ } catch {
39
+ takesOptionsObject = true;
40
+ }
41
+
42
+ /** How often the playhead moves while a note plays. */
43
+ const UPDATE_INTERVAL_MS = 100;
44
+
45
+ /** The installed expo-audio module, or null when the app doesn't have it. */
46
+ function voicePlaybackModule() {
47
+ return expoAudio;
48
+ }
49
+
50
+ /** The second argument to `useAudioPlayer` for the installed expo-audio. */
51
+ function audioPlayerOptions() {
52
+ return takesOptionsObject ? {
53
+ updateInterval: UPDATE_INTERVAL_MS
54
+ } : UPDATE_INTERVAL_MS;
55
+ }
56
+
57
+ /** Audio the chat can play in place: an `audio/*` attachment with a web address. */
58
+ function isPlayableAudio(contentType, url) {
59
+ return !!expoAudio && (contentType ?? '').toLowerCase().startsWith('audio/') && /^https?:\/\//i.test(url ?? '');
60
+ }
61
+
62
+ // ─── One note at a time ─────────────────────────────────────────────────────
63
+ // Each bubble owns its own player, so starting a second note would otherwise
64
+ // talk over the first.
65
+
66
+ let playing = null;
67
+
68
+ /**
69
+ * Called as a note starts: pauses whichever note was playing and returns a
70
+ * release for this one's claim (call it when the note goes away).
71
+ */
72
+ function claimVoicePlayback(pause) {
73
+ const claim = {
74
+ pause
75
+ };
76
+ const previous = playing;
77
+ playing = claim;
78
+ if (previous) {
79
+ try {
80
+ previous.pause();
81
+ } catch {
82
+ // Its player was released with its bubble: nothing is playing.
83
+ }
84
+ }
85
+ return () => {
86
+ if (playing === claim) playing = null;
87
+ };
88
+ }
89
+
90
+ // ─── Waveform ───────────────────────────────────────────────────────────────
91
+
92
+ /**
93
+ * Bar heights (0.15–1) for a note's waveform. Workstation doesn't send the
94
+ * recorded loudness to visitors, so the pattern is made up — seeded from the
95
+ * attachment, so the same note always draws the same bars.
96
+ */
97
+ function voiceWaveformLevels(seed, count) {
98
+ let h = 2166136261;
99
+ for (let i = 0; i < seed.length; i += 1) {
100
+ h ^= seed.charCodeAt(i);
101
+ h = Math.imul(h, 16777619);
102
+ }
103
+ const levels = [];
104
+ for (let i = 0; i < count; i += 1) {
105
+ h ^= h << 13;
106
+ h ^= h >>> 17;
107
+ h ^= h << 5;
108
+ const n = (h >>> 0) % 1000 / 1000;
109
+ levels.push(0.15 + Math.pow(n, 0.85) * 0.85);
110
+ }
111
+ return levels;
112
+ }
113
+
114
+ /** `m:ss` for a playback position or length. */
115
+ function formatVoiceClock(seconds) {
116
+ const s = Math.max(0, Math.floor(Number.isFinite(seconds) ? seconds : 0));
117
+ return `${Math.floor(s / 60)}:${(s % 60).toString().padStart(2, '0')}`;
118
+ }
119
+ //# sourceMappingURL=voice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["expoAudio","mod","require","useAudioPlayer","useAudioPlayerStatus","takesOptionsObject","version","Number","split","UPDATE_INTERVAL_MS","voicePlaybackModule","audioPlayerOptions","updateInterval","isPlayableAudio","contentType","url","toLowerCase","startsWith","test","playing","claimVoicePlayback","pause","claim","previous","voiceWaveformLevels","seed","count","h","i","length","charCodeAt","Math","imul","levels","n","push","pow","formatVoiceClock","seconds","s","max","floor","isFinite","toString","padStart"],"sourceRoot":"../../../src","sources":["audio/voice.ts"],"mappings":"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","ignoreList":[]}
@@ -63,6 +63,12 @@ const DEFAULT_LABELS = exports.DEFAULT_LABELS = {
63
63
  attachmentTooMany: 'You can attach up to {count} files',
64
64
  attachmentsTooLargeTogether: 'Attachments are too large to send together — send some in another message',
65
65
  attachmentFailed: "Couldn't attach that file",
66
+ // A file in a message; tapping opens it. `{name}` is the file name.
67
+ openAttachment: 'Open {name}',
68
+ // Voice notes played in the chat (with expo-audio).
69
+ voicePlay: 'Play voice message',
70
+ voicePause: 'Pause voice message',
71
+ voiceSpeed: 'Playback speed',
66
72
  // Full-screen image viewer.
67
73
  imageLoadFailed: "Couldn't load this image",
68
74
  openImageExternally: 'Open image',
@@ -1 +1 @@
1
- {"version":3,"names":["_locales","require","createTranslator","config","locale","defaultLocale","active","baseLanguage","fallbackLocale","key","fallback","translations","BUNDLED_TRANSLATIONS","WELCOME_TEXT_KEYS","localizeWelcomeText","translate","localized","forEach","DEFAULT_LABELS","exports","back","loading","loadEarlier","emptyConversation","messagePlaceholder","attachFile","attachPhotoLibrary","attachTakePhoto","attachChooseFile","removeAttachment","attachmentTooLarge","attachmentTooMany","attachmentsTooLargeTogether","attachmentFailed","imageLoadFailed","openImageExternally","cameraPermissionDenied","cancel","failedToSend","thinking","messages","noMessages","historyHidden","startBelow","preChatTitle","preChatSubtitle","preChatSkip","preChatSubmit","viewPreviousConversations","homeRecentTitle","homeViewAllCount","homeNoConversations","homeStatusOnline","homeStatusAway","unreadBadge","team","home","close","retry","connectionError","connecting","chatUnavailable","identityVerificationError","widgetCrashed","timeJustNow","timeMinutes","timeHours","timeDays","timeMonths","timeYears","today","yesterday","conversationUpdated","messageDeleted","messageSent","messageSeen","waitingForTeammate","joinedConversation","ratingQuestion","ratingReasonPrompt","ratingCommentPlaceholder","ratingSubmit","ratingDone","ratingThanks","ratingLocked","ratingExpired","ratingFailed","rating1","rating2","rating3","rating4","rating5","procedureSend","procedureSent","procedureShareDetails","procedureDetailsSent","procedureHide","procedureFieldCount","procedureFieldCountOne","procedureTitle","procedureEmailPlaceholder","procedurePhonePlaceholder","fieldRequired","invalidEmail","working","outboundTitle","outboundCta","dismiss","notificationReplyFrom","notificationNewReply","notificationAttachment","notificationOpenHint","postFrom","postNewMessage","postOpenHint","postClose","postMinimize","postReplyPlaceholder","postSend","postSent","postReplyFailed","postReactions","postThanks","postConversation","postContinueChat","blockService","blockProduct","blockChooseTime","blockProfessional","blockPriceOffer","blockSubtotal","blockDiscount","blockTax","blockShipping","blockTotal","blockMinutes","blockSave","blockAnyAvailable","blockWithProvider","blockBookTime","blockValidUntil","launcherOpen","launcherClose","formatLabel","template","values","replace","match","String","buildLabels","labels","Object","keys"],"sourceRoot":"../../src","sources":["i18n.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_locales","require","createTranslator","config","locale","defaultLocale","active","baseLanguage","fallbackLocale","key","fallback","translations","BUNDLED_TRANSLATIONS","WELCOME_TEXT_KEYS","localizeWelcomeText","translate","localized","forEach","DEFAULT_LABELS","exports","back","loading","loadEarlier","emptyConversation","messagePlaceholder","attachFile","attachPhotoLibrary","attachTakePhoto","attachChooseFile","removeAttachment","attachmentTooLarge","attachmentTooMany","attachmentsTooLargeTogether","attachmentFailed","openAttachment","voicePlay","voicePause","voiceSpeed","imageLoadFailed","openImageExternally","cameraPermissionDenied","cancel","failedToSend","thinking","messages","noMessages","historyHidden","startBelow","preChatTitle","preChatSubtitle","preChatSkip","preChatSubmit","viewPreviousConversations","homeRecentTitle","homeViewAllCount","homeNoConversations","homeStatusOnline","homeStatusAway","unreadBadge","team","home","close","retry","connectionError","connecting","chatUnavailable","identityVerificationError","widgetCrashed","timeJustNow","timeMinutes","timeHours","timeDays","timeMonths","timeYears","today","yesterday","conversationUpdated","messageDeleted","messageSent","messageSeen","waitingForTeammate","joinedConversation","ratingQuestion","ratingReasonPrompt","ratingCommentPlaceholder","ratingSubmit","ratingDone","ratingThanks","ratingLocked","ratingExpired","ratingFailed","rating1","rating2","rating3","rating4","rating5","procedureSend","procedureSent","procedureShareDetails","procedureDetailsSent","procedureHide","procedureFieldCount","procedureFieldCountOne","procedureTitle","procedureEmailPlaceholder","procedurePhonePlaceholder","fieldRequired","invalidEmail","working","outboundTitle","outboundCta","dismiss","notificationReplyFrom","notificationNewReply","notificationAttachment","notificationOpenHint","postFrom","postNewMessage","postOpenHint","postClose","postMinimize","postReplyPlaceholder","postSend","postSent","postReplyFailed","postReactions","postThanks","postConversation","postContinueChat","blockService","blockProduct","blockChooseTime","blockProfessional","blockPriceOffer","blockSubtotal","blockDiscount","blockTax","blockShipping","blockTotal","blockMinutes","blockSave","blockAnyAvailable","blockWithProvider","blockBookTime","blockValidUntil","launcherOpen","launcherClose","formatLabel","template","values","replace","match","String","buildLabels","labels","Object","keys"],"sourceRoot":"../../src","sources":["i18n.ts"],"mappings":"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","ignoreList":[]}
@@ -32,6 +32,10 @@ const ar = {
32
32
  attachmentTooMany: 'يمكنك إرفاق {count} ملفات كحد أقصى',
33
33
  attachmentsTooLargeTogether: 'المرفقات كبيرة جدًا لإرسالها معًا — أرسل بعضها في رسالة أخرى',
34
34
  attachmentFailed: 'تعذر إرفاق هذا الملف',
35
+ openAttachment: 'فتح {name}',
36
+ voicePlay: 'تشغيل الرسالة الصوتية',
37
+ voicePause: 'إيقاف الرسالة الصوتية مؤقتًا',
38
+ voiceSpeed: 'سرعة التشغيل',
35
39
  imageLoadFailed: 'تعذر تحميل هذه الصورة',
36
40
  openImageExternally: 'فتح الصورة',
37
41
  cameraPermissionDenied: 'اسمح بالوصول إلى الكاميرا من الإعدادات لالتقاط صورة',
@@ -1 +1 @@
1
- {"version":3,"names":["ar","back","loading","loadEarlier","emptyConversation","messagePlaceholder","attachFile","attachPhotoLibrary","attachTakePhoto","attachChooseFile","removeAttachment","attachmentTooLarge","attachmentTooMany","attachmentsTooLargeTogether","attachmentFailed","imageLoadFailed","openImageExternally","cameraPermissionDenied","cancel","failedToSend","thinking","messages","noMessages","historyHidden","startBelow","preChatTitle","preChatSubtitle","preChatSkip","preChatSubmit","viewPreviousConversations","homeRecentTitle","homeViewAllCount","homeNoConversations","homeStatusOnline","homeStatusAway","unreadBadge","team","home","close","retry","connectionError","connecting","chatUnavailable","identityVerificationError","widgetCrashed","timeJustNow","timeMinutes","timeHours","timeDays","timeMonths","timeYears","today","yesterday","conversationUpdated","messageDeleted","messageSent","messageSeen","waitingForTeammate","joinedConversation","ratingQuestion","ratingReasonPrompt","ratingCommentPlaceholder","ratingSubmit","ratingDone","ratingThanks","ratingLocked","ratingExpired","ratingFailed","rating1","rating2","rating3","rating4","rating5","procedureSend","procedureSent","procedureShareDetails","procedureDetailsSent","procedureHide","procedureFieldCount","procedureFieldCountOne","procedureTitle","fieldRequired","invalidEmail","working","outboundTitle","outboundCta","dismiss","notificationReplyFrom","notificationNewReply","notificationAttachment","notificationOpenHint","postFrom","postNewMessage","postOpenHint","postClose","postMinimize","postReplyPlaceholder","postSend","postSent","postReplyFailed","postReactions","postThanks","postConversation","postContinueChat","blockService","blockProduct","blockChooseTime","blockProfessional","blockPriceOffer","blockSubtotal","blockDiscount","blockTax","blockShipping","blockTotal","blockMinutes","blockSave","blockAnyAvailable","blockWithProvider","blockBookTime","blockValidUntil","launcherOpen","launcherClose","BUNDLED_TRANSLATIONS","exports","baseLanguage","locale","split","toLowerCase"],"sourceRoot":"../../src","sources":["locales.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["ar","back","loading","loadEarlier","emptyConversation","messagePlaceholder","attachFile","attachPhotoLibrary","attachTakePhoto","attachChooseFile","removeAttachment","attachmentTooLarge","attachmentTooMany","attachmentsTooLargeTogether","attachmentFailed","openAttachment","voicePlay","voicePause","voiceSpeed","imageLoadFailed","openImageExternally","cameraPermissionDenied","cancel","failedToSend","thinking","messages","noMessages","historyHidden","startBelow","preChatTitle","preChatSubtitle","preChatSkip","preChatSubmit","viewPreviousConversations","homeRecentTitle","homeViewAllCount","homeNoConversations","homeStatusOnline","homeStatusAway","unreadBadge","team","home","close","retry","connectionError","connecting","chatUnavailable","identityVerificationError","widgetCrashed","timeJustNow","timeMinutes","timeHours","timeDays","timeMonths","timeYears","today","yesterday","conversationUpdated","messageDeleted","messageSent","messageSeen","waitingForTeammate","joinedConversation","ratingQuestion","ratingReasonPrompt","ratingCommentPlaceholder","ratingSubmit","ratingDone","ratingThanks","ratingLocked","ratingExpired","ratingFailed","rating1","rating2","rating3","rating4","rating5","procedureSend","procedureSent","procedureShareDetails","procedureDetailsSent","procedureHide","procedureFieldCount","procedureFieldCountOne","procedureTitle","fieldRequired","invalidEmail","working","outboundTitle","outboundCta","dismiss","notificationReplyFrom","notificationNewReply","notificationAttachment","notificationOpenHint","postFrom","postNewMessage","postOpenHint","postClose","postMinimize","postReplyPlaceholder","postSend","postSent","postReplyFailed","postReactions","postThanks","postConversation","postContinueChat","blockService","blockProduct","blockChooseTime","blockProfessional","blockPriceOffer","blockSubtotal","blockDiscount","blockTax","blockShipping","blockTotal","blockMinutes","blockSave","blockAnyAvailable","blockWithProvider","blockBookTime","blockValidUntil","launcherOpen","launcherClose","BUNDLED_TRANSLATIONS","exports","baseLanguage","locale","split","toLowerCase"],"sourceRoot":"../../src","sources":["locales.ts"],"mappings":"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","ignoreList":[]}
@@ -3,6 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.shallowEqual = shallowEqual;
7
+ exports.useWidgetSelector = useWidgetSelector;
6
8
  exports.useWidgetState = useWidgetState;
7
9
  exports.useWidgetStore = useWidgetStore;
8
10
  var _react = require("react");
@@ -20,4 +22,33 @@ function useWidgetState() {
20
22
  function useWidgetStore() {
21
23
  return _controller.controller.store;
22
24
  }
25
+
26
+ /**
27
+ * A slice of the state that re-renders only when the slice changes (by
28
+ * `isEqual`) — for UI that lives on the host's own screens, like the launcher,
29
+ * which shouldn't redraw on every message or typing event. Internal.
30
+ */
31
+ function useWidgetSelector(select, isEqual) {
32
+ const store = _controller.controller.store;
33
+ const last = (0, _react.useRef)(null);
34
+ const getSnapshot = () => {
35
+ const state = store.getState();
36
+ const previous = last.current;
37
+ if (previous && previous.state === state) return previous.value;
38
+ const value = select(state);
39
+ // Same slice from a newer state: keep the old value so React bails out.
40
+ last.current = {
41
+ state,
42
+ value: previous && isEqual(previous.value, value) ? previous.value : value
43
+ };
44
+ return last.current.value;
45
+ };
46
+ return (0, _react.useSyncExternalStore)(store.subscribe, getSnapshot, getSnapshot);
47
+ }
48
+
49
+ /** Same keys, same values (by identity). */
50
+ function shallowEqual(previous, next) {
51
+ const keys = Object.keys(previous);
52
+ return keys.length === Object.keys(next).length && keys.every(key => Object.is(previous[key], next[key]));
53
+ }
23
54
  //# sourceMappingURL=use-widget-state.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_controller","useWidgetState","store","controller","useSyncExternalStore","subscribe","getState","useWidgetStore"],"sourceRoot":"../../../src","sources":["state/use-widget-state.ts"],"mappings":";;;;;;;AAMA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AARA;AACA;AACA;AACA;AACA;;AAQO,SAASE,cAAcA,CAAA,EAAgB;EAC5C,MAAMC,KAAK,GAAGC,sBAAU,CAACD,KAAK;EAC9B,OAAO,IAAAE,2BAAoB,EAACF,KAAK,CAACG,SAAS,EAAEH,KAAK,CAACI,QAAQ,EAAEJ,KAAK,CAACI,QAAQ,CAAC;AAC9E;AAEO,SAASC,cAAcA,CAAA,EAAgB;EAC5C,OAAOJ,sBAAU,CAACD,KAAK;AACzB","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_controller","useWidgetState","store","controller","useSyncExternalStore","subscribe","getState","useWidgetStore","useWidgetSelector","select","isEqual","last","useRef","getSnapshot","state","previous","current","value","shallowEqual","next","keys","Object","length","every","key","is"],"sourceRoot":"../../../src","sources":["state/use-widget-state.ts"],"mappings":";;;;;;;;;AAMA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AARA;AACA;AACA;AACA;AACA;;AAQO,SAASE,cAAcA,CAAA,EAAgB;EAC5C,MAAMC,KAAK,GAAGC,sBAAU,CAACD,KAAK;EAC9B,OAAO,IAAAE,2BAAoB,EAACF,KAAK,CAACG,SAAS,EAAEH,KAAK,CAACI,QAAQ,EAAEJ,KAAK,CAACI,QAAQ,CAAC;AAC9E;AAEO,SAASC,cAAcA,CAAA,EAAgB;EAC5C,OAAOJ,sBAAU,CAACD,KAAK;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASM,iBAAiBA,CAC/BC,MAAiC,EACjCC,OAA0C,EACvC;EACH,MAAMR,KAAK,GAAGC,sBAAU,CAACD,KAAK;EAC9B,MAAMS,IAAI,GAAG,IAAAC,aAAM,EAA0C,IAAI,CAAC;EAClE,MAAMC,WAAW,GAAGA,CAAA,KAAM;IACxB,MAAMC,KAAK,GAAGZ,KAAK,CAACI,QAAQ,CAAC,CAAC;IAC9B,MAAMS,QAAQ,GAAGJ,IAAI,CAACK,OAAO;IAC7B,IAAID,QAAQ,IAAIA,QAAQ,CAACD,KAAK,KAAKA,KAAK,EAAE,OAAOC,QAAQ,CAACE,KAAK;IAC/D,MAAMA,KAAK,GAAGR,MAAM,CAACK,KAAK,CAAC;IAC3B;IACAH,IAAI,CAACK,OAAO,GAAG;MAAEF,KAAK;MAAEG,KAAK,EAAEF,QAAQ,IAAIL,OAAO,CAACK,QAAQ,CAACE,KAAK,EAAEA,KAAK,CAAC,GAAGF,QAAQ,CAACE,KAAK,GAAGA;IAAM,CAAC;IACpG,OAAON,IAAI,CAACK,OAAO,CAACC,KAAK;EAC3B,CAAC;EACD,OAAO,IAAAb,2BAAoB,EAACF,KAAK,CAACG,SAAS,EAAEQ,WAAW,EAAEA,WAAW,CAAC;AACxE;;AAEA;AACO,SAASK,YAAYA,CAAoCH,QAAW,EAAEI,IAAO,EAAW;EAC7F,MAAMC,IAAI,GAAGC,MAAM,CAACD,IAAI,CAACL,QAAQ,CAAC;EAClC,OAAOK,IAAI,CAACE,MAAM,KAAKD,MAAM,CAACD,IAAI,CAACD,IAAI,CAAC,CAACG,MAAM,IAAIF,IAAI,CAACG,KAAK,CAAEC,GAAG,IAAKH,MAAM,CAACI,EAAE,CAACV,QAAQ,CAACS,GAAG,CAAC,EAAEL,IAAI,CAACK,GAAG,CAAC,CAAC,CAAC;AAC7G","ignoreList":[]}
@@ -25,7 +25,7 @@ var _safeUrl = require("../ui/utils/safe-url.js");
25
25
  */
26
26
 
27
27
  /** Sent on every init; must match `package.json` (tests/version.test.js checks). */
28
- const SDK_VERSION = '@repzo/widget-react-native@1.2.1';
28
+ const SDK_VERSION = '@repzo/widget-react-native@1.2.2';
29
29
 
30
30
  /** The platform this session reports — mobile sessions get the Mobile SDKs overrides. */
31
31
  function sessionPlatform() {
@@ -46,6 +46,13 @@ const LOGOUT_REQUEST_TIMEOUT_MS = 5_000;
46
46
  const STREAM_REAUTH_MIN_INTERVAL_MS = 30_000;
47
47
  /** Live replies in the open thread advance the server read cursor, batched. */
48
48
  const MARK_READ_DEBOUNCE_MS = 1_000;
49
+ /**
50
+ * Back from the background sooner than this, availability and the post are
51
+ * still current enough to skip re-asking. Reps hop to maps or the camera and
52
+ * back all day; the list and the open thread still catch up every time, since
53
+ * the stream was closed meanwhile.
54
+ */
55
+ const FOREGROUND_REFRESH_AFTER_MS = 5 * 60_000;
49
56
  /** Live events held back while a draft's first send is creating its thread. */
50
57
  const DRAFT_EVENT_BUFFER_LIMIT = 50;
51
58
  /** How long a post stays up after a reaction, thanking them, before it goes. */
@@ -165,6 +172,9 @@ class WidgetStore {
165
172
  userKeyLoaded = false;
166
173
  pendingConversationId = null;
167
174
  appStateSubscription = null;
175
+
176
+ /** When the app last went to the background (0: hasn't this session). */
177
+ backgroundedAt = 0;
168
178
  lastTypingPingAt = 0;
169
179
  visitorTypingActive = false;
170
180
  seenMessageIds = [];
@@ -842,10 +852,14 @@ class WidgetStore {
842
852
  }
843
853
  watchAppState() {
844
854
  if (this.appStateSubscription) return;
855
+ // Booted while already in the background (a push woke the app): coming
856
+ // to the foreground is a return from the background too.
857
+ if (_reactNative.AppState.currentState === 'background') this.backgroundedAt = Date.now();
845
858
  this.appStateSubscription = _reactNative.AppState.addEventListener('change', status => {
846
859
  if (status === 'active') {
847
860
  void this.resumeFromBackground();
848
861
  } else if (status === 'background') {
862
+ this.backgroundedAt = Date.now();
849
863
  this.realtime.close();
850
864
  }
851
865
  });
@@ -858,6 +872,12 @@ class WidgetStore {
858
872
  if (this.state.error) await this.retry();
859
873
  return;
860
874
  }
875
+ // Only the background closes the stream. Back from merely inactive (a
876
+ // system sheet, Face ID, the notification shade) it never stopped, so
877
+ // there is nothing to catch up on.
878
+ if (!this.backgroundedAt) return;
879
+ const awayMs = Date.now() - this.backgroundedAt;
880
+ this.backgroundedAt = 0;
861
881
  const epoch = this.epoch;
862
882
  const token = await this.client.getToken();
863
883
  if (!token || this.isStale(epoch)) return;
@@ -865,6 +885,7 @@ class WidgetStore {
865
885
  // The stream had a gap: refresh the list so unread/snippets are correct,
866
886
  // and the thread on screen so replies sent meanwhile show up.
867
887
  await Promise.all([this.refreshConversations(), this.refreshOpenThread()]);
888
+ if (awayMs < FOREGROUND_REFRESH_AFTER_MS) return;
868
889
  await this.refreshConfig();
869
890
  // A post may have gone live (or ended) while the app was away.
870
891
  if (!this.isStale(epoch)) this.loadPost();