@repzo/widget-react-native 1.2.1 → 1.3.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 (161) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/README.md +40 -3
  3. package/android/build.gradle +22 -0
  4. package/android/src/main/java/expo/modules/repzowidget/RepzoVoicePlayer.kt +222 -0
  5. package/android/src/main/java/expo/modules/repzowidget/RepzoWidgetAudioModule.kt +68 -0
  6. package/expo-module.config.json +9 -0
  7. package/ios/RepzoVoicePlayer.swift +175 -0
  8. package/ios/RepzoWidgetAudio.podspec +26 -0
  9. package/ios/RepzoWidgetAudioModule.swift +65 -0
  10. package/lib/commonjs/api/client.js +47 -2
  11. package/lib/commonjs/api/client.js.map +1 -1
  12. package/lib/commonjs/audio/native-player.js +97 -0
  13. package/lib/commonjs/audio/native-player.js.map +1 -0
  14. package/lib/commonjs/audio/voice.js +146 -0
  15. package/lib/commonjs/audio/voice.js.map +1 -0
  16. package/lib/commonjs/i18n.js +6 -0
  17. package/lib/commonjs/i18n.js.map +1 -1
  18. package/lib/commonjs/locales.js +4 -0
  19. package/lib/commonjs/locales.js.map +1 -1
  20. package/lib/commonjs/state/use-widget-state.js +31 -0
  21. package/lib/commonjs/state/use-widget-state.js.map +1 -1
  22. package/lib/commonjs/state/widget-store.js +44 -1
  23. package/lib/commonjs/state/widget-store.js.map +1 -1
  24. package/lib/commonjs/ui/WidgetProvider.js +7 -3
  25. package/lib/commonjs/ui/WidgetProvider.js.map +1 -1
  26. package/lib/commonjs/ui/components/FileCard.js +134 -0
  27. package/lib/commonjs/ui/components/FileCard.js.map +1 -0
  28. package/lib/commonjs/ui/components/ImageViewer.js +17 -35
  29. package/lib/commonjs/ui/components/ImageViewer.js.map +1 -1
  30. package/lib/commonjs/ui/components/Launcher.js +15 -1
  31. package/lib/commonjs/ui/components/Launcher.js.map +1 -1
  32. package/lib/commonjs/ui/components/MessagesSkeleton.js +126 -0
  33. package/lib/commonjs/ui/components/MessagesSkeleton.js.map +1 -0
  34. package/lib/commonjs/ui/components/VoiceNote.js +353 -0
  35. package/lib/commonjs/ui/components/VoiceNote.js.map +1 -0
  36. package/lib/commonjs/ui/components/ZoomableImage.js +299 -0
  37. package/lib/commonjs/ui/components/ZoomableImage.js.map +1 -0
  38. package/lib/commonjs/ui/components/icons.js +57 -0
  39. package/lib/commonjs/ui/components/icons.js.map +1 -1
  40. package/lib/commonjs/ui/screens/chat/ChatView.js +39 -18
  41. package/lib/commonjs/ui/screens/chat/ChatView.js.map +1 -1
  42. package/lib/commonjs/ui/screens/chat/ChatView.styles.js +5 -16
  43. package/lib/commonjs/ui/screens/chat/ChatView.styles.js.map +1 -1
  44. package/lib/module/api/client.js +48 -2
  45. package/lib/module/api/client.js.map +1 -1
  46. package/lib/module/audio/native-player.js +93 -0
  47. package/lib/module/audio/native-player.js.map +1 -0
  48. package/lib/module/audio/voice.js +136 -0
  49. package/lib/module/audio/voice.js.map +1 -0
  50. package/lib/module/i18n.js +6 -0
  51. package/lib/module/i18n.js.map +1 -1
  52. package/lib/module/locales.js +4 -0
  53. package/lib/module/locales.js.map +1 -1
  54. package/lib/module/state/use-widget-state.js +30 -1
  55. package/lib/module/state/use-widget-state.js.map +1 -1
  56. package/lib/module/state/widget-store.js +44 -1
  57. package/lib/module/state/widget-store.js.map +1 -1
  58. package/lib/module/ui/WidgetProvider.js +7 -3
  59. package/lib/module/ui/WidgetProvider.js.map +1 -1
  60. package/lib/module/ui/components/FileCard.js +130 -0
  61. package/lib/module/ui/components/FileCard.js.map +1 -0
  62. package/lib/module/ui/components/ImageViewer.js +18 -36
  63. package/lib/module/ui/components/ImageViewer.js.map +1 -1
  64. package/lib/module/ui/components/Launcher.js +16 -2
  65. package/lib/module/ui/components/Launcher.js.map +1 -1
  66. package/lib/module/ui/components/MessagesSkeleton.js +124 -0
  67. package/lib/module/ui/components/MessagesSkeleton.js.map +1 -0
  68. package/lib/module/ui/components/VoiceNote.js +349 -0
  69. package/lib/module/ui/components/VoiceNote.js.map +1 -0
  70. package/lib/module/ui/components/ZoomableImage.js +291 -0
  71. package/lib/module/ui/components/ZoomableImage.js.map +1 -0
  72. package/lib/module/ui/components/icons.js +55 -0
  73. package/lib/module/ui/components/icons.js.map +1 -1
  74. package/lib/module/ui/screens/chat/ChatView.js +39 -18
  75. package/lib/module/ui/screens/chat/ChatView.js.map +1 -1
  76. package/lib/module/ui/screens/chat/ChatView.styles.js +5 -16
  77. package/lib/module/ui/screens/chat/ChatView.styles.js.map +1 -1
  78. package/lib/typescript/commonjs/api/client.d.ts +12 -0
  79. package/lib/typescript/commonjs/api/client.d.ts.map +1 -1
  80. package/lib/typescript/commonjs/audio/native-player.d.ts +36 -0
  81. package/lib/typescript/commonjs/audio/native-player.d.ts.map +1 -0
  82. package/lib/typescript/commonjs/audio/voice.d.ts +42 -0
  83. package/lib/typescript/commonjs/audio/voice.d.ts.map +1 -0
  84. package/lib/typescript/commonjs/i18n.d.ts +4 -0
  85. package/lib/typescript/commonjs/i18n.d.ts.map +1 -1
  86. package/lib/typescript/commonjs/locales.d.ts.map +1 -1
  87. package/lib/typescript/commonjs/state/use-widget-state.d.ts +8 -0
  88. package/lib/typescript/commonjs/state/use-widget-state.d.ts.map +1 -1
  89. package/lib/typescript/commonjs/state/widget-store.d.ts +13 -0
  90. package/lib/typescript/commonjs/state/widget-store.d.ts.map +1 -1
  91. package/lib/typescript/commonjs/ui/WidgetProvider.d.ts.map +1 -1
  92. package/lib/typescript/commonjs/ui/components/FileCard.d.ts +21 -0
  93. package/lib/typescript/commonjs/ui/components/FileCard.d.ts.map +1 -0
  94. package/lib/typescript/commonjs/ui/components/ImageViewer.d.ts +2 -2
  95. package/lib/typescript/commonjs/ui/components/ImageViewer.d.ts.map +1 -1
  96. package/lib/typescript/commonjs/ui/components/Launcher.d.ts.map +1 -1
  97. package/lib/typescript/commonjs/ui/components/MessagesSkeleton.d.ts +10 -0
  98. package/lib/typescript/commonjs/ui/components/MessagesSkeleton.d.ts.map +1 -0
  99. package/lib/typescript/commonjs/ui/components/VoiceNote.d.ts +32 -0
  100. package/lib/typescript/commonjs/ui/components/VoiceNote.d.ts.map +1 -0
  101. package/lib/typescript/commonjs/ui/components/ZoomableImage.d.ts +45 -0
  102. package/lib/typescript/commonjs/ui/components/ZoomableImage.d.ts.map +1 -0
  103. package/lib/typescript/commonjs/ui/components/icons.d.ts +4 -0
  104. package/lib/typescript/commonjs/ui/components/icons.d.ts.map +1 -1
  105. package/lib/typescript/commonjs/ui/screens/chat/ChatView.d.ts.map +1 -1
  106. package/lib/typescript/commonjs/ui/screens/chat/ChatView.styles.d.ts +4 -16
  107. package/lib/typescript/commonjs/ui/screens/chat/ChatView.styles.d.ts.map +1 -1
  108. package/lib/typescript/commonjs/ui/screens/chat/ChatView.types.d.ts +4 -0
  109. package/lib/typescript/commonjs/ui/screens/chat/ChatView.types.d.ts.map +1 -1
  110. package/lib/typescript/module/api/client.d.ts +12 -0
  111. package/lib/typescript/module/api/client.d.ts.map +1 -1
  112. package/lib/typescript/module/audio/native-player.d.ts +36 -0
  113. package/lib/typescript/module/audio/native-player.d.ts.map +1 -0
  114. package/lib/typescript/module/audio/voice.d.ts +42 -0
  115. package/lib/typescript/module/audio/voice.d.ts.map +1 -0
  116. package/lib/typescript/module/i18n.d.ts +4 -0
  117. package/lib/typescript/module/i18n.d.ts.map +1 -1
  118. package/lib/typescript/module/locales.d.ts.map +1 -1
  119. package/lib/typescript/module/state/use-widget-state.d.ts +8 -0
  120. package/lib/typescript/module/state/use-widget-state.d.ts.map +1 -1
  121. package/lib/typescript/module/state/widget-store.d.ts +13 -0
  122. package/lib/typescript/module/state/widget-store.d.ts.map +1 -1
  123. package/lib/typescript/module/ui/WidgetProvider.d.ts.map +1 -1
  124. package/lib/typescript/module/ui/components/FileCard.d.ts +21 -0
  125. package/lib/typescript/module/ui/components/FileCard.d.ts.map +1 -0
  126. package/lib/typescript/module/ui/components/ImageViewer.d.ts +2 -2
  127. package/lib/typescript/module/ui/components/ImageViewer.d.ts.map +1 -1
  128. package/lib/typescript/module/ui/components/Launcher.d.ts.map +1 -1
  129. package/lib/typescript/module/ui/components/MessagesSkeleton.d.ts +10 -0
  130. package/lib/typescript/module/ui/components/MessagesSkeleton.d.ts.map +1 -0
  131. package/lib/typescript/module/ui/components/VoiceNote.d.ts +32 -0
  132. package/lib/typescript/module/ui/components/VoiceNote.d.ts.map +1 -0
  133. package/lib/typescript/module/ui/components/ZoomableImage.d.ts +45 -0
  134. package/lib/typescript/module/ui/components/ZoomableImage.d.ts.map +1 -0
  135. package/lib/typescript/module/ui/components/icons.d.ts +4 -0
  136. package/lib/typescript/module/ui/components/icons.d.ts.map +1 -1
  137. package/lib/typescript/module/ui/screens/chat/ChatView.d.ts.map +1 -1
  138. package/lib/typescript/module/ui/screens/chat/ChatView.styles.d.ts +4 -16
  139. package/lib/typescript/module/ui/screens/chat/ChatView.styles.d.ts.map +1 -1
  140. package/lib/typescript/module/ui/screens/chat/ChatView.types.d.ts +4 -0
  141. package/lib/typescript/module/ui/screens/chat/ChatView.types.d.ts.map +1 -1
  142. package/package.json +14 -3
  143. package/react-native.config.js +12 -0
  144. package/src/api/client.ts +56 -2
  145. package/src/audio/native-player.ts +106 -0
  146. package/src/audio/voice.ts +127 -0
  147. package/src/i18n.ts +6 -0
  148. package/src/locales.ts +4 -0
  149. package/src/state/use-widget-state.ts +30 -1
  150. package/src/state/widget-store.ts +45 -1
  151. package/src/ui/WidgetProvider.tsx +7 -3
  152. package/src/ui/components/FileCard.tsx +111 -0
  153. package/src/ui/components/ImageViewer.tsx +11 -30
  154. package/src/ui/components/Launcher.tsx +7 -2
  155. package/src/ui/components/MessagesSkeleton.tsx +92 -0
  156. package/src/ui/components/VoiceNote.tsx +355 -0
  157. package/src/ui/components/ZoomableImage.tsx +250 -0
  158. package/src/ui/components/icons.tsx +33 -0
  159. package/src/ui/screens/chat/ChatView.styles.ts +5 -16
  160. package/src/ui/screens/chat/ChatView.tsx +43 -16
  161. package/src/ui/screens/chat/ChatView.types.ts +4 -0
@@ -34,6 +34,9 @@ export class RepzoWidgetError extends Error {
34
34
  return new RepzoWidgetError(message || `HTTP ${status}`, status, code);
35
35
  }
36
36
  }
37
+
38
+ /** A Send message part asked for on its own, which may share one request with others. */
39
+
37
40
  export class WidgetApiClient {
38
41
  baseUrl = '';
39
42
  channelAccountId = '';
@@ -48,6 +51,9 @@ export class WidgetApiClient {
48
51
 
49
52
  /** Set by the store: a 403 with a terminal `code` came back from any endpoint. */
50
53
  onTerminalError = null;
54
+
55
+ /** Send parts asked for in this tick — see askSendPart. */
56
+ sendPartBatch = null;
51
57
  configure(baseUrl, channelAccountId) {
52
58
  this.baseUrl = baseUrl.replace(/\/$/, '');
53
59
  this.channelAccountId = channelAccountId;
@@ -136,7 +142,7 @@ export class WidgetApiClient {
136
142
  return this.request(`/api/widget/config/${encodeURIComponent(this.channelAccountId)}${query}`);
137
143
  }
138
144
  getOutboundMessage() {
139
- return this.request(`/api/widget/outbound/${encodeURIComponent(this.channelAccountId)}`);
145
+ return this.askSendPart('outbound', () => this.request(`/api/widget/outbound/${encodeURIComponent(this.channelAccountId)}`));
140
146
  }
141
147
 
142
148
  /**
@@ -144,7 +150,47 @@ export class WidgetApiClient {
144
150
  * `recheckInMs`: ask again after this long — the shown one stops then.
145
151
  */
146
152
  getPost() {
147
- return this.request('/api/widget/send/post?platform=mobile');
153
+ return this.askSendPart('post', () => this.request('/api/widget/send/post?platform=mobile'));
154
+ }
155
+
156
+ /**
157
+ * The post and the launcher's chat message are both asked for right after a
158
+ * session starts: asks made in the same tick go out as one request (each
159
+ * part answers the way its own endpoint does). A lone ask, a Workstation
160
+ * deployment that doesn't know a part yet (it leaves it out — the
161
+ * `outbound` part is newer than the combined endpoint), or a failed combined
162
+ * request falls back to each part's own endpoint, as before.
163
+ */
164
+ askSendPart(part, own) {
165
+ return new Promise((resolve, reject) => {
166
+ if (!this.sendPartBatch) {
167
+ this.sendPartBatch = [];
168
+ setTimeout(() => void this.flushSendParts(), 0);
169
+ }
170
+ this.sendPartBatch.push({
171
+ part,
172
+ own,
173
+ resolve: resolve,
174
+ reject
175
+ });
176
+ });
177
+ }
178
+ async flushSendParts() {
179
+ const asks = this.sendPartBatch ?? [];
180
+ this.sendPartBatch = null;
181
+ const parts = Array.from(new Set(asks.map(ask => ask.part)));
182
+ let answer = null;
183
+ if (parts.length > 1) {
184
+ try {
185
+ answer = await this.request(`/api/widget/send/messages?include=${parts.join(',')}&platform=mobile`);
186
+ } catch {
187
+ answer = null;
188
+ }
189
+ }
190
+ for (const ask of asks) {
191
+ const value = answer?.[ask.part];
192
+ if (value && typeof value === 'object') ask.resolve(value);else ask.own().then(ask.resolve, ask.reject);
193
+ }
148
194
  }
149
195
 
150
196
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["SecureStorage","TOKEN_KEY","isHttpUrl","urlScheme","TERMINAL_CODES","Set","isTerminalErrorCode","code","has","RepzoWidgetError","Error","constructor","message","status","name","fromResponse","body","payload","WidgetApiClient","baseUrl","channelAccountId","token","tokenLoaded","reauthorize","onTerminalError","configure","replace","getBaseUrl","getChannelAccountId","getToken","getItem","setToken","setItem","clearToken","removeItem","resolveUrl","url","trimmed","trim","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":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,aAAa,EAAEC,SAAS,QAAQ,eAAY;AAerD,SAASC,SAAS,EAAEC,SAAS,QAAQ,yBAAsB;;AAE3D;AACA,MAAMC,cAAc,GAAG,IAAIC,GAAG,CAAuB,CACnD,wBAAwB,EACxB,8BAA8B,CAC/B,CAAC;AAEF,OAAO,SAASC,mBAAmBA,CAACC,IAA+B,EAAW;EAC5E,OAAO,CAAC,CAACA,IAAI,IAAIH,cAAc,CAACI,GAAG,CAACD,IAA4B,CAAC;AACnE;AAEA,OAAO,MAAME,gBAAgB,SAASC,KAAK,CAAC;EAK1CC,WAAWA,CAACC,OAAe,EAAEC,MAAc,EAAEN,IAA0B,GAAG,MAAM,EAAE;IAChF,KAAK,CAACK,OAAO,CAAC;IACd,IAAI,CAACE,IAAI,GAAG,kBAAkB;IAC9B,IAAI,CAACD,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACN,IAAI,GAAGA,IAAI;EAClB;;EAEA;EACA,OAAOQ,YAAYA,CAACF,MAAc,EAAEG,IAAa,EAAoB;IACnE,MAAMC,OAAO,GAAID,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,GAAGA,IAAI,GAAG,CAAC,CAG3D;IACD,MAAMJ,OAAO,GAAG,OAAOK,OAAO,CAACL,OAAO,KAAK,QAAQ,IAAIK,OAAO,CAACL,OAAO,GAAGK,OAAO,CAACL,OAAO,GAAG,IAAI;IAC/F,MAAML,IAAI,GACRM,MAAM,KAAK,GAAG,IAAI,OAAOI,OAAO,CAACV,IAAI,KAAK,QAAQ,IAAID,mBAAmB,CAACW,OAAO,CAACV,IAAI,CAAC,GAClFU,OAAO,CAACV,IAAI,GACb,MAAM;IACZ,OAAO,IAAIE,gBAAgB,CAACG,OAAO,IAAI,QAAQC,MAAM,EAAE,EAAEA,MAAM,EAAEN,IAAI,CAAC;EACxE;AACF;AAcA,OAAO,MAAMW,eAAe,CAAC;EACnBC,OAAO,GAAG,EAAE;EAEZC,gBAAgB,GAAG,EAAE;EAErBC,KAAK,GAAkB,IAAI;EAE3BC,WAAW,GAAG,KAAK;;EAE3B;AACF;AACA;AACA;EACEC,WAAW,GAAoE,IAAI;;EAEnF;EACAC,eAAe,GAA+C,IAAI;EAElEC,SAASA,CAACN,OAAe,EAAEC,gBAAwB,EAAE;IACnD,IAAI,CAACD,OAAO,GAAGA,OAAO,CAACO,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IACzC,IAAI,CAACN,gBAAgB,GAAGA,gBAAgB;EAC1C;EAEAO,UAAUA,CAAA,EAAW;IACnB,OAAO,IAAI,CAACR,OAAO;EACrB;EAEAS,mBAAmBA,CAAA,EAAW;IAC5B,OAAO,IAAI,CAACR,gBAAgB;EAC9B;EAEA,MAAMS,QAAQA,CAAA,EAA2B;IACvC,IAAI,IAAI,CAACR,KAAK,EAAE,OAAO,IAAI,CAACA,KAAK;IACjC,IAAI,CAAC,IAAI,CAACC,WAAW,EAAE;MACrB,IAAI,CAACA,WAAW,GAAG,IAAI;MACvB,IAAI,CAACD,KAAK,GAAG,MAAMrB,aAAa,CAAC8B,OAAO,CAAC7B,SAAS,CAAC;IACrD;IACA,OAAO,IAAI,CAACoB,KAAK;EACnB;EAEA,MAAMU,QAAQA,CAACV,KAAa,EAAiB;IAC3C,IAAI,CAACA,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB,MAAMtB,aAAa,CAACgC,OAAO,CAAC/B,SAAS,EAAEoB,KAAK,CAAC;EAC/C;EAEA,MAAMY,UAAUA,CAAA,EAAkB;IAChC,IAAI,CAACZ,KAAK,GAAG,IAAI;IACjB,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB,MAAMtB,aAAa,CAACkC,UAAU,CAACjC,SAAS,CAAC;EAC3C;;EAEA;AACF;AACA;AACA;AACA;EACEkC,UAAUA,CAACC,GAA8B,EAAiB;IACxD,MAAMC,OAAO,GAAGD,GAAG,EAAEE,IAAI,CAAC,CAAC;IAC3B,IAAI,CAACD,OAAO,EAAE,OAAO,IAAI;IACzB,IAAInC,SAAS,CAACmC,OAAO,CAAC,EAAE,OAAOA,OAAO;IACtC,IAAIlC,SAAS,CAACkC,OAAO,CAAC,EAAE,OAAO,IAAI;IACnC,MAAME,QAAQ,GAAG,GAAG,IAAI,CAACpB,OAAO,GAAGkB,OAAO,CAACG,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,GAAGH,OAAO,EAAE;IACjF,OAAOnC,SAAS,CAACqC,QAAQ,CAAC,GAAGA,QAAQ,GAAG,IAAI;EAC9C;EAEA,MAAcE,OAAOA,CAAIC,IAAY,EAAEC,OAAuB,GAAG,CAAC,CAAC,EAAc;IAC/E,IAAIC,SAAwB,GAAG,IAAI;IAEnC,MAAMC,IAAI,GAAG,MAAAA,CAAA,KAA+B;MAC1C,MAAMC,OAA+B,GAAG;QAAE,cAAc,EAAE;MAAmB,CAAC;MAC9E,MAAMzB,KAAK,GAAGsB,OAAO,CAACI,SAAS,KAAKC,SAAS,GAAGL,OAAO,CAACI,SAAS,GAAG,MAAM,IAAI,CAAClB,QAAQ,CAAC,CAAC;MACzFe,SAAS,GAAGvB,KAAK;MACjB,IAAIA,KAAK,EAAEyB,OAAO,CAACG,aAAa,GAAG,UAAU5B,KAAK,EAAE;MAEpD,IAAI;QACF,OAAO,MAAM6B,KAAK,CAAC,GAAG,IAAI,CAAC/B,OAAO,GAAGuB,IAAI,EAAE,EAAE;UAC3CS,MAAM,EAAER,OAAO,CAACQ,MAAM,IAAI,KAAK;UAC/BL,OAAO;UACP9B,IAAI,EAAE2B,OAAO,CAAC3B,IAAI,KAAKgC,SAAS,GAAGA,SAAS,GAAGI,IAAI,CAACC,SAAS,CAACV,OAAO,CAAC3B,IAAI;QAC5E,CAAC,CAAC;MACJ,CAAC,CAAC,OAAOsC,KAAK,EAAE;QACd,MAAM,IAAI7C,gBAAgB,CACxB6C,KAAK,YAAY5C,KAAK,GAAG4C,KAAK,CAAC1C,OAAO,GAAG,wBAAwB,EACjE,CAAC,EACD,SACF,CAAC;MACH;IACF,CAAC;IAED,IAAI2C,QAAQ,GAAG,MAAMV,IAAI,CAAC,CAAC;;IAE3B;IACA,IAAIU,QAAQ,CAAC1C,MAAM,KAAK,GAAG,IAAI,CAAC8B,OAAO,CAACa,UAAU,IAAI,IAAI,CAACjC,WAAW,EAAE;MACtE,MAAMkC,SAAS,GAAG,MAAM,IAAI,CAAClC,WAAW,CAACqB,SAAS,CAAC;MACnD,IAAIa,SAAS,EAAEF,QAAQ,GAAG,MAAMV,IAAI,CAAC,CAAC;IACxC;IAEA,IAAI,CAACU,QAAQ,CAACG,EAAE,EAAE;MAChB,MAAM1C,IAAI,GAAG,MAAMuC,QAAQ,CAACI,IAAI,CAAC,CAAC,CAACC,KAAK,CAAC,MAAM,IAAI,CAAC;MACpD,MAAMN,KAAK,GAAG7C,gBAAgB,CAACM,YAAY,CAACwC,QAAQ,CAAC1C,MAAM,EAAEG,IAAI,CAAC;MAClE;MACA;MACA,IAAIV,mBAAmB,CAACgD,KAAK,CAAC/C,IAAI,CAAC,IAAI,CAACoC,OAAO,CAACa,UAAU,EAAE,IAAI,CAAChC,eAAe,GAAG8B,KAAK,CAAC;MACzF,MAAMA,KAAK;IACb;IAEA,IAAIC,QAAQ,CAAC1C,MAAM,KAAK,GAAG,EAAE,OAAOmC,SAAS;IAC7C,OAAQ,MAAMO,QAAQ,CAACI,IAAI,CAAC,CAAC;EAC/B;;EAEA;;EAEA;EACAE,SAASA,CAACC,QAAoC,EAAyB;IACrE,MAAMC,KAAK,GAAGD,QAAQ,GAAG,aAAaE,kBAAkB,CAACF,QAAQ,CAAC,EAAE,GAAG,EAAE;IACzE,OAAO,IAAI,CAACrB,OAAO,CAAC,sBAAsBuB,kBAAkB,CAAC,IAAI,CAAC5C,gBAAgB,CAAC,GAAG2C,KAAK,EAAE,CAAC;EAChG;EAEAE,kBAAkBA,CAAA,EAAiD;IACjE,OAAO,IAAI,CAACxB,OAAO,CAAC,wBAAwBuB,kBAAkB,CAAC,IAAI,CAAC5C,gBAAgB,CAAC,EAAE,CAAC;EAC1F;;EAEA;AACF;AACA;AACA;EACE8C,OAAOA,CAAA,EAAsE;IAC3E,OAAO,IAAI,CAACzB,OAAO,CAAC,uCAAuC,CAAC;EAC9D;;EAEA;AACF;AACA;AACA;AACA;EACE0B,mBAAmBA,CACjBC,UAAkB,EAClBC,IAAyB,EACzBC,KAAc,EACmE;IACjF,OAAO,IAAI,CAAC7B,OAAO,CAAC,0BAA0BuB,kBAAkB,CAACI,UAAU,CAAC,eAAe,EAAE;MAC3FjB,MAAM,EAAE,MAAM;MACdnC,IAAI,EAAEsD,KAAK,KAAKtB,SAAS,GAAG;QAAEqB;MAAK,CAAC,GAAG;QAAEA,IAAI;QAAEC;MAAM;IACvD,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;EACE,MAAMC,IAAIA,CAACC,MAOV,EAAyB;IACxB,MAAMC,YAAY,GAAGD,MAAM,CAACE,WAAW,KAAK,KAAK,GAAG,IAAI,GAAG,MAAM,IAAI,CAAC7C,QAAQ,CAAC,CAAC;IAChF,MAAM8C,IAAI,GAAGH,MAAM,CAACG,IAAI,GACpB;MACE,IAAIH,MAAM,CAACG,IAAI,CAACC,KAAK,GAAG;QAAEA,KAAK,EAAEJ,MAAM,CAACG,IAAI,CAACC;MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;MAC1D,IAAIJ,MAAM,CAACG,IAAI,CAAC7D,IAAI,GAAG;QAAEA,IAAI,EAAE0D,MAAM,CAACG,IAAI,CAAC7D;MAAK,CAAC,GAAG,CAAC,CAAC,CAAC;MACvD,IAAI0D,MAAM,CAACG,IAAI,CAACE,KAAK,GAAG;QAAEA,KAAK,EAAEL,MAAM,CAACG,IAAI,CAACE;MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;MAC1D,IAAIL,MAAM,CAACG,IAAI,CAACG,MAAM,GAAG;QAAEC,OAAO,EAAEP,MAAM,CAACG,IAAI,CAACG;MAAO,CAAC,GAAG,CAAC,CAAC,CAAC;MAC9D,IAAIN,MAAM,CAACG,IAAI,CAACK,QAAQ,GAAG;QAAEC,SAAS,EAAET,MAAM,CAACG,IAAI,CAACK;MAAS,CAAC,GAAG,CAAC,CAAC,CAAC;MACpE,IAAIR,MAAM,CAACG,IAAI,CAACO,OAAO,EAAEC,EAAE,GAAG;QAAED,OAAO,EAAEV,MAAM,CAACG,IAAI,CAACO;MAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;MACpE,IAAIV,MAAM,CAACG,IAAI,CAACS,UAAU,KAAKpC,SAAS,IAAIwB,MAAM,CAACG,IAAI,CAACS,UAAU,KAAK,IAAI,GACvE;QACEC,YAAY,EACVb,MAAM,CAACG,IAAI,CAACS,UAAU,YAAYE,IAAI,GAAGd,MAAM,CAACG,IAAI,CAACS,UAAU,CAACG,WAAW,CAAC,CAAC,GAAGf,MAAM,CAACG,IAAI,CAACS;MAChG,CAAC,GACD,CAAC,CAAC;IACR,CAAC,GACDpC,SAAS;IAEb,OAAO,IAAI,CAACP,OAAO,CAAe,kBAAkB,EAAE;MACpDU,MAAM,EAAE,MAAM;MACdK,UAAU,EAAE,IAAI;MAChBxC,IAAI,EAAE;QACJI,gBAAgB,EAAE,IAAI,CAACA,gBAAgB;QACvCqD,YAAY;QACZe,iBAAiB,EAAEhB,MAAM,CAACgB,iBAAiB;QAC3C1B,QAAQ,EAAEU,MAAM,CAACV,QAAQ;QACzB2B,UAAU,EAAEjB,MAAM,CAACiB,UAAU;QAC7B,IAAId,IAAI,GAAG;UAAEA;QAAK,CAAC,GAAG,CAAC,CAAC;MAC1B;IACF,CAAC,CAAC;EACJ;;EAEA;EACA,MAAMe,MAAMA,CAACrE,KAAa,EAAiB;IACzC,IAAI;MACF,MAAM,IAAI,CAACoB,OAAO,CAAC,oBAAoB,EAAE;QACvCU,MAAM,EAAE,MAAM;QACdK,UAAU,EAAE,IAAI;QAChBT,SAAS,EAAE1B;MACb,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOiC,KAAK,EAAE;MACd,IAAIA,KAAK,YAAY7C,gBAAgB,IAAI6C,KAAK,CAACzC,MAAM,KAAK,GAAG,EAAE;MAC/D,MAAMyC,KAAK;IACb;EACF;EAEAqC,WAAWA,CAACC,IASX,EAAsF;IACrF,OAAO,IAAI,CAACnD,OAAO,CAAC,sBAAsB,EAAE;MAAEU,MAAM,EAAE,MAAM;MAAEnC,IAAI,EAAE4E;IAAK,CAAC,CAAC;EAC7E;EAEAC,iBAAiBA,CAAA,EAAsC;IACrD,OAAO,IAAI,CAACpD,OAAO,CAAC,2BAA2B,CAAC;EAClD;EAEAqD,YAAYA,CACVC,cAAsB,EACtBC,MAAsB,EAC+D;IACrF;IACA;IACA,MAAMjC,KAAK,GAAG,oBAAoBiC,MAAM,GAAG,WAAWhC,kBAAkB,CAACgC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE;IACzF,OAAO,IAAI,CAACvD,OAAO,CACjB,6BAA6BuB,kBAAkB,CAAC+B,cAAc,CAAC,YAAYhC,KAAK,EAClF,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;EACEkC,oBAAoBA,CAACF,cAAsB,EAAiB;IAC1D,OAAO,IAAI,CAACtD,OAAO,CACjB,6BAA6BuB,kBAAkB,CAAC+B,cAAc,CAAC,OAAO,EACtE;MAAE5C,MAAM,EAAE,MAAM;MAAEK,UAAU,EAAE;IAAK,CACrC,CAAC;EACH;;EAEA;EACA0C,gBAAgBA,CACdH,cAAsB,EACtBI,QAAgB,EAChBP,IAAyE,EACtC;IACnC,OAAO,IAAI,CAACnD,OAAO,CACjB,6BAA6BuB,kBAAkB,CAAC+B,cAAc,CAAC,YAAY/B,kBAAkB,CAACmC,QAAQ,CAAC,EAAE,EACzG;MAAEhD,MAAM,EAAE,MAAM;MAAEnC,IAAI,EAAE4E;IAAK,CAC/B,CAAC;EACH;EAEAQ,QAAQA,CAACR,IAKR,EAAiB;IAChB,OAAO,IAAI,CAACnD,OAAO,CAAC,sBAAsB,EAAE;MAAEU,MAAM,EAAE,MAAM;MAAEnC,IAAI,EAAE4E;IAAK,CAAC,CAAC;EAC7E;EAEAS,UAAUA,CAACN,cAAsB,EAAEO,QAAiB,EAAiB;IACnE,OAAO,IAAI,CAAC7D,OAAO,CAAC,oBAAoB,EAAE;MACxCU,MAAM,EAAE,MAAM;MACdnC,IAAI,EAAE;QAAE+E,cAAc;QAAEO;MAAS;IACnC,CAAC,CAAC;EACJ;EAEAC,UAAUA,CAACX,IAIV,EAAiB;IAChB,OAAO,IAAI,CAACnD,OAAO,CAAC,oBAAoB,EAAE;MACxCU,MAAM,EAAE,MAAM;MACdnC,IAAI,EAAE;QAAE,GAAG4E,IAAI;QAAExE,gBAAgB,EAAE,IAAI,CAACA;MAAiB;IAC3D,CAAC,CAAC;EACJ;EAEAoF,iBAAiBA,CAACZ,IAIjB,EAAiB;IAChB,OAAO,IAAI,CAACnD,OAAO,CAAC,wBAAwB,EAAE;MAAEU,MAAM,EAAE,MAAM;MAAEnC,IAAI,EAAE4E;IAAK,CAAC,CAAC;EAC/E;;EAEA;EACAa,gBAAgBA,CAACC,UAAkB,EAAiB;IAClD,OAAO,IAAI,CAACjE,OAAO,CAAC,yBAAyB,EAAE;MAAEU,MAAM,EAAE,MAAM;MAAEnC,IAAI,EAAE;QAAE0F;MAAW;IAAE,CAAC,CAAC;EAC1F;;EAEA;EACAC,eAAeA,CACbtF,KAAa,EACbuF,IAAyD,GAAG,CAAC,CAAC,EAC/C;IACf,OAAO,IAAI,CAACnE,OAAO,CAAC,wBAAwB,EAAE;MAC5CU,MAAM,EAAE,QAAQ;MAChBnC,IAAI,EAAE;QAAEK;MAAM,CAAC;MACf,GAAGuF;IACL,CAAC,CAAC;EACJ;AACF","ignoreList":[]}
1
+ {"version":3,"names":["SecureStorage","TOKEN_KEY","isHttpUrl","urlScheme","TERMINAL_CODES","Set","isTerminalErrorCode","code","has","RepzoWidgetError","Error","constructor","message","status","name","fromResponse","body","payload","WidgetApiClient","baseUrl","channelAccountId","token","tokenLoaded","reauthorize","onTerminalError","sendPartBatch","configure","replace","getBaseUrl","getChannelAccountId","getToken","getItem","setToken","setItem","clearToken","removeItem","resolveUrl","url","trimmed","trim","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,93 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * The SDK's own voice-note player (`ios/` and `android/`), on the system
5
+ * players: AVPlayer on iOS, MediaPlayer on Android. It's an Expo module, so it
6
+ * exists in apps with Expo modules after a native build; in Expo Go, bare
7
+ * React Native apps and an over-the-air update to an app built with an older
8
+ * SDK it's missing, and `src/audio/voice.ts` falls back to `expo-audio` or the
9
+ * file row.
10
+ */
11
+
12
+ import { useEffect, useMemo, useState } from 'react';
13
+
14
+ /** What the player reports; the same fields `expo-audio`'s status has. */
15
+
16
+ function loadNativeAudio() {
17
+ let mod = null;
18
+ try {
19
+ mod = require('expo-modules-core').requireOptionalNativeModule('RepzoWidgetAudio');
20
+ } catch {
21
+ mod = null;
22
+ }
23
+ // Without the JS package (an unusual setup), the module can still be installed.
24
+ mod = mod ?? globalThis.expo?.modules?.RepzoWidgetAudio ?? null;
25
+ return mod && typeof mod.create === 'function' && typeof mod.play === 'function' ? mod : null;
26
+ }
27
+ const nativeAudio = loadNativeAudio();
28
+
29
+ /** Subscribes to every player's status; null when events can't be received. */
30
+ function addStatusListener(listener) {
31
+ if (!nativeAudio) return null;
32
+ try {
33
+ if (typeof nativeAudio.addListener === 'function') return nativeAudio.addListener('onStatus', listener);
34
+ // Expo SDK 51 and older: native modules aren't event emitters themselves.
35
+ const {
36
+ EventEmitter
37
+ } = require('expo-modules-core');
38
+ return new EventEmitter(nativeAudio).addListener('onStatus', listener);
39
+ } catch {
40
+ return null;
41
+ }
42
+ }
43
+
44
+ /** Whether the app has the SDK's own player. */
45
+ export function hasNativeVoicePlayer() {
46
+ return nativeAudio != null;
47
+ }
48
+ let nextPlayerId = 0;
49
+ const ignore = () => {};
50
+
51
+ /**
52
+ * A player for one note, released when the component goes away. Shaped like
53
+ * `expo-audio`'s `useAudioPlayer` + `useAudioPlayerStatus`, so the voice note
54
+ * drives either the same way.
55
+ */
56
+ export function useNativeVoicePlayer(url) {
57
+ const id = useMemo(() => `repzo-voice-${nextPlayerId += 1}`, []);
58
+ const [status, setStatus] = useState({
59
+ isLoaded: false
60
+ });
61
+ useEffect(() => {
62
+ const audio = nativeAudio;
63
+ const subscription = addStatusListener(next => {
64
+ if (next?.id === id) setStatus(next);
65
+ });
66
+ if (!subscription) {
67
+ setStatus({
68
+ isLoaded: false,
69
+ error: 'Voice notes need a newer Expo SDK'
70
+ });
71
+ return undefined;
72
+ }
73
+ audio.create(id, url).catch(error => setStatus({
74
+ isLoaded: false,
75
+ error: String(error)
76
+ }));
77
+ return () => {
78
+ subscription.remove();
79
+ audio.release(id).catch(ignore);
80
+ };
81
+ }, [id, url]);
82
+ const player = useMemo(() => ({
83
+ play: () => void nativeAudio.play(id).catch(ignore),
84
+ pause: () => void nativeAudio.pause(id).catch(ignore),
85
+ seekTo: seconds => nativeAudio.seekTo(id, seconds).catch(ignore),
86
+ setPlaybackRate: rate => void nativeAudio.setRate(id, rate).catch(ignore)
87
+ }), [id]);
88
+ return {
89
+ player,
90
+ status
91
+ };
92
+ }
93
+ //# sourceMappingURL=native-player.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useMemo","useState","loadNativeAudio","mod","require","requireOptionalNativeModule","globalThis","expo","modules","RepzoWidgetAudio","create","play","nativeAudio","addStatusListener","listener","addListener","EventEmitter","hasNativeVoicePlayer","nextPlayerId","ignore","useNativeVoicePlayer","url","id","status","setStatus","isLoaded","audio","subscription","next","error","undefined","catch","String","remove","release","player","pause","seekTo","seconds","setPlaybackRate","rate","setRate"],"sourceRoot":"../../../src","sources":["audio/native-player.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Voice notes (and any audio file) play inside the chat with the SDK's own
5
+ * native player (`src/audio/native-player.ts`). Where that isn't built into
6
+ * the app (Expo Go, bare React Native, an app built with SDK 1.2.2 or older),
7
+ * they play with the host app's `expo-audio` if it has one; otherwise they
8
+ * stay a file row that opens in the browser.
9
+ *
10
+ * Resolved once at module load, like the attachment pickers: each `require` is
11
+ * static so Metro can see it, and with `allowOptionalDependencies` (see
12
+ * metro.js) an uninstalled one bundles as a require that throws, which the
13
+ * `try` around it catches.
14
+ */
15
+
16
+ import { hasNativeVoicePlayer, useNativeVoicePlayer } from "./native-player.js";
17
+ let expoAudio = null;
18
+ try {
19
+ const mod = require('expo-audio');
20
+ if (typeof mod?.useAudioPlayer === 'function' && typeof mod?.useAudioPlayerStatus === 'function') {
21
+ expoAudio = mod;
22
+ }
23
+ } catch {
24
+ expoAudio = null;
25
+ }
26
+
27
+ // expo-audio 1.x (Expo SDK 54+) takes `{ updateInterval }`; 0.x (SDK 53) took
28
+ // the interval itself. Passing the wrong shape would break the player.
29
+ let takesOptionsObject = true;
30
+ try {
31
+ const version = require('expo-audio/package.json')?.version;
32
+ if (typeof version === 'string') takesOptionsObject = Number(version.split('.')[0]) >= 1;
33
+ } catch {
34
+ takesOptionsObject = true;
35
+ }
36
+
37
+ /** How often the playhead moves while a note plays. */
38
+ const UPDATE_INTERVAL_MS = 100;
39
+
40
+ /** Which player voice notes use in this app, or null when audio stays a file row. */
41
+ const backend = hasNativeVoicePlayer() ? 'native' : expoAudio ? 'expo-audio' : null;
42
+ export function voicePlaybackBackend() {
43
+ return backend;
44
+ }
45
+
46
+ /** The second argument to `useAudioPlayer` for the installed expo-audio. */
47
+ export function audioPlayerOptions() {
48
+ return takesOptionsObject ? {
49
+ updateInterval: UPDATE_INTERVAL_MS
50
+ } : UPDATE_INTERVAL_MS;
51
+ }
52
+
53
+ /** expo-audio's player for a note, on the same terms as the native one. */
54
+ function useExpoAudioPlayer(url) {
55
+ const player = expoAudio.useAudioPlayer({
56
+ uri: url
57
+ }, audioPlayerOptions());
58
+ const status = expoAudio.useAudioPlayerStatus(player);
59
+ return {
60
+ player,
61
+ status
62
+ };
63
+ }
64
+
65
+ /**
66
+ * The player for one note: `play()`, `pause()`, `seekTo(seconds)`,
67
+ * `setPlaybackRate(rate)`, and its status (`currentTime`, `duration`,
68
+ * `playing`, `isLoaded`, `isBuffering`, `didJustFinish`, `error`). Only use it
69
+ * when `voicePlaybackBackend()` isn't null. Picked once, since the backend
70
+ * never changes while the app runs.
71
+ */
72
+ export const useVoicePlayer = backend === 'native' ? useNativeVoicePlayer : useExpoAudioPlayer;
73
+
74
+ /** Audio the chat can play in place: an `audio/*` attachment with a web address. */
75
+ export function isPlayableAudio(contentType, url) {
76
+ return backend != null && (contentType ?? '').toLowerCase().startsWith('audio/') && /^https?:\/\//i.test(url ?? '');
77
+ }
78
+
79
+ // ─── One note at a time ─────────────────────────────────────────────────────
80
+ // Each bubble owns its own player, so starting a second note would otherwise
81
+ // talk over the first.
82
+
83
+ let playing = null;
84
+
85
+ /**
86
+ * Called as a note starts: pauses whichever note was playing and returns a
87
+ * release for this one's claim (call it when the note goes away).
88
+ */
89
+ export function claimVoicePlayback(pause) {
90
+ const claim = {
91
+ pause
92
+ };
93
+ const previous = playing;
94
+ playing = claim;
95
+ if (previous) {
96
+ try {
97
+ previous.pause();
98
+ } catch {
99
+ // Its player was released with its bubble: nothing is playing.
100
+ }
101
+ }
102
+ return () => {
103
+ if (playing === claim) playing = null;
104
+ };
105
+ }
106
+
107
+ // ─── Waveform ───────────────────────────────────────────────────────────────
108
+
109
+ /**
110
+ * Bar heights (0.15–1) for a note's waveform. Workstation doesn't send the
111
+ * recorded loudness to visitors, so the pattern is made up — seeded from the
112
+ * attachment, so the same note always draws the same bars.
113
+ */
114
+ export function voiceWaveformLevels(seed, count) {
115
+ let h = 2166136261;
116
+ for (let i = 0; i < seed.length; i += 1) {
117
+ h ^= seed.charCodeAt(i);
118
+ h = Math.imul(h, 16777619);
119
+ }
120
+ const levels = [];
121
+ for (let i = 0; i < count; i += 1) {
122
+ h ^= h << 13;
123
+ h ^= h >>> 17;
124
+ h ^= h << 5;
125
+ const n = (h >>> 0) % 1000 / 1000;
126
+ levels.push(0.15 + Math.pow(n, 0.85) * 0.85);
127
+ }
128
+ return levels;
129
+ }
130
+
131
+ /** `m:ss` for a playback position or length. */
132
+ export function formatVoiceClock(seconds) {
133
+ const s = Math.max(0, Math.floor(Number.isFinite(seconds) ? seconds : 0));
134
+ return `${Math.floor(s / 60)}:${(s % 60).toString().padStart(2, '0')}`;
135
+ }
136
+ //# sourceMappingURL=voice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["hasNativeVoicePlayer","useNativeVoicePlayer","expoAudio","mod","require","useAudioPlayer","useAudioPlayerStatus","takesOptionsObject","version","Number","split","UPDATE_INTERVAL_MS","backend","voicePlaybackBackend","audioPlayerOptions","updateInterval","useExpoAudioPlayer","url","player","uri","status","useVoicePlayer","isPlayableAudio","contentType","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":[]}
@@ -55,6 +55,12 @@ export const DEFAULT_LABELS = {
55
55
  attachmentTooMany: 'You can attach up to {count} files',
56
56
  attachmentsTooLargeTogether: 'Attachments are too large to send together — send some in another message',
57
57
  attachmentFailed: "Couldn't attach that file",
58
+ // A file in a message; tapping opens it. `{name}` is the file name.
59
+ openAttachment: 'Open {name}',
60
+ // Voice notes played in the chat (with expo-audio).
61
+ voicePlay: 'Play voice message',
62
+ voicePause: 'Pause voice message',
63
+ voiceSpeed: 'Playback speed',
58
64
  // Full-screen image viewer.
59
65
  imageLoadFailed: "Couldn't load this image",
60
66
  openImageExternally: 'Open image',
@@ -1 +1 @@
1
- {"version":3,"names":["BUNDLED_TRANSLATIONS","baseLanguage","createTranslator","config","locale","defaultLocale","active","fallbackLocale","key","fallback","translations","WELCOME_TEXT_KEYS","localizeWelcomeText","translate","localized","forEach","DEFAULT_LABELS","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":["BUNDLED_TRANSLATIONS","baseLanguage","createTranslator","config","locale","defaultLocale","active","fallbackLocale","key","fallback","translations","WELCOME_TEXT_KEYS","localizeWelcomeText","translate","localized","forEach","DEFAULT_LABELS","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":[]}
@@ -27,6 +27,10 @@ const ar = {
27
27
  attachmentTooMany: 'يمكنك إرفاق {count} ملفات كحد أقصى',
28
28
  attachmentsTooLargeTogether: 'المرفقات كبيرة جدًا لإرسالها معًا — أرسل بعضها في رسالة أخرى',
29
29
  attachmentFailed: 'تعذر إرفاق هذا الملف',
30
+ openAttachment: 'فتح {name}',
31
+ voicePlay: 'تشغيل الرسالة الصوتية',
32
+ voicePause: 'إيقاف الرسالة الصوتية مؤقتًا',
33
+ voiceSpeed: 'سرعة التشغيل',
30
34
  imageLoadFailed: 'تعذر تحميل هذه الصورة',
31
35
  openImageExternally: 'فتح الصورة',
32
36
  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","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","baseLanguage","locale","split","toLowerCase"],"sourceRoot":"../../src","sources":["locales.ts"],"mappings":"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","ignoreList":[]}
@@ -6,7 +6,7 @@
6
6
  * component is mounted; this hook only subscribes to it.
7
7
  */
8
8
 
9
- import { useSyncExternalStore } from 'react';
9
+ import { useRef, useSyncExternalStore } from 'react';
10
10
  import { controller } from "../controller.js";
11
11
  export function useWidgetState() {
12
12
  const store = controller.store;
@@ -15,4 +15,33 @@ export function useWidgetState() {
15
15
  export function useWidgetStore() {
16
16
  return controller.store;
17
17
  }
18
+
19
+ /**
20
+ * A slice of the state that re-renders only when the slice changes (by
21
+ * `isEqual`) — for UI that lives on the host's own screens, like the launcher,
22
+ * which shouldn't redraw on every message or typing event. Internal.
23
+ */
24
+ export function useWidgetSelector(select, isEqual) {
25
+ const store = controller.store;
26
+ const last = useRef(null);
27
+ const getSnapshot = () => {
28
+ const state = store.getState();
29
+ const previous = last.current;
30
+ if (previous && previous.state === state) return previous.value;
31
+ const value = select(state);
32
+ // Same slice from a newer state: keep the old value so React bails out.
33
+ last.current = {
34
+ state,
35
+ value: previous && isEqual(previous.value, value) ? previous.value : value
36
+ };
37
+ return last.current.value;
38
+ };
39
+ return useSyncExternalStore(store.subscribe, getSnapshot, getSnapshot);
40
+ }
41
+
42
+ /** Same keys, same values (by identity). */
43
+ export function shallowEqual(previous, next) {
44
+ const keys = Object.keys(previous);
45
+ return keys.length === Object.keys(next).length && keys.every(key => Object.is(previous[key], next[key]));
46
+ }
18
47
  //# sourceMappingURL=use-widget-state.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useSyncExternalStore","controller","useWidgetState","store","subscribe","getState","useWidgetStore"],"sourceRoot":"../../../src","sources":["state/use-widget-state.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA,SAASA,oBAAoB,QAAQ,OAAO;AAE5C,SAASC,UAAU,QAAQ,kBAAe;AAI1C,OAAO,SAASC,cAAcA,CAAA,EAAgB;EAC5C,MAAMC,KAAK,GAAGF,UAAU,CAACE,KAAK;EAC9B,OAAOH,oBAAoB,CAACG,KAAK,CAACC,SAAS,EAAED,KAAK,CAACE,QAAQ,EAAEF,KAAK,CAACE,QAAQ,CAAC;AAC9E;AAEA,OAAO,SAASC,cAAcA,CAAA,EAAgB;EAC5C,OAAOL,UAAU,CAACE,KAAK;AACzB","ignoreList":[]}
1
+ {"version":3,"names":["useRef","useSyncExternalStore","controller","useWidgetState","store","subscribe","getState","useWidgetStore","useWidgetSelector","select","isEqual","last","getSnapshot","state","previous","current","value","shallowEqual","next","keys","Object","length","every","key","is"],"sourceRoot":"../../../src","sources":["state/use-widget-state.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,OAAO;AAEpD,SAASC,UAAU,QAAQ,kBAAe;AAI1C,OAAO,SAASC,cAAcA,CAAA,EAAgB;EAC5C,MAAMC,KAAK,GAAGF,UAAU,CAACE,KAAK;EAC9B,OAAOH,oBAAoB,CAACG,KAAK,CAACC,SAAS,EAAED,KAAK,CAACE,QAAQ,EAAEF,KAAK,CAACE,QAAQ,CAAC;AAC9E;AAEA,OAAO,SAASC,cAAcA,CAAA,EAAgB;EAC5C,OAAOL,UAAU,CAACE,KAAK;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASI,iBAAiBA,CAC/BC,MAAiC,EACjCC,OAA0C,EACvC;EACH,MAAMN,KAAK,GAAGF,UAAU,CAACE,KAAK;EAC9B,MAAMO,IAAI,GAAGX,MAAM,CAA0C,IAAI,CAAC;EAClE,MAAMY,WAAW,GAAGA,CAAA,KAAM;IACxB,MAAMC,KAAK,GAAGT,KAAK,CAACE,QAAQ,CAAC,CAAC;IAC9B,MAAMQ,QAAQ,GAAGH,IAAI,CAACI,OAAO;IAC7B,IAAID,QAAQ,IAAIA,QAAQ,CAACD,KAAK,KAAKA,KAAK,EAAE,OAAOC,QAAQ,CAACE,KAAK;IAC/D,MAAMA,KAAK,GAAGP,MAAM,CAACI,KAAK,CAAC;IAC3B;IACAF,IAAI,CAACI,OAAO,GAAG;MAAEF,KAAK;MAAEG,KAAK,EAAEF,QAAQ,IAAIJ,OAAO,CAACI,QAAQ,CAACE,KAAK,EAAEA,KAAK,CAAC,GAAGF,QAAQ,CAACE,KAAK,GAAGA;IAAM,CAAC;IACpG,OAAOL,IAAI,CAACI,OAAO,CAACC,KAAK;EAC3B,CAAC;EACD,OAAOf,oBAAoB,CAACG,KAAK,CAACC,SAAS,EAAEO,WAAW,EAAEA,WAAW,CAAC;AACxE;;AAEA;AACA,OAAO,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":[]}
@@ -22,7 +22,7 @@ import { DEFAULT_BASE_URL } from "../types.js";
22
22
  import { setOpenUrlHandler } from "../ui/utils/safe-url.js";
23
23
 
24
24
  /** Sent on every init; must match `package.json` (tests/version.test.js checks). */
25
- const SDK_VERSION = '@repzo/widget-react-native@1.2.1';
25
+ const SDK_VERSION = '@repzo/widget-react-native@1.3.0';
26
26
 
27
27
  /** The platform this session reports — mobile sessions get the Mobile SDKs overrides. */
28
28
  function sessionPlatform() {
@@ -43,6 +43,13 @@ const LOGOUT_REQUEST_TIMEOUT_MS = 5_000;
43
43
  const STREAM_REAUTH_MIN_INTERVAL_MS = 30_000;
44
44
  /** Live replies in the open thread advance the server read cursor, batched. */
45
45
  const MARK_READ_DEBOUNCE_MS = 1_000;
46
+ /**
47
+ * Back from the background sooner than this, availability and the post are
48
+ * still current enough to skip re-asking. Reps hop to maps or the camera and
49
+ * back all day; the list and the open thread still catch up every time, since
50
+ * the stream was closed meanwhile.
51
+ */
52
+ const FOREGROUND_REFRESH_AFTER_MS = 5 * 60_000;
46
53
  /** Live events held back while a draft's first send is creating its thread. */
47
54
  const DRAFT_EVENT_BUFFER_LIMIT = 50;
48
55
  /** How long a post stays up after a reaction, thanking them, before it goes. */
@@ -161,7 +168,17 @@ export class WidgetStore {
161
168
  /** True once `currentUserKey` mirrors storage — memory is then authoritative. */
162
169
  userKeyLoaded = false;
163
170
  pendingConversationId = null;
171
+
172
+ /**
173
+ * The screen a thread was opened from, so its back button returns there.
174
+ * Null when it was opened with the messenger closed (a push, a notification
175
+ * card, `presentConversation`): there is nothing to go back to.
176
+ */
177
+ chatOpenedFrom = null;
164
178
  appStateSubscription = null;
179
+
180
+ /** When the app last went to the background (0: hasn't this session). */
181
+ backgroundedAt = 0;
165
182
  lastTypingPingAt = 0;
166
183
  visitorTypingActive = false;
167
184
  seenMessageIds = [];
@@ -256,6 +273,13 @@ export class WidgetStore {
256
273
  next.inAppNotification = null;
257
274
  }
258
275
  this.state = next;
276
+
277
+ // Recorded here because a thread opens from many places (home cards, the
278
+ // list, the Messages tab, posts) and each would otherwise have to say so.
279
+ const intoThread = next.view === 'chat' || next.view === 'prechat';
280
+ if (intoThread && previous.view !== 'chat' && previous.view !== 'prechat') {
281
+ this.chatOpenedFrom = previous.isOpen && (previous.view === 'home' || previous.view === 'conversations') ? previous.view : null;
282
+ }
259
283
  if (next.unreadCount !== previous.unreadCount) {
260
284
  this.events.emit(RepzoWidgetEvents.UnreadCountDidChange, {
261
285
  count: next.unreadCount
@@ -839,10 +863,14 @@ export class WidgetStore {
839
863
  }
840
864
  watchAppState() {
841
865
  if (this.appStateSubscription) return;
866
+ // Booted while already in the background (a push woke the app): coming
867
+ // to the foreground is a return from the background too.
868
+ if (AppState.currentState === 'background') this.backgroundedAt = Date.now();
842
869
  this.appStateSubscription = AppState.addEventListener('change', status => {
843
870
  if (status === 'active') {
844
871
  void this.resumeFromBackground();
845
872
  } else if (status === 'background') {
873
+ this.backgroundedAt = Date.now();
846
874
  this.realtime.close();
847
875
  }
848
876
  });
@@ -855,6 +883,12 @@ export class WidgetStore {
855
883
  if (this.state.error) await this.retry();
856
884
  return;
857
885
  }
886
+ // Only the background closes the stream. Back from merely inactive (a
887
+ // system sheet, Face ID, the notification shade) it never stopped, so
888
+ // there is nothing to catch up on.
889
+ if (!this.backgroundedAt) return;
890
+ const awayMs = Date.now() - this.backgroundedAt;
891
+ this.backgroundedAt = 0;
858
892
  const epoch = this.epoch;
859
893
  const token = await this.client.getToken();
860
894
  if (!token || this.isStale(epoch)) return;
@@ -862,6 +896,7 @@ export class WidgetStore {
862
896
  // The stream had a gap: refresh the list so unread/snippets are correct,
863
897
  // and the thread on screen so replies sent meanwhile show up.
864
898
  await Promise.all([this.refreshConversations(), this.refreshOpenThread()]);
899
+ if (awayMs < FOREGROUND_REFRESH_AFTER_MS) return;
865
900
  await this.refreshConfig();
866
901
  // A post may have gone live (or ended) while the app was away.
867
902
  if (!this.isStale(epoch)) this.loadPost();
@@ -1376,6 +1411,14 @@ export class WidgetStore {
1376
1411
  } : {})
1377
1412
  });
1378
1413
  }
1414
+
1415
+ /**
1416
+ * The thread's back button: the screen it was opened from, or the
1417
+ * conversation list when it was opened from outside the messenger.
1418
+ */
1419
+ leaveConversation() {
1420
+ this.setView(this.chatOpenedFrom ?? (this.state.activeTab === 'messages' ? 'conversations' : 'home'));
1421
+ }
1379
1422
  setActiveTab(tab) {
1380
1423
  if (tab === 'home') {
1381
1424
  this.setState({