@repzo/widget-react-native 1.2.0 → 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 (135) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/README.md +73 -1
  3. package/lib/commonjs/api/client.js +57 -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/index.js +2 -1
  10. package/lib/commonjs/index.js.map +1 -1
  11. package/lib/commonjs/locales.js +4 -0
  12. package/lib/commonjs/locales.js.map +1 -1
  13. package/lib/commonjs/push/push-notifications.js +61 -6
  14. package/lib/commonjs/push/push-notifications.js.map +1 -1
  15. package/lib/commonjs/state/use-widget-state.js +31 -0
  16. package/lib/commonjs/state/use-widget-state.js.map +1 -1
  17. package/lib/commonjs/state/widget-store.js +22 -1
  18. package/lib/commonjs/state/widget-store.js.map +1 -1
  19. package/lib/commonjs/ui/WidgetProvider.js +6 -0
  20. package/lib/commonjs/ui/WidgetProvider.js.map +1 -1
  21. package/lib/commonjs/ui/components/FileCard.js +134 -0
  22. package/lib/commonjs/ui/components/FileCard.js.map +1 -0
  23. package/lib/commonjs/ui/components/Launcher.js +15 -1
  24. package/lib/commonjs/ui/components/Launcher.js.map +1 -1
  25. package/lib/commonjs/ui/components/VoiceNote.js +354 -0
  26. package/lib/commonjs/ui/components/VoiceNote.js.map +1 -0
  27. package/lib/commonjs/ui/components/icons.js +57 -0
  28. package/lib/commonjs/ui/components/icons.js.map +1 -1
  29. package/lib/commonjs/ui/screens/chat/ChatView.js +33 -14
  30. package/lib/commonjs/ui/screens/chat/ChatView.js.map +1 -1
  31. package/lib/commonjs/ui/screens/chat/ChatView.styles.js +0 -9
  32. package/lib/commonjs/ui/screens/chat/ChatView.styles.js.map +1 -1
  33. package/lib/module/api/client.js +58 -2
  34. package/lib/module/api/client.js.map +1 -1
  35. package/lib/module/audio/voice.js +110 -0
  36. package/lib/module/audio/voice.js.map +1 -0
  37. package/lib/module/i18n.js +6 -0
  38. package/lib/module/i18n.js.map +1 -1
  39. package/lib/module/index.js +2 -1
  40. package/lib/module/index.js.map +1 -1
  41. package/lib/module/locales.js +4 -0
  42. package/lib/module/locales.js.map +1 -1
  43. package/lib/module/push/push-notifications.js +61 -6
  44. package/lib/module/push/push-notifications.js.map +1 -1
  45. package/lib/module/state/use-widget-state.js +30 -1
  46. package/lib/module/state/use-widget-state.js.map +1 -1
  47. package/lib/module/state/widget-store.js +22 -1
  48. package/lib/module/state/widget-store.js.map +1 -1
  49. package/lib/module/ui/WidgetProvider.js +6 -0
  50. package/lib/module/ui/WidgetProvider.js.map +1 -1
  51. package/lib/module/ui/components/FileCard.js +130 -0
  52. package/lib/module/ui/components/FileCard.js.map +1 -0
  53. package/lib/module/ui/components/Launcher.js +16 -2
  54. package/lib/module/ui/components/Launcher.js.map +1 -1
  55. package/lib/module/ui/components/VoiceNote.js +350 -0
  56. package/lib/module/ui/components/VoiceNote.js.map +1 -0
  57. package/lib/module/ui/components/icons.js +55 -0
  58. package/lib/module/ui/components/icons.js.map +1 -1
  59. package/lib/module/ui/screens/chat/ChatView.js +33 -14
  60. package/lib/module/ui/screens/chat/ChatView.js.map +1 -1
  61. package/lib/module/ui/screens/chat/ChatView.styles.js +0 -9
  62. package/lib/module/ui/screens/chat/ChatView.styles.js.map +1 -1
  63. package/lib/typescript/commonjs/api/client.d.ts +14 -0
  64. package/lib/typescript/commonjs/api/client.d.ts.map +1 -1
  65. package/lib/typescript/commonjs/audio/voice.d.ts +29 -0
  66. package/lib/typescript/commonjs/audio/voice.d.ts.map +1 -0
  67. package/lib/typescript/commonjs/i18n.d.ts +4 -0
  68. package/lib/typescript/commonjs/i18n.d.ts.map +1 -1
  69. package/lib/typescript/commonjs/index.d.ts +13 -0
  70. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  71. package/lib/typescript/commonjs/locales.d.ts.map +1 -1
  72. package/lib/typescript/commonjs/push/push-notifications.d.ts +21 -1
  73. package/lib/typescript/commonjs/push/push-notifications.d.ts.map +1 -1
  74. package/lib/typescript/commonjs/state/use-widget-state.d.ts +8 -0
  75. package/lib/typescript/commonjs/state/use-widget-state.d.ts.map +1 -1
  76. package/lib/typescript/commonjs/state/widget-store.d.ts +2 -0
  77. package/lib/typescript/commonjs/state/widget-store.d.ts.map +1 -1
  78. package/lib/typescript/commonjs/ui/WidgetProvider.d.ts.map +1 -1
  79. package/lib/typescript/commonjs/ui/components/FileCard.d.ts +21 -0
  80. package/lib/typescript/commonjs/ui/components/FileCard.d.ts.map +1 -0
  81. package/lib/typescript/commonjs/ui/components/Launcher.d.ts.map +1 -1
  82. package/lib/typescript/commonjs/ui/components/VoiceNote.d.ts +32 -0
  83. package/lib/typescript/commonjs/ui/components/VoiceNote.d.ts.map +1 -0
  84. package/lib/typescript/commonjs/ui/components/icons.d.ts +4 -0
  85. package/lib/typescript/commonjs/ui/components/icons.d.ts.map +1 -1
  86. package/lib/typescript/commonjs/ui/screens/chat/ChatView.d.ts.map +1 -1
  87. package/lib/typescript/commonjs/ui/screens/chat/ChatView.styles.d.ts +0 -9
  88. package/lib/typescript/commonjs/ui/screens/chat/ChatView.styles.d.ts.map +1 -1
  89. package/lib/typescript/commonjs/ui/screens/chat/ChatView.types.d.ts +4 -0
  90. package/lib/typescript/commonjs/ui/screens/chat/ChatView.types.d.ts.map +1 -1
  91. package/lib/typescript/module/api/client.d.ts +14 -0
  92. package/lib/typescript/module/api/client.d.ts.map +1 -1
  93. package/lib/typescript/module/audio/voice.d.ts +29 -0
  94. package/lib/typescript/module/audio/voice.d.ts.map +1 -0
  95. package/lib/typescript/module/i18n.d.ts +4 -0
  96. package/lib/typescript/module/i18n.d.ts.map +1 -1
  97. package/lib/typescript/module/index.d.ts +13 -0
  98. package/lib/typescript/module/index.d.ts.map +1 -1
  99. package/lib/typescript/module/locales.d.ts.map +1 -1
  100. package/lib/typescript/module/push/push-notifications.d.ts +21 -1
  101. package/lib/typescript/module/push/push-notifications.d.ts.map +1 -1
  102. package/lib/typescript/module/state/use-widget-state.d.ts +8 -0
  103. package/lib/typescript/module/state/use-widget-state.d.ts.map +1 -1
  104. package/lib/typescript/module/state/widget-store.d.ts +2 -0
  105. package/lib/typescript/module/state/widget-store.d.ts.map +1 -1
  106. package/lib/typescript/module/ui/WidgetProvider.d.ts.map +1 -1
  107. package/lib/typescript/module/ui/components/FileCard.d.ts +21 -0
  108. package/lib/typescript/module/ui/components/FileCard.d.ts.map +1 -0
  109. package/lib/typescript/module/ui/components/Launcher.d.ts.map +1 -1
  110. package/lib/typescript/module/ui/components/VoiceNote.d.ts +32 -0
  111. package/lib/typescript/module/ui/components/VoiceNote.d.ts.map +1 -0
  112. package/lib/typescript/module/ui/components/icons.d.ts +4 -0
  113. package/lib/typescript/module/ui/components/icons.d.ts.map +1 -1
  114. package/lib/typescript/module/ui/screens/chat/ChatView.d.ts.map +1 -1
  115. package/lib/typescript/module/ui/screens/chat/ChatView.styles.d.ts +0 -9
  116. package/lib/typescript/module/ui/screens/chat/ChatView.styles.d.ts.map +1 -1
  117. package/lib/typescript/module/ui/screens/chat/ChatView.types.d.ts +4 -0
  118. package/lib/typescript/module/ui/screens/chat/ChatView.types.d.ts.map +1 -1
  119. package/package.json +5 -1
  120. package/src/api/client.ts +61 -2
  121. package/src/audio/voice.ts +103 -0
  122. package/src/i18n.ts +6 -0
  123. package/src/index.tsx +13 -0
  124. package/src/locales.ts +4 -0
  125. package/src/push/push-notifications.ts +68 -5
  126. package/src/state/use-widget-state.ts +30 -1
  127. package/src/state/widget-store.ts +22 -1
  128. package/src/ui/WidgetProvider.tsx +6 -0
  129. package/src/ui/components/FileCard.tsx +111 -0
  130. package/src/ui/components/Launcher.tsx +7 -2
  131. package/src/ui/components/VoiceNote.tsx +363 -0
  132. package/src/ui/components/icons.tsx +33 -0
  133. package/src/ui/screens/chat/ChatView.styles.ts +0 -9
  134. package/src/ui/screens/chat/ChatView.tsx +39 -13
  135. package/src/ui/screens/chat/ChatView.types.ts +4 -0
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Voice notes (and any audio file) play inside the chat when the host app has
5
+ * `expo-audio`; without it they stay a file row that opens in the browser.
6
+ *
7
+ * Resolved once at module load, like the attachment pickers: each `require` is
8
+ * static so Metro can see it, and with `allowOptionalDependencies` (see
9
+ * metro.js) an uninstalled one bundles as a require that throws, which the
10
+ * `try` around it catches.
11
+ */
12
+
13
+ let expoAudio = null;
14
+ try {
15
+ const mod = require('expo-audio');
16
+ if (typeof mod?.useAudioPlayer === 'function' && typeof mod?.useAudioPlayerStatus === 'function') {
17
+ expoAudio = mod;
18
+ }
19
+ } catch {
20
+ expoAudio = null;
21
+ }
22
+
23
+ // expo-audio 1.x (Expo SDK 54+) takes `{ updateInterval }`; 0.x (SDK 53) took
24
+ // the interval itself. Passing the wrong shape would break the player.
25
+ let takesOptionsObject = true;
26
+ try {
27
+ const version = require('expo-audio/package.json')?.version;
28
+ if (typeof version === 'string') takesOptionsObject = Number(version.split('.')[0]) >= 1;
29
+ } catch {
30
+ takesOptionsObject = true;
31
+ }
32
+
33
+ /** How often the playhead moves while a note plays. */
34
+ const UPDATE_INTERVAL_MS = 100;
35
+
36
+ /** The installed expo-audio module, or null when the app doesn't have it. */
37
+ export function voicePlaybackModule() {
38
+ return expoAudio;
39
+ }
40
+
41
+ /** The second argument to `useAudioPlayer` for the installed expo-audio. */
42
+ export function audioPlayerOptions() {
43
+ return takesOptionsObject ? {
44
+ updateInterval: UPDATE_INTERVAL_MS
45
+ } : UPDATE_INTERVAL_MS;
46
+ }
47
+
48
+ /** Audio the chat can play in place: an `audio/*` attachment with a web address. */
49
+ export function isPlayableAudio(contentType, url) {
50
+ return !!expoAudio && (contentType ?? '').toLowerCase().startsWith('audio/') && /^https?:\/\//i.test(url ?? '');
51
+ }
52
+
53
+ // ─── One note at a time ─────────────────────────────────────────────────────
54
+ // Each bubble owns its own player, so starting a second note would otherwise
55
+ // talk over the first.
56
+
57
+ let playing = null;
58
+
59
+ /**
60
+ * Called as a note starts: pauses whichever note was playing and returns a
61
+ * release for this one's claim (call it when the note goes away).
62
+ */
63
+ export function claimVoicePlayback(pause) {
64
+ const claim = {
65
+ pause
66
+ };
67
+ const previous = playing;
68
+ playing = claim;
69
+ if (previous) {
70
+ try {
71
+ previous.pause();
72
+ } catch {
73
+ // Its player was released with its bubble: nothing is playing.
74
+ }
75
+ }
76
+ return () => {
77
+ if (playing === claim) playing = null;
78
+ };
79
+ }
80
+
81
+ // ─── Waveform ───────────────────────────────────────────────────────────────
82
+
83
+ /**
84
+ * Bar heights (0.15–1) for a note's waveform. Workstation doesn't send the
85
+ * recorded loudness to visitors, so the pattern is made up — seeded from the
86
+ * attachment, so the same note always draws the same bars.
87
+ */
88
+ export function voiceWaveformLevels(seed, count) {
89
+ let h = 2166136261;
90
+ for (let i = 0; i < seed.length; i += 1) {
91
+ h ^= seed.charCodeAt(i);
92
+ h = Math.imul(h, 16777619);
93
+ }
94
+ const levels = [];
95
+ for (let i = 0; i < count; i += 1) {
96
+ h ^= h << 13;
97
+ h ^= h >>> 17;
98
+ h ^= h << 5;
99
+ const n = (h >>> 0) % 1000 / 1000;
100
+ levels.push(0.15 + Math.pow(n, 0.85) * 0.85);
101
+ }
102
+ return levels;
103
+ }
104
+
105
+ /** `m:ss` for a playback position or length. */
106
+ export function formatVoiceClock(seconds) {
107
+ const s = Math.max(0, Math.floor(Number.isFinite(seconds) ? seconds : 0));
108
+ return `${Math.floor(s / 60)}:${(s % 60).toString().padStart(2, '0')}`;
109
+ }
110
+ //# 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":[]}
@@ -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":";;AAAA;AACA;AACA;AACA;AACA;;AAEA,SAASA,oBAAoB,EAAEC,YAAY,QAAQ,cAAW;AAK9D;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAACC,MAA2B,EAAEC,MAAc,EAAc;EACxF,MAAMC,aAAa,GAAGF,MAAM,EAAEE,aAAa,IAAI,IAAI;EACnD,MAAMC,MAAM,GAAGL,YAAY,CAACG,MAAM,CAAC;EACnC,MAAMG,cAAc,GAAGN,YAAY,CAACI,aAAa,CAAC;EAElD,OAAO,CAACG,GAAG,EAAEC,QAAQ,KACnBN,MAAM,EAAEO,YAAY,GAAGN,MAAM,CAAC,GAAGI,GAAG,CAAC,IACrCL,MAAM,EAAEO,YAAY,GAAGJ,MAAM,CAAC,GAAGE,GAAG,CAAC,IACrCR,oBAAoB,CAACM,MAAM,CAAC,GAAGE,GAAG,CAAgC,IAClEL,MAAM,EAAEO,YAAY,GAAGL,aAAa,CAAC,GAAGG,GAAG,CAAC,IAC5CR,oBAAoB,CAACO,cAAc,CAAC,GAAGC,GAAG,CAAgC,IAC1EC,QAAQ;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAME,iBAAiB,GAAG,CACxB,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,CACR;;AAEV;AACA,OAAO,SAASC,mBAAmBA,CAACT,MAA2B,EAAEC,MAAc,EAAuB;EACpG,IAAI,CAACD,MAAM,EAAE,OAAOA,MAAM;EAC1B,MAAMU,SAAS,GAAGX,gBAAgB,CAACC,MAAM,EAAEC,MAAM,CAAC;EAClD,MAAMU,SAAS,GAAG;IAAE,GAAGX;EAAO,CAAC;EAC/BQ,iBAAiB,CAACI,OAAO,CAAEP,GAAG,IAAK;IACjCM,SAAS,CAACN,GAAG,CAAC,GAAGK,SAAS,CAACL,GAAG,EAAEL,MAAM,CAACK,GAAG,CAAC,CAAC;EAC9C,CAAC,CAAC;EACF,OAAOM,SAAS;AAClB;AAEA,OAAO,MAAME,cAAc,GAAG;EAC5BC,IAAI,EAAE,MAAM;EACZC,OAAO,EAAE,YAAY;EACrBC,WAAW,EAAE,uBAAuB;EACpCC,iBAAiB,EAAE,0CAA0C;EAC7DC,kBAAkB,EAAE,mBAAmB;EACvCC,UAAU,EAAE,aAAa;EACzB;EACAC,kBAAkB,EAAE,eAAe;EACnCC,eAAe,EAAE,YAAY;EAC7BC,gBAAgB,EAAE,MAAM;EACxBC,gBAAgB,EAAE,eAAe;EACjCC,kBAAkB,EAAE,+BAA+B;EACnDC,iBAAiB,EAAE,oCAAoC;EACvDC,2BAA2B,EACzB,2EAA2E;EAC7EC,gBAAgB,EAAE,2BAA2B;EAC7C;EACAC,eAAe,EAAE,0BAA0B;EAC3CC,mBAAmB,EAAE,YAAY;EACjCC,sBAAsB,EAAE,iDAAiD;EACzEC,MAAM,EAAE,QAAQ;EAChBC,YAAY,EAAE,gBAAgB;EAC9BC,QAAQ,EAAE,QAAQ;EAClBC,QAAQ,EAAE,UAAU;EACpBC,UAAU,EAAE,iBAAiB;EAC7BC,aAAa,EAAE,gCAAgC;EAC/CC,UAAU,EAAE,4BAA4B;EACxCC,YAAY,EAAE,gBAAgB;EAC9BC,eAAe,EAAE,wDAAwD;EACzEC,WAAW,EAAE,MAAM;EACnBC,aAAa,EAAE,YAAY;EAC3BC,yBAAyB,EAAE,6BAA6B;EACxDC,eAAe,EAAE,QAAQ;EACzBC,gBAAgB,EAAE,oBAAoB;EACtCC,mBAAmB,EAAE,sCAAsC;EAC3DC,gBAAgB,EAAE,cAAc;EAChCC,cAAc,EAAE,YAAY;EAC5BC,WAAW,EAAE,gBAAgB;EAC7BC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE,OAAO;EACdC,KAAK,EAAE,OAAO;EACdC,eAAe,EAAE,+CAA+C;EAChEC,UAAU,EAAE,4BAA4B;EACxC;EACAC,eAAe,EAAE,kCAAkC;EACnDC,yBAAyB,EAAE,wDAAwD;EACnF;EACAC,aAAa,EAAE,uBAAuB;EACtC;EACAC,WAAW,EAAE,UAAU;EACvBC,WAAW,EAAE,UAAU;EACvBC,SAAS,EAAE,UAAU;EACrBC,QAAQ,EAAE,UAAU;EACpBC,UAAU,EAAE,WAAW;EACvBC,SAAS,EAAE,UAAU;EACrB;EACAC,KAAK,EAAE,OAAO;EACdC,SAAS,EAAE,WAAW;EACtBC,mBAAmB,EAAE,sBAAsB;EAC3CC,cAAc,EAAE,0BAA0B;EAC1CC,WAAW,EAAE,MAAM;EACnBC,WAAW,EAAE,MAAM;EACnBC,kBAAkB,EAAE,wBAAwB;EAC5CC,kBAAkB,EAAE,yBAAyB;EAC7C;EACAC,cAAc,EAAE,uCAAuC;EACvDC,kBAAkB,EAAE,kBAAkB;EACtCC,wBAAwB,EAAE,yBAAyB;EACnDC,YAAY,EAAE,QAAQ;EACtBC,UAAU,EAAE,MAAM;EAClBC,YAAY,EAAE,2BAA2B;EACzCC,YAAY,EAAE,sCAAsC;EACpDC,aAAa,EAAE,0CAA0C;EACzDC,YAAY,EAAE,8CAA8C;EAC5DC,OAAO,EAAE,UAAU;EACnBC,OAAO,EAAE,KAAK;EACdC,OAAO,EAAE,IAAI;EACbC,OAAO,EAAE,OAAO;EAChBC,OAAO,EAAE,SAAS;EAClB;EACAC,aAAa,EAAE,cAAc;EAC7BC,aAAa,EAAE,MAAM;EACrBC,qBAAqB,EAAE,eAAe;EACtCC,oBAAoB,EAAE,cAAc;EACpCC,aAAa,EAAE,MAAM;EACrBC,mBAAmB,EAAE,gBAAgB;EACrCC,sBAAsB,EAAE,SAAS;EACjCC,cAAc,EAAE,SAAS;EACzBC,yBAAyB,EAAE,kBAAkB;EAC7CC,yBAAyB,EAAE,WAAW;EACtCC,aAAa,EAAE,qBAAqB;EACpCC,YAAY,EAAE,6BAA6B;EAC3CC,OAAO,EAAE,YAAY;EACrB;EACAC,aAAa,EAAE,YAAY;EAC3BC,WAAW,EAAE,YAAY;EACzBC,OAAO,EAAE,SAAS;EAClB;EACAC,qBAAqB,EAAE,mBAAmB;EAC1CC,oBAAoB,EAAE,WAAW;EACjCC,sBAAsB,EAAE,oBAAoB;EAC5CC,oBAAoB,EAAE,wBAAwB;EAC9C;EACAC,QAAQ,EAAE,yBAAyB;EACnCC,cAAc,EAAE,aAAa;EAC7BC,YAAY,EAAE,mBAAmB;EACjCC,SAAS,EAAE,OAAO;EAClBC,YAAY,EAAE,UAAU;EACxBC,oBAAoB,EAAE,gBAAgB;EACtCC,QAAQ,EAAE,MAAM;EAChBC,QAAQ,EAAE,MAAM;EAChBC,eAAe,EAAE,sCAAsC;EACvDC,aAAa,EAAE,WAAW;EAC1BC,UAAU,EAAE,2BAA2B;EACvCC,gBAAgB,EAAE,mBAAmB;EACrCC,gBAAgB,EAAE,uBAAuB;EACzC;EACAC,YAAY,EAAE,SAAS;EACvBC,YAAY,EAAE,SAAS;EACvBC,eAAe,EAAE,eAAe;EAChCC,iBAAiB,EAAE,cAAc;EACjCC,eAAe,EAAE,aAAa;EAC9BC,aAAa,EAAE,UAAU;EACzBC,aAAa,EAAE,UAAU;EACzBC,QAAQ,EAAE,KAAK;EACfC,aAAa,EAAE,UAAU;EACzBC,UAAU,EAAE,OAAO;EACnBC,YAAY,EAAE,aAAa;EAC3BC,SAAS,EAAE,MAAM;EACjBC,iBAAiB,EAAE,eAAe;EAClCC,iBAAiB,EAAE,aAAa;EAChCC,aAAa,EAAE,gBAAgB;EAC/BC,eAAe,EAAE,oBAAoB;EACrC;EACAC,YAAY,EAAE,WAAW;EACzBC,aAAa,EAAE;AACjB,CAAU;AAIV;AACA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CAACC,QAAgB,EAAEC,MAAuC,EAAU;EAC7F,OAAOD,QAAQ,CAACE,OAAO,CAAC,YAAY,EAAE,CAACC,KAAK,EAAExI,GAAW,KACvDA,GAAG,IAAIsI,MAAM,GAAGG,MAAM,CAACH,MAAM,CAACtI,GAAG,CAAC,CAAC,GAAGwI,KACxC,CAAC;AACH;AAEA,OAAO,SAASE,WAAWA,CAACrI,SAAqB,EAA4B;EAC3E,MAAMsI,MAAM,GAAG,CAAC,CAA6B;EAC5CC,MAAM,CAACC,IAAI,CAACrI,cAAc,CAAC,CAAgBD,OAAO,CAAEP,GAAG,IAAK;IAC3D2I,MAAM,CAAC3I,GAAG,CAAC,GAAGK,SAAS,CAACL,GAAG,EAAEQ,cAAc,CAACR,GAAG,CAAC,CAAC;EACnD,CAAC,CAAC;EACF,OAAO2I,MAAM;AACf","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":[]}
@@ -48,7 +48,8 @@ const RepzoWidget = {
48
48
  addEventListener: (event, listener) => controller.events.addListener(event, listener),
49
49
  setStorageAdapter: adapter => setStorageAdapter(adapter),
50
50
  setSecureStorageAdapter: adapter => setSecureStorageAdapter(adapter),
51
- setPushToken: options => controller.store.push.setManualToken(options)
51
+ setPushToken: options => controller.store.push.setManualToken(options),
52
+ handlePushNotification: message => controller.store.push.handleNotification(message)
52
53
  };
53
54
  export default RepzoWidget;
54
55
  export { RepzoWidgetEvents as Events };
@@ -1 +1 @@
1
- {"version":3,"names":["controller","RepzoWidgetEvents","setSecureStorageAdapter","setStorageAdapter","RepzoWidgetProvider","Launcher","RepzoWidgetLauncher","RepzoWidgetError","DEFAULT_BASE_URL","useWidgetState","Space","RepzoWidget","boot","options","store","loginUnidentifiedUser","loginUserWithUserAttributes","user","updateUser","attributes","logout","present","presentSpace","space","presentConversation","conversationId","openConversation","hide","getUnreadConversationCount","Object","values","getState","unreadByConversation","filter","count","length","getUnreadMessageCount","unreadCount","logEvent","eventName","metadata","track","setLocale","locale","addEventListener","event","listener","events","addListener","adapter","setPushToken","push","setManualToken","Events"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,UAAU,QAAQ,iBAAc;AACzC,SAASC,iBAAiB,QAAuD,aAAU;AAC3F,SAASC,uBAAuB,EAAEC,iBAAiB,QAAQ,cAAW;AAStE,SAASC,mBAAmB,QAAQ,wBAAqB;AACzD,SAASC,QAAQ,IAAIC,mBAAmB,QAAQ,6BAA0B;AAC1E,SAASL,iBAAiB,QAAQ,aAAU;AAC5C,SAASM,gBAAgB,QAAQ,iBAAc;AAC/C,SAASC,gBAAgB,QAAQ,YAAS;AAC1C,SAASC,cAAc,QAAQ,6BAA0B;AAsCzD;AACA,WAAYC,KAAK,0BAALA,KAAK;EAALA,KAAK;EAALA,KAAK;EAAA,OAALA,KAAK;AAAA;AAiGjB,MAAMC,WAA4B,GAAG;EACnCC,IAAI,EAAGC,OAAO,IAAKb,UAAU,CAACc,KAAK,CAACF,IAAI,CAACC,OAAO,CAAC;EAEjDE,qBAAqB,EAAEA,CAAA,KAAMf,UAAU,CAACc,KAAK,CAACC,qBAAqB,CAAC,CAAC;EAErEC,2BAA2B,EAAGC,IAAI,IAAKjB,UAAU,CAACc,KAAK,CAACE,2BAA2B,CAACC,IAAI,CAAC;EAEzFC,UAAU,EAAGC,UAAU,IAAKnB,UAAU,CAACc,KAAK,CAACI,UAAU,CAACC,UAAU,CAAC;EAEnEC,MAAM,EAAEA,CAAA,KAAMpB,UAAU,CAACc,KAAK,CAACM,MAAM,CAAC,CAAC;EAEvCC,OAAO,EAAE,MAAAA,CAAA,KAAY;IACnBrB,UAAU,CAACc,KAAK,CAACO,OAAO,CAAC,CAAC;EAC5B,CAAC;EAEDC,YAAY,EAAE,MAAOC,KAAK,IAAK;IAC7BvB,UAAU,CAACc,KAAK,CAACO,OAAO,CAACE,KAAwB,CAAC;EACpD,CAAC;EAEDC,mBAAmB,EAAGC,cAAc,IAAKzB,UAAU,CAACc,KAAK,CAACY,gBAAgB,CAACD,cAAc,CAAC;EAE1FE,IAAI,EAAE,MAAAA,CAAA,KAAY;IAChB3B,UAAU,CAACc,KAAK,CAACa,IAAI,CAAC,CAAC;EACzB,CAAC;EAEDC,0BAA0B,EAAE,MAAAA,CAAA,KAC1BC,MAAM,CAACC,MAAM,CAAC9B,UAAU,CAACc,KAAK,CAACiB,QAAQ,CAAC,CAAC,CAACC,oBAAoB,CAAC,CAACC,MAAM,CAAEC,KAAK,IAAKA,KAAK,GAAG,CAAC,CAAC,CACzFC,MAAM;EAEXC,qBAAqB,EAAE,MAAAA,CAAA,KAAYpC,UAAU,CAACc,KAAK,CAACiB,QAAQ,CAAC,CAAC,CAACM,WAAW;EAE1EC,QAAQ,EAAE,MAAAA,CAAOC,SAAS,EAAEC,QAAQ,KAAK;IACvCxC,UAAU,CAACc,KAAK,CAAC2B,KAAK,CAACF,SAAS,EAAEC,QAAQ,IAAI,CAAC,CAAC,CAAC;EACnD,CAAC;EAEDE,SAAS,EAAGC,MAAM,IAAK3C,UAAU,CAACc,KAAK,CAAC4B,SAAS,CAACC,MAAM,CAAC;EAEzDC,gBAAgB,EAAEA,CAACC,KAAK,EAAEC,QAAQ,KAAK9C,UAAU,CAAC+C,MAAM,CAACC,WAAW,CAACH,KAAK,EAAEC,QAAQ,CAAC;EAErF3C,iBAAiB,EAAG8C,OAAO,IAAK9C,iBAAiB,CAAC8C,OAAO,CAAC;EAE1D/C,uBAAuB,EAAG+C,OAAO,IAAK/C,uBAAuB,CAAC+C,OAAO,CAAC;EAEtEC,YAAY,EAAGrC,OAAO,IAAKb,UAAU,CAACc,KAAK,CAACqC,IAAI,CAACC,cAAc,CAACvC,OAAO;AACzE,CAAC;AAED,eAAeF,WAAW;AAC1B,SAASV,iBAAiB,IAAIoD,MAAM","ignoreList":[]}
1
+ {"version":3,"names":["controller","RepzoWidgetEvents","setSecureStorageAdapter","setStorageAdapter","RepzoWidgetProvider","Launcher","RepzoWidgetLauncher","RepzoWidgetError","DEFAULT_BASE_URL","useWidgetState","Space","RepzoWidget","boot","options","store","loginUnidentifiedUser","loginUserWithUserAttributes","user","updateUser","attributes","logout","present","presentSpace","space","presentConversation","conversationId","openConversation","hide","getUnreadConversationCount","Object","values","getState","unreadByConversation","filter","count","length","getUnreadMessageCount","unreadCount","logEvent","eventName","metadata","track","setLocale","locale","addEventListener","event","listener","events","addListener","adapter","setPushToken","push","setManualToken","handlePushNotification","message","handleNotification","Events"],"sourceRoot":"../../src","sources":["index.tsx"],"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":[]}
@@ -16,6 +16,7 @@
16
16
  */
17
17
 
18
18
  import { Platform } from 'react-native';
19
+ import { openExternalUrl } from "../ui/utils/safe-url.js";
19
20
 
20
21
  /** Version-agnostic view over the host's Firebase messaging module. */
21
22
 
@@ -54,6 +55,12 @@ function resolveMessaging() {
54
55
  return null;
55
56
  }
56
57
  }
58
+ const WIDGET_DOCUMENT_TYPES = new Set(['widget_message', 'send_post', 'send_push']);
59
+
60
+ /** A push sent by Workstation for the widget (vs. one of the host app's own). */
61
+ function isWidgetPush(data) {
62
+ return !!data && WIDGET_DOCUMENT_TYPES.has(data.document_type) && typeof data.document_id === 'string' && !!data.document_id;
63
+ }
57
64
  export class PushManager {
58
65
  options = {};
59
66
  listenersWired = false;
@@ -66,6 +73,12 @@ export class PushManager {
66
73
 
67
74
  /** Registrations still on the wire; unregister() waits for them. */
68
75
  inflight = new Set();
76
+
77
+ /** Taps the host handed over before the session was ready; start() opens them. */
78
+ pendingTaps = [];
79
+
80
+ /** The host and our own listener can both see one tap — open it once. */
81
+ handledMessageIds = new Set();
69
82
  constructor(client, openConversation, openPost = () => {}) {
70
83
  this.client = client;
71
84
  this.openConversation = openConversation;
@@ -84,6 +97,9 @@ export class PushManager {
84
97
  */
85
98
  async start() {
86
99
  this.active = true;
100
+ const pending = this.pendingTaps;
101
+ this.pendingTaps = [];
102
+ pending.forEach(message => this.handleTap(message));
87
103
  if (this.manualToken) {
88
104
  await this.register(this.manualToken);
89
105
  }
@@ -150,6 +166,8 @@ export class PushManager {
150
166
  */
151
167
  async unregister(authToken) {
152
168
  this.active = false;
169
+ // A tap held for this session must not open in the next user's.
170
+ this.pendingTaps = [];
153
171
  await Promise.all([...this.inflight]);
154
172
  const token = this.lastToken;
155
173
  this.lastToken = null;
@@ -180,26 +198,63 @@ export class PushManager {
180
198
  return run;
181
199
  }
182
200
  wireTapHandlers(messaging) {
201
+ // These listeners outlive logout, so taps go through the same session gate
202
+ // as host-forwarded ones: held until start(), and only marked handled then.
183
203
  // Background → tapped: the app was alive, just not in front.
184
204
  messaging.onNotificationOpenedApp(remoteMessage => {
185
- this.handleTap(remoteMessage);
205
+ this.handleNotification(remoteMessage);
186
206
  });
187
207
 
188
208
  // Killed → tapped: the click that launched the app.
189
209
  void messaging.getInitialNotification().then(remoteMessage => {
190
- if (remoteMessage) this.handleTap(remoteMessage);
210
+ if (remoteMessage) this.handleNotification(remoteMessage);
191
211
  }).catch(() => {});
192
212
  }
193
213
 
214
+ /**
215
+ * A tap the host app read itself (`RepzoWidget.handlePushNotification`).
216
+ * Firebase hands out the notification that launched the app only once, so
217
+ * when the host reads it first our own listener gets nothing; the same goes
218
+ * for notifications the host re-posts locally while in the foreground.
219
+ * True when it's a widget push (so the host skips its own routing); it opens
220
+ * now, or once the session is ready.
221
+ */
222
+ handleNotification(message) {
223
+ if (!isWidgetPush(message?.data)) return false;
224
+ if (this.active) this.handleTap(message);else this.pendingTaps.push(message);
225
+ return true;
226
+ }
227
+
194
228
  /**
195
229
  * Only widget pushes are ours — host app notifications pass through. A team
196
- * reply opens its conversation; a Send post opens the post.
230
+ * reply opens its conversation; a Send post opens the post; a Send mobile
231
+ * push reports the open and follows its link, if it has one.
197
232
  */
198
233
  handleTap(remoteMessage) {
199
234
  const data = remoteMessage?.data;
200
- const documentId = data?.document_id;
201
- if (typeof documentId !== 'string' || !documentId) return;
202
- if (data?.document_type === 'widget_message') this.openConversation(documentId);else if (data?.document_type === 'send_post') this.openPost(documentId);
235
+ if (!isWidgetPush(data)) return;
236
+ const messageId = remoteMessage?.messageId;
237
+ if (typeof messageId === 'string' && messageId) {
238
+ if (this.handledMessageIds.has(messageId)) return;
239
+ this.handledMessageIds.add(messageId);
240
+ }
241
+ const documentId = data.document_id;
242
+ if (data?.document_type === 'widget_message') this.openConversation(documentId);else if (data?.document_type === 'send_post') this.openPost(documentId);else if (data?.document_type === 'send_push') this.openSendPush(data);
243
+ }
244
+
245
+ /**
246
+ * The tap already opened the app. A link goes through the same gate as links
247
+ * in messages (`onOpenUrl` first, then web/mail/phone links), so the host can
248
+ * route `myapp://…` itself.
249
+ */
250
+ openSendPush(data) {
251
+ const deliveryId = data.delivery_id;
252
+ if (typeof deliveryId === 'string' && deliveryId) {
253
+ this.client.reportPushOpened(deliveryId).catch(() => {
254
+ // Only the open count misses it; the visitor sees nothing.
255
+ });
256
+ }
257
+ if (typeof data.url === 'string' && data.url) void openExternalUrl(data.url);
203
258
  }
204
259
  }
205
260
  //# sourceMappingURL=push-notifications.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","resolveMessaging","mod","require","getMessaging","instance","requestPermission","registerDeviceForRemoteMessages","Promise","resolve","getToken","onTokenRefresh","cb","onNotificationOpenedApp","getInitialNotification","factory","default","PushManager","options","listenersWired","lastToken","manualToken","warnedMissingModule","active","inflight","Set","constructor","client","openConversation","openPost","configure","start","register","enabled","messaging","console","warn","wireTapHandlers","token","error","setManualToken","manual","unregister","authToken","all","removePushToken","skipReauth","run","registerPushToken","platform","OS","bundleId","undefined","then","finally","delete","add","remoteMessage","handleTap","catch","data","documentId","document_id","document_type"],"sourceRoot":"../../../src","sources":["push/push-notifications.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Platform","openExternalUrl","resolveMessaging","mod","require","getMessaging","instance","requestPermission","registerDeviceForRemoteMessages","Promise","resolve","getToken","onTokenRefresh","cb","onNotificationOpenedApp","getInitialNotification","factory","default","WIDGET_DOCUMENT_TYPES","Set","isWidgetPush","data","has","document_type","document_id","PushManager","options","listenersWired","lastToken","manualToken","warnedMissingModule","active","inflight","pendingTaps","handledMessageIds","constructor","client","openConversation","openPost","configure","start","pending","forEach","message","handleTap","register","enabled","messaging","console","warn","wireTapHandlers","token","error","setManualToken","manual","unregister","authToken","all","removePushToken","skipReauth","run","registerPushToken","platform","OS","bundleId","undefined","then","finally","delete","add","remoteMessage","handleNotification","catch","push","messageId","documentId","openSendPush","deliveryId","delivery_id","reportPushOpened","url"],"sourceRoot":"../../../src","sources":["push/push-notifications.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.0';
25
+ const SDK_VERSION = '@repzo/widget-react-native@1.2.2';
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. */
@@ -162,6 +169,9 @@ export class WidgetStore {
162
169
  userKeyLoaded = false;
163
170
  pendingConversationId = null;
164
171
  appStateSubscription = null;
172
+
173
+ /** When the app last went to the background (0: hasn't this session). */
174
+ backgroundedAt = 0;
165
175
  lastTypingPingAt = 0;
166
176
  visitorTypingActive = false;
167
177
  seenMessageIds = [];
@@ -839,10 +849,14 @@ export class WidgetStore {
839
849
  }
840
850
  watchAppState() {
841
851
  if (this.appStateSubscription) return;
852
+ // Booted while already in the background (a push woke the app): coming
853
+ // to the foreground is a return from the background too.
854
+ if (AppState.currentState === 'background') this.backgroundedAt = Date.now();
842
855
  this.appStateSubscription = AppState.addEventListener('change', status => {
843
856
  if (status === 'active') {
844
857
  void this.resumeFromBackground();
845
858
  } else if (status === 'background') {
859
+ this.backgroundedAt = Date.now();
846
860
  this.realtime.close();
847
861
  }
848
862
  });
@@ -855,6 +869,12 @@ export class WidgetStore {
855
869
  if (this.state.error) await this.retry();
856
870
  return;
857
871
  }
872
+ // Only the background closes the stream. Back from merely inactive (a
873
+ // system sheet, Face ID, the notification shade) it never stopped, so
874
+ // there is nothing to catch up on.
875
+ if (!this.backgroundedAt) return;
876
+ const awayMs = Date.now() - this.backgroundedAt;
877
+ this.backgroundedAt = 0;
858
878
  const epoch = this.epoch;
859
879
  const token = await this.client.getToken();
860
880
  if (!token || this.isStale(epoch)) return;
@@ -862,6 +882,7 @@ export class WidgetStore {
862
882
  // The stream had a gap: refresh the list so unread/snippets are correct,
863
883
  // and the thread on screen so replies sent meanwhile show up.
864
884
  await Promise.all([this.refreshConversations(), this.refreshOpenThread()]);
885
+ if (awayMs < FOREGROUND_REFRESH_AFTER_MS) return;
865
886
  await this.refreshConfig();
866
887
  // A post may have gone live (or ended) while the app was away.
867
888
  if (!this.isStale(epoch)) this.loadPost();