@repzo/widget-react-native 1.3.1 → 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 +173 -5
- package/README.md +99 -13
- package/lib/commonjs/api/client.js +125 -28
- package/lib/commonjs/api/client.js.map +1 -1
- package/lib/commonjs/attachments/file-size.js +52 -0
- package/lib/commonjs/attachments/file-size.js.map +1 -0
- package/lib/commonjs/attachments/local-previews.js +40 -0
- package/lib/commonjs/attachments/local-previews.js.map +1 -0
- package/lib/commonjs/attachments/pickers.js +20 -29
- package/lib/commonjs/attachments/pickers.js.map +1 -1
- package/lib/commonjs/i18n.js +22 -3
- package/lib/commonjs/i18n.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/locales.js +12 -3
- package/lib/commonjs/locales.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 +303 -33
- package/lib/commonjs/state/widget-store.js.map +1 -1
- package/lib/commonjs/storage.js +3 -1
- package/lib/commonjs/storage.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/ui/WidgetProvider.js +33 -13
- package/lib/commonjs/ui/WidgetProvider.js.map +1 -1
- package/lib/commonjs/ui/components/AttachmentChips.js +109 -40
- package/lib/commonjs/ui/components/AttachmentChips.js.map +1 -1
- package/lib/commonjs/ui/components/ConversationRow.js +65 -10
- package/lib/commonjs/ui/components/ConversationRow.js.map +1 -1
- package/lib/commonjs/ui/components/ImageViewer.js +229 -24
- package/lib/commonjs/ui/components/ImageViewer.js.map +1 -1
- package/lib/commonjs/ui/components/RatingCard.js +5 -2
- package/lib/commonjs/ui/components/RatingCard.js.map +1 -1
- package/lib/commonjs/ui/components/ZoomableImage.js +58 -10
- package/lib/commonjs/ui/components/ZoomableImage.js.map +1 -1
- package/lib/commonjs/ui/hooks/use-retained-state.js +39 -0
- package/lib/commonjs/ui/hooks/use-retained-state.js.map +1 -0
- package/lib/commonjs/ui/screens/chat/ChatView.js +651 -165
- package/lib/commonjs/ui/screens/chat/ChatView.js.map +1 -1
- package/lib/commonjs/ui/screens/chat/ChatView.styles.js +138 -1
- package/lib/commonjs/ui/screens/chat/ChatView.styles.js.map +1 -1
- package/lib/commonjs/ui/screens/conversations/ConversationsList.js +1 -0
- package/lib/commonjs/ui/screens/conversations/ConversationsList.js.map +1 -1
- package/lib/commonjs/ui/screens/home/HomeView.js +38 -55
- package/lib/commonjs/ui/screens/home/HomeView.js.map +1 -1
- package/lib/commonjs/ui/screens/home/HomeView.styles.js +36 -45
- package/lib/commonjs/ui/screens/home/HomeView.styles.js.map +1 -1
- package/lib/commonjs/ui/utils/html.js +13 -0
- package/lib/commonjs/ui/utils/html.js.map +1 -1
- package/lib/commonjs/ui/utils/image-load-queue.js +114 -0
- package/lib/commonjs/ui/utils/image-load-queue.js.map +1 -0
- package/lib/commonjs/ui/utils/inline-attachments.js +88 -0
- package/lib/commonjs/ui/utils/inline-attachments.js.map +1 -0
- package/lib/module/api/client.js +123 -27
- package/lib/module/api/client.js.map +1 -1
- package/lib/module/attachments/file-size.js +47 -0
- package/lib/module/attachments/file-size.js.map +1 -0
- package/lib/module/attachments/local-previews.js +33 -0
- package/lib/module/attachments/local-previews.js.map +1 -0
- package/lib/module/attachments/pickers.js +15 -25
- package/lib/module/attachments/pickers.js.map +1 -1
- package/lib/module/i18n.js +22 -3
- package/lib/module/i18n.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/locales.js +12 -3
- package/lib/module/locales.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 +305 -35
- package/lib/module/state/widget-store.js.map +1 -1
- package/lib/module/storage.js +2 -0
- package/lib/module/storage.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/ui/WidgetProvider.js +33 -13
- package/lib/module/ui/WidgetProvider.js.map +1 -1
- package/lib/module/ui/components/AttachmentChips.js +111 -42
- package/lib/module/ui/components/AttachmentChips.js.map +1 -1
- package/lib/module/ui/components/ConversationRow.js +65 -10
- package/lib/module/ui/components/ConversationRow.js.map +1 -1
- package/lib/module/ui/components/ImageViewer.js +231 -26
- package/lib/module/ui/components/ImageViewer.js.map +1 -1
- package/lib/module/ui/components/RatingCard.js +5 -2
- package/lib/module/ui/components/RatingCard.js.map +1 -1
- package/lib/module/ui/components/ZoomableImage.js +58 -10
- package/lib/module/ui/components/ZoomableImage.js.map +1 -1
- package/lib/module/ui/hooks/use-retained-state.js +34 -0
- package/lib/module/ui/hooks/use-retained-state.js.map +1 -0
- package/lib/module/ui/screens/chat/ChatView.js +655 -169
- package/lib/module/ui/screens/chat/ChatView.js.map +1 -1
- package/lib/module/ui/screens/chat/ChatView.styles.js +140 -2
- package/lib/module/ui/screens/chat/ChatView.styles.js.map +1 -1
- package/lib/module/ui/screens/conversations/ConversationsList.js +1 -0
- package/lib/module/ui/screens/conversations/ConversationsList.js.map +1 -1
- package/lib/module/ui/screens/home/HomeView.js +40 -57
- package/lib/module/ui/screens/home/HomeView.js.map +1 -1
- package/lib/module/ui/screens/home/HomeView.styles.js +36 -45
- package/lib/module/ui/screens/home/HomeView.styles.js.map +1 -1
- package/lib/module/ui/utils/html.js +12 -0
- package/lib/module/ui/utils/html.js.map +1 -1
- package/lib/module/ui/utils/image-load-queue.js +109 -0
- package/lib/module/ui/utils/image-load-queue.js.map +1 -0
- package/lib/module/ui/utils/inline-attachments.js +85 -0
- package/lib/module/ui/utils/inline-attachments.js.map +1 -0
- package/lib/typescript/commonjs/api/client.d.ts +20 -6
- package/lib/typescript/commonjs/api/client.d.ts.map +1 -1
- package/lib/typescript/commonjs/attachments/file-size.d.ts +15 -0
- package/lib/typescript/commonjs/attachments/file-size.d.ts.map +1 -0
- package/lib/typescript/commonjs/attachments/local-previews.d.ts +14 -0
- package/lib/typescript/commonjs/attachments/local-previews.d.ts.map +1 -0
- package/lib/typescript/commonjs/attachments/pickers.d.ts +15 -2
- package/lib/typescript/commonjs/attachments/pickers.d.ts.map +1 -1
- package/lib/typescript/commonjs/i18n.d.ts +12 -3
- package/lib/typescript/commonjs/i18n.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/locales.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 +44 -1
- package/lib/typescript/commonjs/state/widget-store.d.ts.map +1 -1
- package/lib/typescript/commonjs/storage.d.ts +2 -0
- package/lib/typescript/commonjs/storage.d.ts.map +1 -1
- package/lib/typescript/commonjs/types.d.ts +53 -0
- package/lib/typescript/commonjs/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/WidgetProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/AttachmentChips.d.ts +13 -3
- package/lib/typescript/commonjs/ui/components/AttachmentChips.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ConversationRow.d.ts +15 -1
- package/lib/typescript/commonjs/ui/components/ConversationRow.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ImageViewer.d.ts +26 -6
- package/lib/typescript/commonjs/ui/components/ImageViewer.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/RatingCard.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/ZoomableImage.d.ts +10 -1
- package/lib/typescript/commonjs/ui/components/ZoomableImage.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/use-retained-state.d.ts +11 -0
- package/lib/typescript/commonjs/ui/hooks/use-retained-state.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/screens/chat/ChatView.d.ts +4 -4
- package/lib/typescript/commonjs/ui/screens/chat/ChatView.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/chat/ChatView.styles.d.ts +144 -0
- package/lib/typescript/commonjs/ui/screens/chat/ChatView.styles.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/chat/ChatView.types.d.ts +26 -1
- package/lib/typescript/commonjs/ui/screens/chat/ChatView.types.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/conversations/ConversationsList.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/conversations/ConversationsList.types.d.ts +2 -0
- package/lib/typescript/commonjs/ui/screens/conversations/ConversationsList.types.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/home/HomeView.d.ts +7 -5
- package/lib/typescript/commonjs/ui/screens/home/HomeView.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/home/HomeView.styles.d.ts +30 -35
- package/lib/typescript/commonjs/ui/screens/home/HomeView.styles.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/home/HomeView.types.d.ts +5 -6
- package/lib/typescript/commonjs/ui/screens/home/HomeView.types.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/html.d.ts +5 -0
- package/lib/typescript/commonjs/ui/utils/html.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/image-load-queue.d.ts +44 -0
- package/lib/typescript/commonjs/ui/utils/image-load-queue.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/utils/inline-attachments.d.ts +29 -0
- package/lib/typescript/commonjs/ui/utils/inline-attachments.d.ts.map +1 -0
- package/lib/typescript/module/api/client.d.ts +20 -6
- package/lib/typescript/module/api/client.d.ts.map +1 -1
- package/lib/typescript/module/attachments/file-size.d.ts +15 -0
- package/lib/typescript/module/attachments/file-size.d.ts.map +1 -0
- package/lib/typescript/module/attachments/local-previews.d.ts +14 -0
- package/lib/typescript/module/attachments/local-previews.d.ts.map +1 -0
- package/lib/typescript/module/attachments/pickers.d.ts +15 -2
- package/lib/typescript/module/attachments/pickers.d.ts.map +1 -1
- package/lib/typescript/module/i18n.d.ts +12 -3
- package/lib/typescript/module/i18n.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/locales.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 +44 -1
- package/lib/typescript/module/state/widget-store.d.ts.map +1 -1
- package/lib/typescript/module/storage.d.ts +2 -0
- package/lib/typescript/module/storage.d.ts.map +1 -1
- package/lib/typescript/module/types.d.ts +53 -0
- package/lib/typescript/module/types.d.ts.map +1 -1
- package/lib/typescript/module/ui/WidgetProvider.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/AttachmentChips.d.ts +13 -3
- package/lib/typescript/module/ui/components/AttachmentChips.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ConversationRow.d.ts +15 -1
- package/lib/typescript/module/ui/components/ConversationRow.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ImageViewer.d.ts +26 -6
- package/lib/typescript/module/ui/components/ImageViewer.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/RatingCard.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/ZoomableImage.d.ts +10 -1
- package/lib/typescript/module/ui/components/ZoomableImage.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/use-retained-state.d.ts +11 -0
- package/lib/typescript/module/ui/hooks/use-retained-state.d.ts.map +1 -0
- package/lib/typescript/module/ui/screens/chat/ChatView.d.ts +4 -4
- package/lib/typescript/module/ui/screens/chat/ChatView.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/chat/ChatView.styles.d.ts +144 -0
- package/lib/typescript/module/ui/screens/chat/ChatView.styles.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/chat/ChatView.types.d.ts +26 -1
- package/lib/typescript/module/ui/screens/chat/ChatView.types.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/conversations/ConversationsList.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/conversations/ConversationsList.types.d.ts +2 -0
- package/lib/typescript/module/ui/screens/conversations/ConversationsList.types.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/home/HomeView.d.ts +7 -5
- package/lib/typescript/module/ui/screens/home/HomeView.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/home/HomeView.styles.d.ts +30 -35
- package/lib/typescript/module/ui/screens/home/HomeView.styles.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/home/HomeView.types.d.ts +5 -6
- package/lib/typescript/module/ui/screens/home/HomeView.types.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/html.d.ts +5 -0
- package/lib/typescript/module/ui/utils/html.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/image-load-queue.d.ts +44 -0
- package/lib/typescript/module/ui/utils/image-load-queue.d.ts.map +1 -0
- package/lib/typescript/module/ui/utils/inline-attachments.d.ts +29 -0
- package/lib/typescript/module/ui/utils/inline-attachments.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/api/client.ts +149 -38
- package/src/attachments/file-size.ts +42 -0
- package/src/attachments/local-previews.ts +32 -0
- package/src/attachments/pickers.ts +23 -25
- package/src/i18n.ts +22 -3
- package/src/index.tsx +5 -0
- package/src/locales.ts +12 -3
- package/src/state/user-update-queue.ts +178 -0
- package/src/state/widget-store.ts +346 -51
- package/src/storage.ts +2 -0
- package/src/types.ts +53 -0
- package/src/ui/WidgetProvider.tsx +35 -8
- package/src/ui/components/AttachmentChips.tsx +100 -29
- package/src/ui/components/ConversationRow.tsx +90 -9
- package/src/ui/components/ImageViewer.tsx +242 -24
- package/src/ui/components/RatingCard.tsx +5 -2
- package/src/ui/components/ZoomableImage.tsx +58 -5
- package/src/ui/hooks/use-retained-state.ts +35 -0
- package/src/ui/screens/chat/ChatView.styles.ts +139 -1
- package/src/ui/screens/chat/ChatView.tsx +735 -198
- package/src/ui/screens/chat/ChatView.types.ts +26 -1
- package/src/ui/screens/conversations/ConversationsList.tsx +1 -0
- package/src/ui/screens/conversations/ConversationsList.types.ts +2 -0
- package/src/ui/screens/home/HomeView.styles.ts +36 -45
- package/src/ui/screens/home/HomeView.tsx +54 -70
- package/src/ui/screens/home/HomeView.types.ts +5 -6
- package/src/ui/utils/html.ts +26 -0
- package/src/ui/utils/image-load-queue.ts +108 -0
- package/src/ui/utils/inline-attachments.ts +71 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Agent replies with images between their paragraphs. Workstation marks such
|
|
5
|
+
* images `inline` among the message's attachments and keeps an `<img>` for
|
|
6
|
+
* each in the HTML body, where the teammate put it. Same split as the web
|
|
7
|
+
* Messenger, so both show the text and images in the order they were written.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { htmlToMarkdown } from "./html.js";
|
|
11
|
+
|
|
12
|
+
/** Markdown for the bubble to draw, or one attachment. */
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The body and its inline images in order, plus the other attachments
|
|
16
|
+
* (`files`) that show after them. Null when nothing is inline: the bubble then
|
|
17
|
+
* shows the body, followed by every attachment.
|
|
18
|
+
*
|
|
19
|
+
* An `<img>` finds its attachment by the id in its URL. In a body whose
|
|
20
|
+
* images carry no ids, they take the attachments in order instead; in one
|
|
21
|
+
* that does, an image without an id (a logo, an emoji) isn't one of the files
|
|
22
|
+
* and takes nothing. One whose id names no remaining attachment (the same file
|
|
23
|
+
* twice) takes nothing either. Inline attachments with no `<img>` go at the end.
|
|
24
|
+
*/
|
|
25
|
+
export function splitInlineAttachments(body, attachments) {
|
|
26
|
+
const inline = (attachments ?? []).filter(isInline);
|
|
27
|
+
if (!body || inline.length === 0) return null;
|
|
28
|
+
const remaining = [...inline];
|
|
29
|
+
const parts = [];
|
|
30
|
+
const pushText = html => {
|
|
31
|
+
const text = htmlToMarkdown(html);
|
|
32
|
+
if (text) parts.push({
|
|
33
|
+
text
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
const image = /<img\b[^>]*?\bsrc=(["'])(.*?)\1[^>]*>/gi;
|
|
37
|
+
const images = [];
|
|
38
|
+
for (let match = image.exec(body); match; match = image.exec(body)) {
|
|
39
|
+
images.push({
|
|
40
|
+
start: match.index,
|
|
41
|
+
end: image.lastIndex,
|
|
42
|
+
id: mediaId(match[2] ?? '')
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
const byId = images.some(found => found.id !== null);
|
|
46
|
+
let last = 0;
|
|
47
|
+
for (const {
|
|
48
|
+
start,
|
|
49
|
+
end,
|
|
50
|
+
id
|
|
51
|
+
} of images) {
|
|
52
|
+
// Left in the text, which drops it as it always has.
|
|
53
|
+
if (byId && !id) continue;
|
|
54
|
+
pushText(body.slice(last, start));
|
|
55
|
+
last = end;
|
|
56
|
+
const index = id ? remaining.findIndex(attachment => attachment.id === id) : 0;
|
|
57
|
+
if (index < 0) continue;
|
|
58
|
+
const [attachment] = remaining.splice(index, 1);
|
|
59
|
+
if (attachment) parts.push({
|
|
60
|
+
attachment
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
pushText(body.slice(last));
|
|
64
|
+
remaining.forEach(attachment => parts.push({
|
|
65
|
+
attachment
|
|
66
|
+
}));
|
|
67
|
+
return {
|
|
68
|
+
parts,
|
|
69
|
+
files: (attachments ?? []).filter(attachment => !isInline(attachment))
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Workstation's media URLs carry the attachment's id, as
|
|
75
|
+
* `/api/widget/media/<id>?…` (what replies carry) or `/api/media/<id>/download`.
|
|
76
|
+
*/
|
|
77
|
+
function mediaId(src) {
|
|
78
|
+
return /\/api\/(?:widget\/)?media\/([^/?#"'&]+)/.exec(src)?.[1] ?? null;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** Only Workstation's agent replies set `inline`, so it isn't on `WidgetAttachment`. */
|
|
82
|
+
function isInline(attachment) {
|
|
83
|
+
return attachment.inline === true;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=inline-attachments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["htmlToMarkdown","splitInlineAttachments","body","attachments","inline","filter","isInline","length","remaining","parts","pushText","html","text","push","image","images","match","exec","start","index","end","lastIndex","id","mediaId","byId","some","found","last","slice","findIndex","attachment","splice","forEach","files","src"],"sourceRoot":"../../../../src","sources":["ui/utils/inline-attachments.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,9 +12,21 @@ export declare function isTerminalErrorCode(code: string | null | undefined): bo
|
|
|
12
12
|
export declare class RepzoWidgetError extends Error {
|
|
13
13
|
readonly status: number;
|
|
14
14
|
readonly code: RepzoWidgetErrorCode;
|
|
15
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Seconds Workstation asked to wait before trying again, on a 429
|
|
17
|
+
* (`Retry-After`). Undefined when it didn't say.
|
|
18
|
+
* @since 1.5.0
|
|
19
|
+
*/
|
|
20
|
+
readonly retryAfter?: number;
|
|
21
|
+
constructor(message: string, status: number, code?: RepzoWidgetErrorCode, retryAfter?: number);
|
|
16
22
|
/** Builds the error for a non-2xx `{ message, code }` body. */
|
|
17
|
-
static fromResponse(status: number, body: unknown): RepzoWidgetError;
|
|
23
|
+
static fromResponse(status: number, body: unknown, retryAfterHeader?: string | null): RepzoWidgetError;
|
|
24
|
+
}
|
|
25
|
+
/** A file in storage, waiting for the message that names it. */
|
|
26
|
+
export interface UploadedFile {
|
|
27
|
+
uploadToken: string;
|
|
28
|
+
/** When Workstation stops taking `uploadToken`, on this phone's clock (ms). */
|
|
29
|
+
expiresAt: number;
|
|
18
30
|
}
|
|
19
31
|
export declare class WidgetApiClient {
|
|
20
32
|
private baseUrl;
|
|
@@ -125,16 +137,18 @@ export declare class WidgetApiClient {
|
|
|
125
137
|
/**
|
|
126
138
|
* Puts a local file in storage ahead of the message, which then names it by
|
|
127
139
|
* the returned upload token. The target is presigned storage, or a path on
|
|
128
|
-
* the server where its storage can't presign. The
|
|
129
|
-
*
|
|
130
|
-
*
|
|
140
|
+
* the server where its storage can't presign. The upload URL is signed for
|
|
141
|
+
* exactly the size asked for: a `file://` file whose size `expo-file-system`
|
|
142
|
+
* can read streams from disk, anything else is read as a native blob and
|
|
143
|
+
* measured. `signal` cancels the transfer (the visitor removed the file, or
|
|
144
|
+
* left the conversation). Resolves the token and when it expires.
|
|
131
145
|
*/
|
|
132
146
|
uploadAttachment(file: {
|
|
133
147
|
uri: string;
|
|
134
148
|
name: string;
|
|
135
149
|
contentType: string;
|
|
136
150
|
size: number;
|
|
137
|
-
}): Promise<
|
|
151
|
+
}, signal?: AbortSignal): Promise<UploadedFile>;
|
|
138
152
|
listConversations(): Promise<{
|
|
139
153
|
data: Conversation[];
|
|
140
154
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/api/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/api/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local file sizes from the host's `expo-file-system` (optional, like the
|
|
3
|
+
* pickers): read from the file's metadata, never from its contents. Shared by
|
|
4
|
+
* the pickers and the upload client, so the client doesn't pull in pickers.
|
|
5
|
+
*
|
|
6
|
+
* No `react-native` import on purpose: it stays testable in plain Node.
|
|
7
|
+
*/
|
|
8
|
+
/** A positive, finite byte count, or null. */
|
|
9
|
+
export declare function validSize(size: unknown): number | null;
|
|
10
|
+
/**
|
|
11
|
+
* A local file's exact size in bytes, from its metadata without reading it.
|
|
12
|
+
* Null without `expo-file-system`, or when it can't tell.
|
|
13
|
+
*/
|
|
14
|
+
export declare function measureFileSize(uri: string): Promise<number | null>;
|
|
15
|
+
//# sourceMappingURL=file-size.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-size.d.ts","sourceRoot":"","sources":["../../../../src/attachments/file-size.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,8CAA8C;AAC9C,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAEtD;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBzE"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The phone's copy of each file the visitor sent, by the URL of the stored
|
|
3
|
+
* copy that replaced it in the thread. Right after a send the stored copy
|
|
4
|
+
* may not load yet (Workstation can still be storing it), so a photo keeps
|
|
5
|
+
* showing from the phone instead of turning into a file row. Kept in memory
|
|
6
|
+
* only: a later session shows the stored copy.
|
|
7
|
+
*/
|
|
8
|
+
export declare function rememberLocalPreview(storedUrl: string, localUrl: string): void;
|
|
9
|
+
export declare function localPreviewFor(storedUrl: string): string | null;
|
|
10
|
+
/** One that failed to load (the OS cleared the picker's cache): every view moves to the stored copy. */
|
|
11
|
+
export declare function forgetLocalPreview(storedUrl: string): void;
|
|
12
|
+
/** Signing out forgets them: the next visitor on the phone doesn't inherit the paths. */
|
|
13
|
+
export declare function clearLocalPreviews(): void;
|
|
14
|
+
//# sourceMappingURL=local-previews.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-previews.d.ts","sourceRoot":"","sources":["../../../../src/attachments/local-previews.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAM9E;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEhE;AAED,wGAAwG;AACxG,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAE1D;AAED,yFAAyF;AACzF,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Visitor attachments: picking photos/files for `POST /api/widget/messages`.
|
|
3
3
|
*
|
|
4
4
|
* A server that takes uploads names its cap (`maxAttachmentBytes`): a picked
|
|
5
|
-
* file then stays a local URI
|
|
5
|
+
* file then stays a local URI, which the composer uploads right away. An
|
|
6
6
|
* older server only takes files inline, as base64 data URLs within the
|
|
7
7
|
* 1.5 MB / 6 MB caps below.
|
|
8
8
|
*
|
|
@@ -42,10 +42,19 @@ export interface DraftAttachment {
|
|
|
42
42
|
size: number;
|
|
43
43
|
/** `data:<mime>;base64,<…>` for an inline file; empty when `fileUri` is uploaded instead. */
|
|
44
44
|
dataUrl: string;
|
|
45
|
-
/** The local file uploaded
|
|
45
|
+
/** The local file uploaded ahead of the message. */
|
|
46
46
|
fileUri?: string;
|
|
47
47
|
/** What `<Image>` renders locally: the picked file's URI, else the data URL. */
|
|
48
48
|
previewUri: string;
|
|
49
|
+
/**
|
|
50
|
+
* Where `fileUri`'s upload stands. The composer starts it as soon as the
|
|
51
|
+
* file is picked and holds Send until every file is up. Absent for inline files.
|
|
52
|
+
*/
|
|
53
|
+
uploadStatus?: 'uploading' | 'uploaded' | 'failed';
|
|
54
|
+
/** What the message names the uploaded file by, once `uploadStatus` is `uploaded`. */
|
|
55
|
+
uploadToken?: string;
|
|
56
|
+
/** When `uploadToken` stops working, on this phone's clock (ms). */
|
|
57
|
+
uploadExpiresAt?: number;
|
|
49
58
|
}
|
|
50
59
|
/** Why some (or all) of a pick didn't make it into the composer. */
|
|
51
60
|
export type AttachmentProblem = 'tooMany' | 'tooLarge' | 'tooLargeTogether' | 'cameraDenied' | 'failed';
|
|
@@ -56,6 +65,8 @@ export interface PickResult {
|
|
|
56
65
|
}
|
|
57
66
|
/** Set from `boot({ attachments })`; `null` restores auto-detection. */
|
|
58
67
|
export declare function setAttachmentOptions(options: RepzoWidgetAttachmentOptions | null): void;
|
|
68
|
+
/** Whether a picked file starts uploading before Send (`attachments.uploadOnPick`). */
|
|
69
|
+
export declare function uploadsOnPick(): boolean;
|
|
59
70
|
/**
|
|
60
71
|
* The options the attach menu offers, in menu order. Empty means no button:
|
|
61
72
|
* attachments were switched off by the host, or nothing can pick a file.
|
|
@@ -90,4 +101,6 @@ export declare function base64ByteLength(base64: string): number;
|
|
|
90
101
|
/** `1.2 MB`, `340 KB` — for chips; the limits themselves use decimal units too. */
|
|
91
102
|
export declare function formatBytes(bytes: number): string;
|
|
92
103
|
export declare function isImageAttachment(contentType: string | null | undefined): boolean;
|
|
104
|
+
/** The type a file name's extension implies, or null for one this table doesn't know. */
|
|
105
|
+
export declare function guessContentType(nameOrUri: string | null | undefined): string | null;
|
|
93
106
|
//# sourceMappingURL=pickers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pickers.d.ts","sourceRoot":"","sources":["../../../../src/attachments/pickers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAmB,4BAA4B,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"pickers.d.ts","sourceRoot":"","sources":["../../../../src/attachments/pickers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAmB,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAGhG,mEAAmE;AACnE,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,2EAA2E;AAC3E,eAAO,MAAM,oBAAoB,UAAY,CAAC;AAC9C;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,UAAY,CAAC;AAKpD,uEAAuE;AACvE,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,6FAA6F;IAC7F,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC;IACnD,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,oEAAoE;AACpE,MAAM,MAAM,iBAAiB,GACzB,SAAS,GACT,UAAU,GACV,kBAAkB,GAClB,cAAc,GACd,QAAQ,CAAC;AAEb,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,uEAAuE;IACvE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACnC;AAgDD,wEAAwE;AACxE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,4BAA4B,GAAG,IAAI,GAAG,IAAI,CAEvF;AAED,uFAAuF;AACvF,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAID;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,gBAAgB,EAAE,CAWzD;AAOD;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,eAAe,EAAE,EAC1B,WAAW,GAAE,MAAM,GAAG,IAAW,GAChC,OAAO,CAAC,UAAU,CAAC,CAuDrB;AAkPD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAC1D,IAAI,EAAE,MAAM,EACZ,WAAW,GAAE,MAAM,GAAG,IAAW,GAChC,iBAAiB,GAAG,IAAI,CAO1B;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAExE;AAKD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAIpF;AAED,uEAAuE;AACvE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKvD;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAEjF;AAqCD,yFAAyF;AACzF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAGpF"}
|
|
@@ -20,6 +20,10 @@ export declare const DEFAULT_LABELS: {
|
|
|
20
20
|
readonly loadEarlier: "Load earlier messages";
|
|
21
21
|
readonly emptyConversation: "Send a message to start the conversation";
|
|
22
22
|
readonly messagePlaceholder: "Type a message...";
|
|
23
|
+
readonly sendMessage: "Send message";
|
|
24
|
+
readonly jumpToLatest: "Jump to latest messages";
|
|
25
|
+
readonly jumpToLatestNew: "New messages: {count}. Jump to latest";
|
|
26
|
+
readonly morePhotos: "{count} more photos";
|
|
23
27
|
readonly attachFile: "Attach file";
|
|
24
28
|
readonly attachPhotoLibrary: "Photo library";
|
|
25
29
|
readonly attachTakePhoto: "Take photo";
|
|
@@ -29,12 +33,16 @@ export declare const DEFAULT_LABELS: {
|
|
|
29
33
|
readonly attachmentTooMany: "You can attach up to {count} files";
|
|
30
34
|
readonly attachmentsTooLargeTogether: "Attachments are too large to send together — send some in another message";
|
|
31
35
|
readonly attachmentFailed: "Couldn't attach that file";
|
|
36
|
+
readonly attachmentUploading: "Uploading {name}";
|
|
37
|
+
readonly attachmentUploadFailed: "Couldn't upload {name}. Tap to try again";
|
|
38
|
+
readonly attachmentsUploadFailed: "Couldn't upload a file. Tap it to try again";
|
|
32
39
|
readonly openAttachment: "Open {name}";
|
|
33
40
|
readonly voicePlay: "Play voice message";
|
|
34
41
|
readonly voicePause: "Pause voice message";
|
|
35
42
|
readonly voiceSpeed: "Playback speed";
|
|
36
43
|
readonly imageLoadFailed: "Couldn't load this image";
|
|
37
44
|
readonly openImageExternally: "Open image";
|
|
45
|
+
readonly imagePosition: "{current} of {total}";
|
|
38
46
|
readonly cameraPermissionDenied: "Allow camera access in Settings to take a photo";
|
|
39
47
|
readonly cancel: "Cancel";
|
|
40
48
|
readonly failedToSend: "Failed to send";
|
|
@@ -48,13 +56,14 @@ export declare const DEFAULT_LABELS: {
|
|
|
48
56
|
readonly preChatSubtitle: "Let us know a bit about you so we can help you better.";
|
|
49
57
|
readonly preChatSkip: "Skip";
|
|
50
58
|
readonly preChatSubmit: "Start chat";
|
|
51
|
-
readonly
|
|
52
|
-
readonly homeRecentTitle: "Recent";
|
|
53
|
-
readonly homeViewAllCount: "View all ({count})";
|
|
59
|
+
readonly homeRecentMessageTitle: "Recent message";
|
|
54
60
|
readonly homeNoConversations: "Your conversations will show up here";
|
|
55
61
|
readonly homeStatusOnline: "We're online";
|
|
56
62
|
readonly homeStatusAway: "We're away";
|
|
57
63
|
readonly unreadBadge: "{count} unread";
|
|
64
|
+
readonly lastMessagePhoto: "Photo";
|
|
65
|
+
readonly lastMessageFile: "File";
|
|
66
|
+
readonly lastMessageYou: "You: {message}";
|
|
58
67
|
readonly team: "Team";
|
|
59
68
|
readonly home: "Home";
|
|
60
69
|
readonly close: "Close";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../src/i18n.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;AAEnE;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAYxF;AAeD,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAQpG;AAED,eAAO,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../src/i18n.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;AAEnE;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAYxF;AAeD,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAQpG;AAED,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqKjB,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,cAAc,CAAC;AAEnD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAI7F;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAM3E"}
|
|
@@ -43,6 +43,11 @@ export type RepzoWidgetType = {
|
|
|
43
43
|
/**
|
|
44
44
|
* Attach custom attributes to the visitor's identity so agents see them on
|
|
45
45
|
* the conversation (max 30 keys, 64-char keys, 512-char values).
|
|
46
|
+
*
|
|
47
|
+
* Since 1.5.0 calls are paced (see `BootOptions.throttleUpdateUser`):
|
|
48
|
+
* values Workstation already has are skipped, and once more than 20 updates
|
|
49
|
+
* go out in 30 minutes the rest are merged and sent later. Those calls
|
|
50
|
+
* resolve right away. A call sent straight away still rejects when it fails.
|
|
46
51
|
*/
|
|
47
52
|
updateUser(attributes: WidgetCustomAttributes): Promise<void>;
|
|
48
53
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5F,OAAO,KAAK,EACV,WAAW,EACX,yBAAyB,EACzB,sBAAsB,EACtB,eAAe,EACf,UAAU,EACX,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,YAAY,EACV,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,OAAO,EACP,eAAe,EACf,mBAAmB,EACnB,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,4BAA4B,EAC5B,oBAAoB,EACpB,yBAAyB,EACzB,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,UAAU,EACV,WAAW,EACX,eAAe,EACf,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,4EAA4E;AAC5E,oBAAY,KAAK;IACf,IAAI,SAAS;IACb,QAAQ,aAAa;CACtB;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1C;;;OAGG;IACH,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC;;;;;OAKG;IACH,2BAA2B,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7D
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../src/locales.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAE7C,KAAK,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,OAAO,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../../../src/locales.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAE7C,KAAK,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,OAAO,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;AA8IrE,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAU,CAAC;AAErE,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAE3D"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Paces `updateUser()` the way Intercom paces its web `update` (20 calls per
|
|
3
|
+
* 30 minutes), so a host that calls it on a timer or on every GPS fix can't
|
|
4
|
+
* flood Workstation.
|
|
5
|
+
*
|
|
6
|
+
* - Values that match what Workstation already has are not sent again.
|
|
7
|
+
* - Up to `burst` sends go out straight away; after that one more is allowed
|
|
8
|
+
* every `windowMs / burst` (90 s by default).
|
|
9
|
+
* - While a send is in flight, rate limited or out of budget, new values wait
|
|
10
|
+
* and merge into one bag, newest value per key. Nothing is lost: the latest
|
|
11
|
+
* of every key goes out on the next allowed send. Workstation merges the bag
|
|
12
|
+
* into the saved attributes per key, so sending only what changed is enough.
|
|
13
|
+
* - A 429 holds sends until its `Retry-After`. A failed connection or a 5xx
|
|
14
|
+
* keeps the values and tries again later.
|
|
15
|
+
*/
|
|
16
|
+
import type { WidgetCustomAttributes } from '../types';
|
|
17
|
+
export declare const USER_UPDATE_BURST = 20;
|
|
18
|
+
export declare const USER_UPDATE_WINDOW_MS: number;
|
|
19
|
+
type Attributes = WidgetCustomAttributes;
|
|
20
|
+
export interface UserUpdateQueueOptions {
|
|
21
|
+
burst?: number;
|
|
22
|
+
windowMs?: number;
|
|
23
|
+
now?: () => number;
|
|
24
|
+
}
|
|
25
|
+
export declare class UserUpdateQueue {
|
|
26
|
+
private readonly send;
|
|
27
|
+
private readonly burst;
|
|
28
|
+
private readonly refillMs;
|
|
29
|
+
private readonly now;
|
|
30
|
+
private tokens;
|
|
31
|
+
private refilledAt;
|
|
32
|
+
/** Values Workstation accepted for the current identity. */
|
|
33
|
+
private sent;
|
|
34
|
+
/** Values waiting for the next allowed send. */
|
|
35
|
+
private pending;
|
|
36
|
+
private inFlight;
|
|
37
|
+
private holdUntil;
|
|
38
|
+
private timer;
|
|
39
|
+
/** Bumped by reset(): a send that settles after it writes nothing back. */
|
|
40
|
+
private generation;
|
|
41
|
+
constructor(send: (attributes: Attributes) => Promise<void>, options?: UserUpdateQueueOptions);
|
|
42
|
+
/**
|
|
43
|
+
* Resolves once the values are sent, or straight away when nothing changed
|
|
44
|
+
* or they were held for a later send. Rejects only when a send made right
|
|
45
|
+
* now fails with something other than a 429, as `updateUser()` always has.
|
|
46
|
+
*/
|
|
47
|
+
update(attributes: Attributes): Promise<void>;
|
|
48
|
+
/** The visitor's identity changed (anonymous → signed in): Workstation may hold other values now. */
|
|
49
|
+
forgetSent(): void;
|
|
50
|
+
/** Sign-out or a different user: drop everything waiting so it can't reach the next visitor. */
|
|
51
|
+
reset(): void;
|
|
52
|
+
destroy(): void;
|
|
53
|
+
/** The send budget is per device, not per visitor, so reset() leaves it alone. */
|
|
54
|
+
private takeToken;
|
|
55
|
+
private refill;
|
|
56
|
+
private sendPending;
|
|
57
|
+
private schedule;
|
|
58
|
+
private flush;
|
|
59
|
+
private clearTimer;
|
|
60
|
+
}
|
|
61
|
+
export {};
|
|
62
|
+
//# sourceMappingURL=user-update-queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-update-queue.d.ts","sourceRoot":"","sources":["../../../../src/state/user-update-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,qBAAqB,QAAiB,CAAC;AAIpD,KAAK,UAAU,GAAG,sBAAsB,CAAC;AAEzC,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,qBAAa,eAAe;IAkBxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAjBvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IAEnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,4DAA4D;IAC5D,OAAO,CAAC,IAAI,CAAkB;IAC9B,gDAAgD;IAChD,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,KAAK,CAA8C;IAC3D,2EAA2E;IAC3E,OAAO,CAAC,UAAU,CAAK;gBAGJ,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,EAChE,OAAO,GAAE,sBAA2B;IAStC;;;;OAIG;IACH,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB7C,qGAAqG;IACrG,UAAU,IAAI,IAAI;IAIlB,gGAAgG;IAChG,KAAK,IAAI,IAAI;IASb,OAAO,IAAI,IAAI;IAIf,kFAAkF;IAClF,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,MAAM;YAYA,WAAW;IA8BzB,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,KAAK;IAWb,OAAO,CAAC,UAAU;CAInB"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* and the unread count must stay alive while the UI is closed — the modal is
|
|
8
8
|
* only a subscriber.
|
|
9
9
|
*/
|
|
10
|
-
import { WidgetApiClient } from '../api/client';
|
|
10
|
+
import { WidgetApiClient, type UploadedFile } from '../api/client';
|
|
11
11
|
import { EventEmitter } from '../events';
|
|
12
12
|
import { PushManager } from '../push/push-notifications';
|
|
13
13
|
import type { AgentUiAction, BootOptions, ConversationRatingResult, OutgoingAttachment, PostInteractionKind, PostReply, WidgetCustomAttributes, WidgetSpaceType, WidgetState, WidgetUser, WidgetView } from '../types';
|
|
@@ -15,6 +15,8 @@ import type { AgentUiAction, BootOptions, ConversationRatingResult, OutgoingAtta
|
|
|
15
15
|
export declare const POST_THANKS_MS = 1600;
|
|
16
16
|
export declare class WidgetStore {
|
|
17
17
|
readonly client: WidgetApiClient;
|
|
18
|
+
/** Paces `updateUser()` — see `boot({ throttleUpdateUser })`. */
|
|
19
|
+
private readonly userUpdates;
|
|
18
20
|
readonly events: EventEmitter;
|
|
19
21
|
readonly push: PushManager;
|
|
20
22
|
private state;
|
|
@@ -27,6 +29,12 @@ export declare class WidgetStore {
|
|
|
27
29
|
private inAppNotificationsEnabled;
|
|
28
30
|
/** `boot({ posts })` — Send posts over the app. */
|
|
29
31
|
private postsEnabled;
|
|
32
|
+
/** `boot({ photoAlbums })` — a message's photos share one album in the thread. */
|
|
33
|
+
private photoAlbumsEnabled;
|
|
34
|
+
/** `boot({ youPrefix })` — "You:" before the visitor's own newest message in the lists. */
|
|
35
|
+
private youPrefixEnabled;
|
|
36
|
+
/** `boot({ throttleUpdateUser })` — skip unchanged `updateUser()` values and pace the rest. */
|
|
37
|
+
private throttleUpdateUserEnabled;
|
|
30
38
|
/** Posts whose view was reported this session (the server also dedupes per day). */
|
|
31
39
|
private viewedPostIds;
|
|
32
40
|
/** Bumped per post load, so an older answer never lands over a newer one. */
|
|
@@ -67,6 +75,9 @@ export declare class WidgetStore {
|
|
|
67
75
|
private lastTypingPingAt;
|
|
68
76
|
private visitorTypingActive;
|
|
69
77
|
private seenMessageIds;
|
|
78
|
+
/** Who sent each thread's newest message and what it carried; see `withLastMessage`. */
|
|
79
|
+
private lastMessages;
|
|
80
|
+
private lastMessagesLoaded;
|
|
70
81
|
/** Statuses (e.g. "read") that arrived for an id before a send response revealed it. */
|
|
71
82
|
private earlyStatuses;
|
|
72
83
|
/** The agent UI action behind a failed bubble, so Retry runs it again too. */
|
|
@@ -122,6 +133,8 @@ export declare class WidgetStore {
|
|
|
122
133
|
getState: () => WidgetState;
|
|
123
134
|
/** Composer identity: explicit opens reset it; a draft receiving its server ID does not. */
|
|
124
135
|
getThreadGeneration: () => number;
|
|
136
|
+
showsPhotoAlbums: () => boolean;
|
|
137
|
+
showsYouPrefix: () => boolean;
|
|
125
138
|
private setState;
|
|
126
139
|
private serialize;
|
|
127
140
|
/** Queue a requested identity op; anything older becomes stale right away. */
|
|
@@ -246,6 +259,25 @@ export declare class WidgetStore {
|
|
|
246
259
|
private rememberConversationAgent;
|
|
247
260
|
private applyConversationAgent;
|
|
248
261
|
private hydrateConversation;
|
|
262
|
+
/**
|
|
263
|
+
* Workstation's list doesn't say who sent the newest message, and calls one
|
|
264
|
+
* without words "2 attachments". While a row still describes the message
|
|
265
|
+
* this device saw last, both are filled in from it. `snippet` keeps the
|
|
266
|
+
* list's words: apps read it, and the lists draw "Photo" or "File" from
|
|
267
|
+
* `lastMessageAttachment` instead.
|
|
268
|
+
*/
|
|
269
|
+
private withLastMessage;
|
|
270
|
+
/**
|
|
271
|
+
* A send or a streamed message is the newest by arrival, whatever the two
|
|
272
|
+
* clocks say; a history page only replaces something older. A sent message
|
|
273
|
+
* is timed by the phone, which may run ahead of Workstation, so instead a
|
|
274
|
+
* page that has it replaces it: whatever is newest there came after it, and
|
|
275
|
+
* Workstation's own time then stands in for the phone's.
|
|
276
|
+
*/
|
|
277
|
+
private rememberLastMessage;
|
|
278
|
+
private loadLastMessages;
|
|
279
|
+
/** A thread's newest page shows who sent its newest message, so its row can say too. */
|
|
280
|
+
private learnLastMessage;
|
|
249
281
|
/**
|
|
250
282
|
* Normalizes attachments from history pages and live payloads alike. Live
|
|
251
283
|
* payloads may omit `id`/`size`, so the list still gets a stable key.
|
|
@@ -314,6 +346,17 @@ export declare class WidgetStore {
|
|
|
314
346
|
* failed bubble of the same action, since its card stays tappable.
|
|
315
347
|
*/
|
|
316
348
|
sendMessage(body: string, attachments?: OutgoingAttachment[], agentUiAction?: AgentUiAction): Promise<void>;
|
|
349
|
+
/**
|
|
350
|
+
* Puts a picked file in storage while the visitor is still writing, so
|
|
351
|
+
* Send goes out at once. Resolves the token `sendMessage` names it by, and
|
|
352
|
+
* when that token expires.
|
|
353
|
+
*/
|
|
354
|
+
uploadAttachment(file: {
|
|
355
|
+
uri: string;
|
|
356
|
+
name: string;
|
|
357
|
+
contentType: string;
|
|
358
|
+
size: number;
|
|
359
|
+
}, signal?: AbortSignal): Promise<UploadedFile>;
|
|
317
360
|
/**
|
|
318
361
|
* Re-sends a text bubble that failed. It moves to the end of the thread,
|
|
319
362
|
* since it now goes out after anything sent meanwhile. Rejects like
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget-store.d.ts","sourceRoot":"","sources":["../../../../src/state/widget-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAyC,eAAe,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"widget-store.d.ts","sourceRoot":"","sources":["../../../../src/state/widget-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,8 @@ export declare const TOKEN_KEY = "repzo_widget_token";
|
|
|
18
18
|
export declare const USER_KEY = "repzo_widget_user_key";
|
|
19
19
|
export declare const DEVICE_ID_KEY = "repzo_widget_device_id";
|
|
20
20
|
export declare const UNREAD_KEY = "repzo_widget_unread";
|
|
21
|
+
/** Who sent each conversation's newest message; Workstation's list doesn't say. */
|
|
22
|
+
export declare const LAST_MESSAGE_KEY = "repzo_widget_last_message";
|
|
21
23
|
/** Last config received — repaints the real theme instantly on relaunch. */
|
|
22
24
|
/**
|
|
23
25
|
* v2 wraps the config with the channel/baseUrl/platform it came from. v1 held a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEzD,eAAO,MAAM,SAAS,uBAAuB,CAAC;AAC9C,sFAAsF;AACtF,eAAO,MAAM,QAAQ,0BAA0B,CAAC;AAChD,eAAO,MAAM,aAAa,2BAA2B,CAAC;AACtD,eAAO,MAAM,UAAU,wBAAwB,CAAC;AAChD,4EAA4E;AAC5E;;;;GAIG;AACH,eAAO,MAAM,UAAU,2BAA2B,CAAC;AACnD,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AAwCvD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI,GAAG,IAAI,CAEjF;AAED,eAAO,MAAM,OAAO;iBACC,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;iBAS/B,MAAM,SAAS,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;oBAQlC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAO7C,CAAC;AAMF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI,GAAG,IAAI,CAEvF;AAiBD,eAAO,MAAM,aAAa;iBACL,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;iBAkB/B,MAAM,SAAS,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBxD,0EAA0E;oBACpD,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAU7C,CAAC"}
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEzD,eAAO,MAAM,SAAS,uBAAuB,CAAC;AAC9C,sFAAsF;AACtF,eAAO,MAAM,QAAQ,0BAA0B,CAAC;AAChD,eAAO,MAAM,aAAa,2BAA2B,CAAC;AACtD,eAAO,MAAM,UAAU,wBAAwB,CAAC;AAChD,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,8BAA8B,CAAC;AAC5D,4EAA4E;AAC5E;;;;GAIG;AACH,eAAO,MAAM,UAAU,2BAA2B,CAAC;AACnD,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AAwCvD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI,GAAG,IAAI,CAEjF;AAED,eAAO,MAAM,OAAO;iBACC,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;iBAS/B,MAAM,SAAS,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;oBAQlC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAO7C,CAAC;AAMF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI,GAAG,IAAI,CAEvF;AAiBD,eAAO,MAAM,aAAa;iBACL,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;iBAkB/B,MAAM,SAAS,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBxD,0EAA0E;oBACpD,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAU7C,CAAC"}
|