@repzo/widget-react-native 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +36 -0
- package/README.md +36 -2
- package/lib/commonjs/api/client.js +29 -5
- package/lib/commonjs/api/client.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/state/user-update-queue.js +168 -0
- package/lib/commonjs/state/user-update-queue.js.map +1 -0
- package/lib/commonjs/state/widget-store.js +27 -4
- package/lib/commonjs/state/widget-store.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/ui/screens/chat/ChatView.js +14 -1
- package/lib/commonjs/ui/screens/chat/ChatView.js.map +1 -1
- package/lib/module/api/client.js +27 -4
- package/lib/module/api/client.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/state/user-update-queue.js +163 -0
- package/lib/module/state/user-update-queue.js.map +1 -0
- package/lib/module/state/widget-store.js +27 -4
- package/lib/module/state/widget-store.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/ui/screens/chat/ChatView.js +14 -1
- package/lib/module/ui/screens/chat/ChatView.js.map +1 -1
- package/lib/typescript/commonjs/api/client.d.ts +8 -2
- package/lib/typescript/commonjs/api/client.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +5 -0
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/state/user-update-queue.d.ts +62 -0
- package/lib/typescript/commonjs/state/user-update-queue.d.ts.map +1 -0
- package/lib/typescript/commonjs/state/widget-store.d.ts +4 -0
- package/lib/typescript/commonjs/state/widget-store.d.ts.map +1 -1
- package/lib/typescript/commonjs/types.d.ts +12 -0
- package/lib/typescript/commonjs/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/chat/ChatView.d.ts.map +1 -1
- package/lib/typescript/module/api/client.d.ts +8 -2
- package/lib/typescript/module/api/client.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +5 -0
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/state/user-update-queue.d.ts +62 -0
- package/lib/typescript/module/state/user-update-queue.d.ts.map +1 -0
- package/lib/typescript/module/state/widget-store.d.ts +4 -0
- package/lib/typescript/module/state/widget-store.d.ts.map +1 -1
- package/lib/typescript/module/types.d.ts +12 -0
- package/lib/typescript/module/types.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/chat/ChatView.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/api/client.ts +33 -4
- package/src/index.tsx +5 -0
- package/src/state/user-update-queue.ts +178 -0
- package/src/state/widget-store.ts +25 -2
- package/src/types.ts +12 -0
- package/src/ui/screens/chat/ChatView.tsx +14 -1
package/CHANGELOG.md
CHANGED
|
@@ -12,6 +12,42 @@ All notable changes to `@repzo/widget-react-native`, newest first.
|
|
|
12
12
|
|
|
13
13
|
## Unreleased
|
|
14
14
|
|
|
15
|
+
## 1.5.0 — 2026-11-06
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- **`updateUser()` is paced, like other messengers' SDKs.** An app that calls
|
|
20
|
+
it on a timer or on every location fix no longer sends every call. Values
|
|
21
|
+
Workstation already has aren't sent again. Up to 20 updates go out at once,
|
|
22
|
+
then one every 90 seconds (20 per 30 minutes). Calls in between are merged,
|
|
23
|
+
newest value per key, and sent on the next allowed update, so the latest
|
|
24
|
+
value of every attribute still arrives. If Workstation answers that it's
|
|
25
|
+
busy (HTTP 429), the SDK waits as long as it asks and sends again; after a
|
|
26
|
+
failed connection or a server error it tries again a minute later. New
|
|
27
|
+
`boot({ throttleUpdateUser })` option (default `true`). See **Upgrading**.
|
|
28
|
+
- **`RepzoWidgetError.retryAfter`.** On an HTTP 429, the seconds Workstation
|
|
29
|
+
asked to wait, when it said.
|
|
30
|
+
|
|
31
|
+
### Fixed
|
|
32
|
+
|
|
33
|
+
- **A message goes out once, however many times Send is tapped.** On a slow
|
|
34
|
+
or busy phone the chat could take a moment to react to Send. Every extra tap
|
|
35
|
+
in that moment sent the message again, so your team got it several times.
|
|
36
|
+
Now only the first tap sends it. Nothing to set up.
|
|
37
|
+
|
|
38
|
+
### Upgrading
|
|
39
|
+
|
|
40
|
+
- **`updateUser()` calls may be merged and sent later.** A call that's held
|
|
41
|
+
back resolves right away instead of waiting for, or failing on, the
|
|
42
|
+
request. A call that's sent straight away still rejects when the request
|
|
43
|
+
fails, except for a 429, which the SDK now retries itself. If your app
|
|
44
|
+
calls `updateUser()` often, you can drop your own retry logic. To send
|
|
45
|
+
every call straight away, as before:
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
await RepzoWidget.boot({ channelAccountId: '<widget id>', throttleUpdateUser: false });
|
|
49
|
+
```
|
|
50
|
+
|
|
15
51
|
## 1.4.0 — 2026-11-02
|
|
16
52
|
|
|
17
53
|
### Added
|
package/README.md
CHANGED
|
@@ -461,6 +461,39 @@ get a plain message and no Retry.
|
|
|
461
461
|
Expired or revoked tokens (401) are handled silently: the SDK re-inits once
|
|
462
462
|
(shared by all concurrent requests) and retries.
|
|
463
463
|
|
|
464
|
+
*1.5.0+.* When Workstation answers that it's busy (HTTP 429), the error's
|
|
465
|
+
`retryAfter` holds the seconds it asked to wait, when it said.
|
|
466
|
+
|
|
467
|
+
## Custom attributes
|
|
468
|
+
|
|
469
|
+
`updateUser()` saves attributes on the visitor so agents see them on the
|
|
470
|
+
conversation, for example a plan, a role or which part of your app they're in:
|
|
471
|
+
|
|
472
|
+
```ts
|
|
473
|
+
await RepzoWidget.updateUser({ plan: 'pro', role: 'manager' });
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
Up to 30 keys, keys up to 64 characters, values (text, numbers or true/false)
|
|
477
|
+
up to 512 characters. Each call only changes the keys it sends; the others
|
|
478
|
+
keep their saved values.
|
|
479
|
+
|
|
480
|
+
*1.5.0+.* Calls are paced so an app can't flood Workstation:
|
|
481
|
+
|
|
482
|
+
- Values Workstation already has aren't sent again.
|
|
483
|
+
- Up to 20 updates go out at once, then one every 90 seconds (20 per 30
|
|
484
|
+
minutes).
|
|
485
|
+
- Calls in between are merged, newest value per key, and sent on the next
|
|
486
|
+
allowed update. They resolve right away. The latest value of every
|
|
487
|
+
attribute still arrives.
|
|
488
|
+
- When Workstation answers that it's busy, the SDK waits as long as it asks
|
|
489
|
+
and sends again. After a failed connection or a server error it tries again
|
|
490
|
+
a minute later, and the call that failed still rejects.
|
|
491
|
+
|
|
492
|
+
Send what agents need to see, not live data. A value that changes every few
|
|
493
|
+
seconds, such as a GPS position, only arrives about every 90 seconds once the
|
|
494
|
+
first 20 updates are used. `boot({ throttleUpdateUser: false })` sends every
|
|
495
|
+
call straight away, as before 1.5.0.
|
|
496
|
+
|
|
464
497
|
## Conversation list
|
|
465
498
|
|
|
466
499
|
*1.4.0+.* On Home and in Messages, each conversation shows its newest
|
|
@@ -745,10 +778,10 @@ sub.remove();
|
|
|
745
778
|
|
|
746
779
|
| Method | Notes |
|
|
747
780
|
| --- | --- |
|
|
748
|
-
| `boot({ channelAccountId, baseUrl?, user?, push?, onOpenUrl?, attachments?, inAppNotifications?, posts?, photoAlbums?, youPrefix? })` | Mints/resumes the session and connects the live stream. Idempotent; safe to call repeatedly. |
|
|
781
|
+
| `boot({ channelAccountId, baseUrl?, user?, push?, onOpenUrl?, attachments?, inAppNotifications?, posts?, photoAlbums?, youPrefix?, throttleUpdateUser? })` | Mints/resumes the session and connects the live stream. Idempotent; safe to call repeatedly. |
|
|
749
782
|
| `loginUserWithUserAttributes({ userId?, email?, name?, phone?, userHash?, account?, signedUpAt? })` | Identifies the visitor; moves anonymous history over. `account: { id, name?, website? }` links them to a CRM account matched by `id`; `signedUpAt` (Date, unix seconds or ISO) shows as "Signed up". A different stored user is signed out first. |
|
|
750
783
|
| `loginUnidentifiedUser()` | Drops the identity (signing out a stored user), fresh anonymous session. |
|
|
751
|
-
| `updateUser(attributes)` | Custom attributes agents see on the conversation (≤30 keys, 64-char keys, 512-char values). |
|
|
784
|
+
| `updateUser(attributes)` | Custom attributes agents see on the conversation (≤30 keys, 64-char keys, 512-char values). *1.5.0+:* paced, see "Custom attributes". |
|
|
752
785
|
| `logout()` | Revokes the token, removes the push registration, wipes visitor data, rotates the device id, resets the UI. Await it on sign-out. |
|
|
753
786
|
| `present()` / `presentSpace('home' \| 'messages')` / `presentConversation(id)` / `hide()` | UI commands. |
|
|
754
787
|
| `getUnreadConversationCount()` | Number of conversations with at least one unread reply. |
|
|
@@ -792,6 +825,7 @@ action from you:
|
|
|
792
825
|
| 1.1.0 or older | Posts from Workstation now show over the app by default, once one is set live for Mobile (`posts: false` turns them off). They need `<RepzoWidgetProvider>` mounted at the root. |
|
|
793
826
|
| 1.2.2 or older | Nothing required. In apps with Expo modules, the SDK now includes a small native voice player, so build the app again (development or store build) to get it; `expo-audio` can be removed if nothing else in your app uses it. If your `runtimeVersion` uses the `fingerprint` policy, it changes with this update. |
|
|
794
827
|
| 1.3.1 or older | Nothing required. With a Workstation that takes uploads, a picked file now starts uploading right away, before the visitor taps Send (`attachments: { uploadOnPick: false }` uploads on Send instead). Several photos in one message now show as an album (`photoAlbums: false` shows each on its own, as before). Home and Messages put "You:" before the visitor's own last message (`youPrefix: false` turns it off). |
|
|
828
|
+
| 1.4.0 or older | Nothing required. `updateUser()` is now paced: unchanged values are skipped, and past 20 updates in 30 minutes calls are merged and sent later (`throttleUpdateUser: false` sends every call, as before). See "Custom attributes". |
|
|
795
829
|
|
|
796
830
|
## Troubleshooting
|
|
797
831
|
|
|
@@ -24,24 +24,48 @@ function isTerminalErrorCode(code) {
|
|
|
24
24
|
return !!code && TERMINAL_CODES.has(code);
|
|
25
25
|
}
|
|
26
26
|
class RepzoWidgetError extends Error {
|
|
27
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Seconds Workstation asked to wait before trying again, on a 429
|
|
29
|
+
* (`Retry-After`). Undefined when it didn't say.
|
|
30
|
+
* @since 1.5.0
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
constructor(message, status, code = 'http', retryAfter) {
|
|
28
34
|
super(message);
|
|
29
35
|
this.name = 'RepzoWidgetError';
|
|
30
36
|
this.status = status;
|
|
31
37
|
this.code = code;
|
|
38
|
+
if (retryAfter !== undefined) this.retryAfter = retryAfter;
|
|
32
39
|
}
|
|
33
40
|
|
|
34
41
|
/** Builds the error for a non-2xx `{ message, code }` body. */
|
|
35
|
-
static fromResponse(status, body) {
|
|
42
|
+
static fromResponse(status, body, retryAfterHeader) {
|
|
36
43
|
const payload = body && typeof body === 'object' ? body : {};
|
|
37
44
|
const message = typeof payload.message === 'string' && payload.message ? payload.message : null;
|
|
38
45
|
const code = status === 403 && typeof payload.code === 'string' && isTerminalErrorCode(payload.code) ? payload.code : 'http';
|
|
39
|
-
|
|
46
|
+
const retryAfter = status === 429 ? parseRetryAfter(retryAfterHeader, payload.retryAfter) : undefined;
|
|
47
|
+
return new RepzoWidgetError(message || `HTTP ${status}`, status, code, retryAfter);
|
|
40
48
|
}
|
|
41
49
|
}
|
|
42
50
|
|
|
43
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Seconds from a `Retry-After` header (seconds or an HTTP date), falling back
|
|
53
|
+
* to the `retryAfter` seconds Workstation also puts in the 429 body.
|
|
54
|
+
*/
|
|
44
55
|
exports.RepzoWidgetError = RepzoWidgetError;
|
|
56
|
+
function parseRetryAfter(header, bodyValue) {
|
|
57
|
+
const value = header?.trim();
|
|
58
|
+
if (value) {
|
|
59
|
+
if (/^\d+(\.\d+)?$/.test(value)) return Number(value);
|
|
60
|
+
const at = Date.parse(value);
|
|
61
|
+
if (Number.isFinite(at)) return Math.max(0, (at - Date.now()) / 1000);
|
|
62
|
+
}
|
|
63
|
+
if (typeof bodyValue === 'number' && Number.isFinite(bodyValue) && bodyValue >= 0) return bodyValue;
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/** A Send message part asked for on its own, which may share one request with others. */
|
|
68
|
+
|
|
45
69
|
/**
|
|
46
70
|
* Sends a local file as the request body straight from disk and resolves the
|
|
47
71
|
* HTTP status. React Native streams a `{ uri }` body natively; `fetch` would
|
|
@@ -172,7 +196,7 @@ class WidgetApiClient {
|
|
|
172
196
|
}
|
|
173
197
|
if (!response.ok) {
|
|
174
198
|
const body = await response.json().catch(() => null);
|
|
175
|
-
const error = RepzoWidgetError.fromResponse(response.status, body);
|
|
199
|
+
const error = RepzoWidgetError.fromResponse(response.status, body, response.headers?.get?.('Retry-After'));
|
|
176
200
|
// skipReauth calls (init, logout-time) are handled by their caller,
|
|
177
201
|
// which knows whether the result is still current.
|
|
178
202
|
if (isTerminalErrorCode(error.code) && !options.skipReauth) this.onTerminalError?.(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_fileSize","require","_storage","_safeUrl","TERMINAL_CODES","Set","isTerminalErrorCode","code","has","RepzoWidgetError","Error","constructor","message","status","name","fromResponse","body","payload","exports","sendFileFromDisk","url","method","headers","file","signal","Promise","resolve","reject","xhr","XMLHttpRequest","cancel","abort","settle","finish","removeEventListener","onload","onerror","ontimeout","onabort","open","Object","entries","forEach","value","setRequestHeader","keys","some","toLowerCase","contentType","addEventListener","send","uri","UPLOAD_LIFETIME_MS","uploadExpiry","expiresAt","now","at","Date","parse","NaN","WidgetApiClient","baseUrl","channelAccountId","token","tokenLoaded","reauthorize","onTerminalError","sendPartBatch","configure","replace","getBaseUrl","getChannelAccountId","getToken","SecureStorage","getItem","TOKEN_KEY","setToken","setItem","clearToken","removeItem","resolveUrl","trimmed","trim","isHttpUrl","urlScheme","resolved","startsWith","request","path","options","sentToken","authToken","undefined","Authorization","fetch","JSON","stringify","error","response","skipReauth","refreshed","ok","json","catch","getConfig","platform","query","encodeURIComponent","getOutboundMessage","askSendPart","getPost","part","own","setTimeout","flushSendParts","push","asks","parts","Array","from","map","ask","answer","length","join","then","sendPostInteraction","campaignId","kind","init","params","visitorToken","resumeToken","user","email","phone","userId","user_id","userHash","user_hash","account","id","signedUpAt","signed_up_at","toISOString","trackingVisitorId","sdkVersion","logout","sendMessage","data","uploadAttachment","stopIfCancelled","aborted","streamedSize","measureFileSize","blob","target","fileName","size","uploadUrl","uploadToken","listConversations","listMessages","conversationId","cursor","markConversationRead","rateConversation","ratingId","identify","sendTyping","isTyping","trackEvent","registerPushToken","reportPushOpened","deliveryId","removePushToken","auth"],"sourceRoot":"../../../src","sources":["api/client.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_fileSize","require","_storage","_safeUrl","TERMINAL_CODES","Set","isTerminalErrorCode","code","has","RepzoWidgetError","Error","constructor","message","status","retryAfter","name","undefined","fromResponse","body","retryAfterHeader","payload","parseRetryAfter","exports","header","bodyValue","value","trim","test","Number","at","Date","parse","isFinite","Math","max","now","sendFileFromDisk","url","method","headers","file","signal","Promise","resolve","reject","xhr","XMLHttpRequest","cancel","abort","settle","finish","removeEventListener","onload","onerror","ontimeout","onabort","open","Object","entries","forEach","setRequestHeader","keys","some","toLowerCase","contentType","addEventListener","send","uri","UPLOAD_LIFETIME_MS","uploadExpiry","expiresAt","NaN","WidgetApiClient","baseUrl","channelAccountId","token","tokenLoaded","reauthorize","onTerminalError","sendPartBatch","configure","replace","getBaseUrl","getChannelAccountId","getToken","SecureStorage","getItem","TOKEN_KEY","setToken","setItem","clearToken","removeItem","resolveUrl","trimmed","isHttpUrl","urlScheme","resolved","startsWith","request","path","options","sentToken","authToken","Authorization","fetch","JSON","stringify","error","response","skipReauth","refreshed","ok","json","catch","get","getConfig","platform","query","encodeURIComponent","getOutboundMessage","askSendPart","getPost","part","own","setTimeout","flushSendParts","push","asks","parts","Array","from","map","ask","answer","length","join","then","sendPostInteraction","campaignId","kind","init","params","visitorToken","resumeToken","user","email","phone","userId","user_id","userHash","user_hash","account","id","signedUpAt","signed_up_at","toISOString","trackingVisitorId","sdkVersion","logout","sendMessage","data","uploadAttachment","stopIfCancelled","aborted","streamedSize","measureFileSize","blob","target","fileName","size","uploadUrl","uploadToken","listConversations","listMessages","conversationId","cursor","markConversationRead","rateConversation","ratingId","identify","sendTyping","isTyping","trackEvent","registerPushToken","reportPushOpened","deliveryId","removePushToken","auth"],"sourceRoot":"../../../src","sources":["api/client.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_controller","require","_events","_storage","_WidgetProvider","_Launcher","_client","_types","_useWidgetState","Space","exports","RepzoWidget","boot","options","controller","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","setStorageAdapter","adapter","setSecureStorageAdapter","setPushToken","push","setManualToken","handlePushNotification","message","handleNotification","_default","default"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AASA,IAAAG,eAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AAEA,IAAAK,OAAA,GAAAL,OAAA;AACA,IAAAM,MAAA,GAAAN,OAAA;AACA,IAAAO,eAAA,GAAAP,OAAA;AAxBA;AACA;AACA;AACA;AACA;AACA;AACA;AAwDA;AAAA,IACYQ,KAAK,GAAAC,OAAA,CAAAD,KAAA,0BAALA,KAAK;EAALA,KAAK;EAALA,KAAK;EAAA,OAALA,KAAK;AAAA;
|
|
1
|
+
{"version":3,"names":["_controller","require","_events","_storage","_WidgetProvider","_Launcher","_client","_types","_useWidgetState","Space","exports","RepzoWidget","boot","options","controller","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","setStorageAdapter","adapter","setSecureStorageAdapter","setPushToken","push","setManualToken","handlePushNotification","message","handleNotification","_default","default"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AASA,IAAAG,eAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AAEA,IAAAK,OAAA,GAAAL,OAAA;AACA,IAAAM,MAAA,GAAAN,OAAA;AACA,IAAAO,eAAA,GAAAP,OAAA;AAxBA;AACA;AACA;AACA;AACA;AACA;AACA;AAwDA;AAAA,IACYQ,KAAK,GAAAC,OAAA,CAAAD,KAAA,0BAALA,KAAK;EAALA,KAAK;EAALA,KAAK;EAAA,OAALA,KAAK;AAAA;AAiHjB,MAAME,WAA4B,GAAG;EACnCC,IAAI,EAAGC,OAAO,IAAKC,sBAAU,CAACC,KAAK,CAACH,IAAI,CAACC,OAAO,CAAC;EAEjDG,qBAAqB,EAAEA,CAAA,KAAMF,sBAAU,CAACC,KAAK,CAACC,qBAAqB,CAAC,CAAC;EAErEC,2BAA2B,EAAGC,IAAI,IAAKJ,sBAAU,CAACC,KAAK,CAACE,2BAA2B,CAACC,IAAI,CAAC;EAEzFC,UAAU,EAAGC,UAAU,IAAKN,sBAAU,CAACC,KAAK,CAACI,UAAU,CAACC,UAAU,CAAC;EAEnEC,MAAM,EAAEA,CAAA,KAAMP,sBAAU,CAACC,KAAK,CAACM,MAAM,CAAC,CAAC;EAEvCC,OAAO,EAAE,MAAAA,CAAA,KAAY;IACnBR,sBAAU,CAACC,KAAK,CAACO,OAAO,CAAC,CAAC;EAC5B,CAAC;EAEDC,YAAY,EAAE,MAAOC,KAAK,IAAK;IAC7BV,sBAAU,CAACC,KAAK,CAACO,OAAO,CAACE,KAAwB,CAAC;EACpD,CAAC;EAEDC,mBAAmB,EAAGC,cAAc,IAAKZ,sBAAU,CAACC,KAAK,CAACY,gBAAgB,CAACD,cAAc,CAAC;EAE1FE,IAAI,EAAE,MAAAA,CAAA,KAAY;IAChBd,sBAAU,CAACC,KAAK,CAACa,IAAI,CAAC,CAAC;EACzB,CAAC;EAEDC,0BAA0B,EAAE,MAAAA,CAAA,KAC1BC,MAAM,CAACC,MAAM,CAACjB,sBAAU,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,KAAYvB,sBAAU,CAACC,KAAK,CAACiB,QAAQ,CAAC,CAAC,CAACM,WAAW;EAE1EC,QAAQ,EAAE,MAAAA,CAAOC,SAAS,EAAEC,QAAQ,KAAK;IACvC3B,sBAAU,CAACC,KAAK,CAAC2B,KAAK,CAACF,SAAS,EAAEC,QAAQ,IAAI,CAAC,CAAC,CAAC;EACnD,CAAC;EAEDE,SAAS,EAAGC,MAAM,IAAK9B,sBAAU,CAACC,KAAK,CAAC4B,SAAS,CAACC,MAAM,CAAC;EAEzDC,gBAAgB,EAAEA,CAACC,KAAK,EAAEC,QAAQ,KAAKjC,sBAAU,CAACkC,MAAM,CAACC,WAAW,CAACH,KAAK,EAAEC,QAAQ,CAAC;EAErFG,iBAAiB,EAAGC,OAAO,IAAK,IAAAD,0BAAiB,EAACC,OAAO,CAAC;EAE1DC,uBAAuB,EAAGD,OAAO,IAAK,IAAAC,gCAAuB,EAACD,OAAO,CAAC;EAEtEE,YAAY,EAAGxC,OAAO,IAAKC,sBAAU,CAACC,KAAK,CAACuC,IAAI,CAACC,cAAc,CAAC1C,OAAO,CAAC;EAExE2C,sBAAsB,EAAGC,OAAO,IAAK3C,sBAAU,CAACC,KAAK,CAACuC,IAAI,CAACI,kBAAkB,CAACD,OAAO;AACvF,CAAC;AAAC,IAAAE,QAAA,GAAAjD,OAAA,CAAAkD,OAAA,GAEajD,WAAW","ignoreList":[]}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.UserUpdateQueue = exports.USER_UPDATE_WINDOW_MS = exports.USER_UPDATE_BURST = void 0;
|
|
7
|
+
var _client = require("../api/client.js");
|
|
8
|
+
/**
|
|
9
|
+
* Paces `updateUser()` the way Intercom paces its web `update` (20 calls per
|
|
10
|
+
* 30 minutes), so a host that calls it on a timer or on every GPS fix can't
|
|
11
|
+
* flood Workstation.
|
|
12
|
+
*
|
|
13
|
+
* - Values that match what Workstation already has are not sent again.
|
|
14
|
+
* - Up to `burst` sends go out straight away; after that one more is allowed
|
|
15
|
+
* every `windowMs / burst` (90 s by default).
|
|
16
|
+
* - While a send is in flight, rate limited or out of budget, new values wait
|
|
17
|
+
* and merge into one bag, newest value per key. Nothing is lost: the latest
|
|
18
|
+
* of every key goes out on the next allowed send. Workstation merges the bag
|
|
19
|
+
* into the saved attributes per key, so sending only what changed is enough.
|
|
20
|
+
* - A 429 holds sends until its `Retry-After`. A failed connection or a 5xx
|
|
21
|
+
* keeps the values and tries again later.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
const USER_UPDATE_BURST = exports.USER_UPDATE_BURST = 20;
|
|
25
|
+
const USER_UPDATE_WINDOW_MS = exports.USER_UPDATE_WINDOW_MS = 30 * 60 * 1000;
|
|
26
|
+
/** Wait after a 429 without a usable `Retry-After`, or after a failed connection / 5xx. */
|
|
27
|
+
const DEFAULT_HOLD_MS = 60 * 1000;
|
|
28
|
+
class UserUpdateQueue {
|
|
29
|
+
/** Values Workstation accepted for the current identity. */
|
|
30
|
+
sent = {};
|
|
31
|
+
/** Values waiting for the next allowed send. */
|
|
32
|
+
pending = null;
|
|
33
|
+
inFlight = false;
|
|
34
|
+
holdUntil = 0;
|
|
35
|
+
timer = null;
|
|
36
|
+
/** Bumped by reset(): a send that settles after it writes nothing back. */
|
|
37
|
+
generation = 0;
|
|
38
|
+
constructor(send, options = {}) {
|
|
39
|
+
this.send = send;
|
|
40
|
+
this.burst = Math.max(1, options.burst ?? USER_UPDATE_BURST);
|
|
41
|
+
this.refillMs = (options.windowMs ?? USER_UPDATE_WINDOW_MS) / this.burst;
|
|
42
|
+
this.now = options.now ?? Date.now;
|
|
43
|
+
this.tokens = this.burst;
|
|
44
|
+
this.refilledAt = this.now();
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Resolves once the values are sent, or straight away when nothing changed
|
|
49
|
+
* or they were held for a later send. Rejects only when a send made right
|
|
50
|
+
* now fails with something other than a 429, as `updateUser()` always has.
|
|
51
|
+
*/
|
|
52
|
+
update(attributes) {
|
|
53
|
+
const changes = {};
|
|
54
|
+
for (const [key, value] of Object.entries(attributes)) {
|
|
55
|
+
const known = this.pending && key in this.pending ? this.pending[key] : this.sent[key];
|
|
56
|
+
if (known !== value) changes[key] = value;
|
|
57
|
+
}
|
|
58
|
+
if (Object.keys(changes).length === 0) return Promise.resolve();
|
|
59
|
+
this.pending = {
|
|
60
|
+
...this.pending,
|
|
61
|
+
...changes
|
|
62
|
+
};
|
|
63
|
+
if (this.inFlight || this.now() < this.holdUntil || !this.takeToken()) {
|
|
64
|
+
this.schedule();
|
|
65
|
+
return Promise.resolve();
|
|
66
|
+
}
|
|
67
|
+
return this.sendPending();
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/** The visitor's identity changed (anonymous → signed in): Workstation may hold other values now. */
|
|
71
|
+
forgetSent() {
|
|
72
|
+
this.sent = {};
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** Sign-out or a different user: drop everything waiting so it can't reach the next visitor. */
|
|
76
|
+
reset() {
|
|
77
|
+
this.generation += 1;
|
|
78
|
+
this.clearTimer();
|
|
79
|
+
this.sent = {};
|
|
80
|
+
this.pending = null;
|
|
81
|
+
this.inFlight = false;
|
|
82
|
+
this.holdUntil = 0;
|
|
83
|
+
}
|
|
84
|
+
destroy() {
|
|
85
|
+
this.reset();
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/** The send budget is per device, not per visitor, so reset() leaves it alone. */
|
|
89
|
+
takeToken() {
|
|
90
|
+
this.refill();
|
|
91
|
+
if (this.tokens < 1) return false;
|
|
92
|
+
this.tokens -= 1;
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
refill() {
|
|
96
|
+
const now = this.now();
|
|
97
|
+
if (this.tokens >= this.burst) {
|
|
98
|
+
this.refilledAt = now;
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const earned = Math.floor((now - this.refilledAt) / this.refillMs);
|
|
102
|
+
if (earned <= 0) return;
|
|
103
|
+
this.tokens = Math.min(this.burst, this.tokens + earned);
|
|
104
|
+
this.refilledAt = this.tokens === this.burst ? now : this.refilledAt + earned * this.refillMs;
|
|
105
|
+
}
|
|
106
|
+
async sendPending() {
|
|
107
|
+
const attributes = this.pending ?? {};
|
|
108
|
+
const generation = this.generation;
|
|
109
|
+
this.pending = null;
|
|
110
|
+
this.inFlight = true;
|
|
111
|
+
try {
|
|
112
|
+
await this.send(attributes);
|
|
113
|
+
if (generation !== this.generation) return;
|
|
114
|
+
this.sent = {
|
|
115
|
+
...this.sent,
|
|
116
|
+
...attributes
|
|
117
|
+
};
|
|
118
|
+
} catch (error) {
|
|
119
|
+
if (generation !== this.generation) throw error;
|
|
120
|
+
const status = error instanceof _client.RepzoWidgetError ? error.status : 0;
|
|
121
|
+
const retryable = status === 429 || status === 0 || status >= 500;
|
|
122
|
+
if (retryable) {
|
|
123
|
+
// Newer values that arrived meanwhile win over the ones that failed.
|
|
124
|
+
this.pending = {
|
|
125
|
+
...attributes,
|
|
126
|
+
...(this.pending ?? {})
|
|
127
|
+
};
|
|
128
|
+
const retryAfter = error instanceof _client.RepzoWidgetError ? error.retryAfter : undefined;
|
|
129
|
+
const holdMs = status === 429 && retryAfter && retryAfter > 0 ? retryAfter * 1000 : DEFAULT_HOLD_MS;
|
|
130
|
+
this.holdUntil = Math.max(this.holdUntil, this.now() + holdMs);
|
|
131
|
+
}
|
|
132
|
+
// Rate limited: the values are kept and go out later, so the call succeeded.
|
|
133
|
+
if (status !== 429) throw error;
|
|
134
|
+
} finally {
|
|
135
|
+
if (generation === this.generation) {
|
|
136
|
+
this.inFlight = false;
|
|
137
|
+
if (this.pending) this.schedule();
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
schedule() {
|
|
142
|
+
if (this.timer || this.inFlight || !this.pending) return;
|
|
143
|
+
this.refill();
|
|
144
|
+
const now = this.now();
|
|
145
|
+
const tokenAt = this.tokens >= 1 ? now : this.refilledAt + this.refillMs;
|
|
146
|
+
const delay = Math.max(0, this.holdUntil - now, tokenAt - now);
|
|
147
|
+
this.timer = setTimeout(() => {
|
|
148
|
+
this.timer = null;
|
|
149
|
+
this.flush();
|
|
150
|
+
}, delay);
|
|
151
|
+
}
|
|
152
|
+
flush() {
|
|
153
|
+
if (this.inFlight || !this.pending) return;
|
|
154
|
+
if (this.now() < this.holdUntil || !this.takeToken()) {
|
|
155
|
+
this.schedule();
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
this.sendPending().catch(error => {
|
|
159
|
+
console.warn('[repzo-widget] updateUser failed', error);
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
clearTimer() {
|
|
163
|
+
if (this.timer) clearTimeout(this.timer);
|
|
164
|
+
this.timer = null;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.UserUpdateQueue = UserUpdateQueue;
|
|
168
|
+
//# sourceMappingURL=user-update-queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_client","require","USER_UPDATE_BURST","exports","USER_UPDATE_WINDOW_MS","DEFAULT_HOLD_MS","UserUpdateQueue","sent","pending","inFlight","holdUntil","timer","generation","constructor","send","options","burst","Math","max","refillMs","windowMs","now","Date","tokens","refilledAt","update","attributes","changes","key","value","Object","entries","known","keys","length","Promise","resolve","takeToken","schedule","sendPending","forgetSent","reset","clearTimer","destroy","refill","earned","floor","min","error","status","RepzoWidgetError","retryable","retryAfter","undefined","holdMs","tokenAt","delay","setTimeout","flush","catch","console","warn","clearTimeout"],"sourceRoot":"../../../src","sources":["state/user-update-queue.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -18,6 +18,7 @@ var _useRetainedState = require("../ui/hooks/use-retained-state.js");
|
|
|
18
18
|
var _conversations = require("../ui/utils/conversations.js");
|
|
19
19
|
var _html = require("../ui/utils/html.js");
|
|
20
20
|
var _safeUrl = require("../ui/utils/safe-url.js");
|
|
21
|
+
var _userUpdateQueue = require("./user-update-queue.js");
|
|
21
22
|
/**
|
|
22
23
|
* The widget's single source of truth.
|
|
23
24
|
*
|
|
@@ -29,7 +30,7 @@ var _safeUrl = require("../ui/utils/safe-url.js");
|
|
|
29
30
|
*/
|
|
30
31
|
|
|
31
32
|
/** Sent on every init; must match `package.json` (tests/version.test.js checks). */
|
|
32
|
-
const SDK_VERSION = '@repzo/widget-react-native@1.
|
|
33
|
+
const SDK_VERSION = '@repzo/widget-react-native@1.5.0';
|
|
33
34
|
|
|
34
35
|
/** The platform this session reports — mobile sessions get the Mobile SDKs overrides. */
|
|
35
36
|
function sessionPlatform() {
|
|
@@ -127,6 +128,11 @@ const USER_SCOPED_STATE = {
|
|
|
127
128
|
};
|
|
128
129
|
class WidgetStore {
|
|
129
130
|
client = new _client.WidgetApiClient();
|
|
131
|
+
|
|
132
|
+
/** Paces `updateUser()` — see `boot({ throttleUpdateUser })`. */
|
|
133
|
+
userUpdates = new _userUpdateQueue.UserUpdateQueue(customAttributes => this.client.identify({
|
|
134
|
+
customAttributes
|
|
135
|
+
}));
|
|
130
136
|
events = new _events.EventEmitter();
|
|
131
137
|
push = new _pushNotifications.PushManager(this.client, conversationId => {
|
|
132
138
|
void this.openConversation(conversationId);
|
|
@@ -147,6 +153,8 @@ class WidgetStore {
|
|
|
147
153
|
photoAlbumsEnabled = true;
|
|
148
154
|
/** `boot({ youPrefix })` — "You:" before the visitor's own newest message in the lists. */
|
|
149
155
|
youPrefixEnabled = true;
|
|
156
|
+
/** `boot({ throttleUpdateUser })` — skip unchanged `updateUser()` values and pace the rest. */
|
|
157
|
+
throttleUpdateUserEnabled = true;
|
|
150
158
|
|
|
151
159
|
/** Posts whose view was reported this session (the server also dedupes per day). */
|
|
152
160
|
viewedPostIds = new Set();
|
|
@@ -359,6 +367,9 @@ class WidgetStore {
|
|
|
359
367
|
}
|
|
360
368
|
if (options.photoAlbums !== undefined) this.photoAlbumsEnabled = options.photoAlbums !== false;
|
|
361
369
|
if (options.youPrefix !== undefined) this.youPrefixEnabled = options.youPrefix !== false;
|
|
370
|
+
if (options.throttleUpdateUser !== undefined) {
|
|
371
|
+
this.throttleUpdateUserEnabled = options.throttleUpdateUser !== false;
|
|
372
|
+
}
|
|
362
373
|
if (options.posts !== undefined) {
|
|
363
374
|
const wasEnabled = this.postsEnabled;
|
|
364
375
|
this.postsEnabled = options.posts !== false;
|
|
@@ -529,6 +540,10 @@ class WidgetStore {
|
|
|
529
540
|
const onScreenId = this.state.activeConversationId;
|
|
530
541
|
if (onScreenId && this.isThreadOnScreen(onScreenId)) delete unreadByConversation[onScreenId];
|
|
531
542
|
this.persistUnread(unreadByConversation);
|
|
543
|
+
|
|
544
|
+
// A new identity (anonymous → signed in) may hold other attributes, so
|
|
545
|
+
// nothing is skipped as "already sent" for it.
|
|
546
|
+
if (result.identityId !== this.state.identityId) this.userUpdates.forgetSent();
|
|
532
547
|
this.setState(current => ({
|
|
533
548
|
booted: true,
|
|
534
549
|
loading: false,
|
|
@@ -757,9 +772,13 @@ class WidgetStore {
|
|
|
757
772
|
if (!this.state.booted) await this.bootPromise;
|
|
758
773
|
const customAttributes = sanitizeAttributes(attributes);
|
|
759
774
|
if (Object.keys(customAttributes).length === 0) return;
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
775
|
+
if (!this.throttleUpdateUserEnabled) {
|
|
776
|
+
await this.client.identify({
|
|
777
|
+
customAttributes
|
|
778
|
+
});
|
|
779
|
+
return;
|
|
780
|
+
}
|
|
781
|
+
await this.userUpdates.update(customAttributes);
|
|
763
782
|
}
|
|
764
783
|
|
|
765
784
|
/**
|
|
@@ -771,6 +790,7 @@ class WidgetStore {
|
|
|
771
790
|
this.loggedOut = true;
|
|
772
791
|
this.currentUser = null;
|
|
773
792
|
this.pendingConversationId = null;
|
|
793
|
+
this.userUpdates.reset();
|
|
774
794
|
this.realtime.close();
|
|
775
795
|
this.clearTypingTimer();
|
|
776
796
|
this.resetThreadTracking();
|
|
@@ -802,6 +822,8 @@ class WidgetStore {
|
|
|
802
822
|
}
|
|
803
823
|
async wipeSessionUnguarded() {
|
|
804
824
|
this.realtime.close();
|
|
825
|
+
// Attributes waiting for the old visitor must never reach the next one.
|
|
826
|
+
this.userUpdates.reset();
|
|
805
827
|
this.clearTypingTimer();
|
|
806
828
|
this.resetThreadTracking();
|
|
807
829
|
this.appStateSubscription?.remove();
|
|
@@ -2612,6 +2634,7 @@ class WidgetStore {
|
|
|
2612
2634
|
// ─── Teardown (tests / hot reload) ──────────────────────────────────────
|
|
2613
2635
|
|
|
2614
2636
|
destroy() {
|
|
2637
|
+
this.userUpdates.destroy();
|
|
2615
2638
|
this.clearPostRecheck();
|
|
2616
2639
|
this.clearPostThanks();
|
|
2617
2640
|
this.realtime.close();
|