@appsupportkit/support-sdk 0.3.0 → 0.4.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/lib/commonjs/api.js +49 -15
- package/lib/commonjs/api.js.map +1 -1
- package/lib/commonjs/components/BottomSheet.js +1 -1
- package/lib/commonjs/components/BottomSheet.js.map +1 -1
- package/lib/commonjs/components/LauncherButton.js +4 -4
- package/lib/commonjs/components/LauncherButton.js.map +1 -1
- package/lib/commonjs/components/SupportButton.js +123 -97
- package/lib/commonjs/components/SupportButton.js.map +1 -1
- package/lib/commonjs/components/icons.js +81 -110
- package/lib/commonjs/components/icons.js.map +1 -1
- package/lib/commonjs/components/primitives.js +0 -153
- package/lib/commonjs/components/primitives.js.map +1 -1
- package/lib/commonjs/components/screens/ChatScreen.js +487 -0
- package/lib/commonjs/components/screens/ChatScreen.js.map +1 -0
- package/lib/commonjs/i18n/strings/de.js +3 -0
- package/lib/commonjs/i18n/strings/de.js.map +1 -1
- package/lib/commonjs/i18n/strings/en.js +3 -0
- package/lib/commonjs/i18n/strings/en.js.map +1 -1
- package/lib/commonjs/i18n/strings/es.js +3 -0
- package/lib/commonjs/i18n/strings/es.js.map +1 -1
- package/lib/commonjs/i18n/strings/fr.js +3 -0
- package/lib/commonjs/i18n/strings/fr.js.map +1 -1
- package/lib/commonjs/i18n/strings/hi.js +3 -0
- package/lib/commonjs/i18n/strings/hi.js.map +1 -1
- package/lib/commonjs/i18n/strings/it.js +3 -0
- package/lib/commonjs/i18n/strings/it.js.map +1 -1
- package/lib/commonjs/i18n/strings/ja.js +3 -0
- package/lib/commonjs/i18n/strings/ja.js.map +1 -1
- package/lib/commonjs/i18n/strings/ko.js +3 -0
- package/lib/commonjs/i18n/strings/ko.js.map +1 -1
- package/lib/commonjs/i18n/strings/nl.js +3 -0
- package/lib/commonjs/i18n/strings/nl.js.map +1 -1
- package/lib/commonjs/i18n/strings/pl.js +3 -0
- package/lib/commonjs/i18n/strings/pl.js.map +1 -1
- package/lib/commonjs/i18n/strings/pt.js +3 -0
- package/lib/commonjs/i18n/strings/pt.js.map +1 -1
- package/lib/commonjs/i18n/strings/ru.js +3 -0
- package/lib/commonjs/i18n/strings/ru.js.map +1 -1
- package/lib/commonjs/i18n/strings/tr.js +3 -0
- package/lib/commonjs/i18n/strings/tr.js.map +1 -1
- package/lib/commonjs/i18n/strings/zh.js +3 -0
- package/lib/commonjs/i18n/strings/zh.js.map +1 -1
- package/lib/commonjs/index.js +7 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/push.js +78 -3
- package/lib/commonjs/push.js.map +1 -1
- package/lib/commonjs/review.js +54 -0
- package/lib/commonjs/review.js.map +1 -0
- package/lib/commonjs/theme.js +142 -23
- package/lib/commonjs/theme.js.map +1 -1
- package/lib/commonjs/types.js +21 -3
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/useSupportThreads.js +22 -15
- package/lib/commonjs/useSupportThreads.js.map +1 -1
- package/lib/commonjs/utils.js +13 -33
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/commonjs/version.js +13 -0
- package/lib/commonjs/version.js.map +1 -0
- package/lib/module/api.js +46 -13
- package/lib/module/api.js.map +1 -1
- package/lib/module/components/BottomSheet.js +1 -1
- package/lib/module/components/BottomSheet.js.map +1 -1
- package/lib/module/components/LauncherButton.js +5 -5
- package/lib/module/components/LauncherButton.js.map +1 -1
- package/lib/module/components/SupportButton.js +128 -102
- package/lib/module/components/SupportButton.js.map +1 -1
- package/lib/module/components/icons.js +80 -107
- package/lib/module/components/icons.js.map +1 -1
- package/lib/module/components/primitives.js +2 -146
- package/lib/module/components/primitives.js.map +1 -1
- package/lib/module/components/screens/ChatScreen.js +485 -0
- package/lib/module/components/screens/ChatScreen.js.map +1 -0
- package/lib/module/i18n/strings/de.js +3 -0
- package/lib/module/i18n/strings/de.js.map +1 -1
- package/lib/module/i18n/strings/en.js +3 -0
- package/lib/module/i18n/strings/en.js.map +1 -1
- package/lib/module/i18n/strings/es.js +3 -0
- package/lib/module/i18n/strings/es.js.map +1 -1
- package/lib/module/i18n/strings/fr.js +3 -0
- package/lib/module/i18n/strings/fr.js.map +1 -1
- package/lib/module/i18n/strings/hi.js +3 -0
- package/lib/module/i18n/strings/hi.js.map +1 -1
- package/lib/module/i18n/strings/it.js +3 -0
- package/lib/module/i18n/strings/it.js.map +1 -1
- package/lib/module/i18n/strings/ja.js +3 -0
- package/lib/module/i18n/strings/ja.js.map +1 -1
- package/lib/module/i18n/strings/ko.js +3 -0
- package/lib/module/i18n/strings/ko.js.map +1 -1
- package/lib/module/i18n/strings/nl.js +3 -0
- package/lib/module/i18n/strings/nl.js.map +1 -1
- package/lib/module/i18n/strings/pl.js +3 -0
- package/lib/module/i18n/strings/pl.js.map +1 -1
- package/lib/module/i18n/strings/pt.js +3 -0
- package/lib/module/i18n/strings/pt.js.map +1 -1
- package/lib/module/i18n/strings/ru.js +3 -0
- package/lib/module/i18n/strings/ru.js.map +1 -1
- package/lib/module/i18n/strings/tr.js +3 -0
- package/lib/module/i18n/strings/tr.js.map +1 -1
- package/lib/module/i18n/strings/zh.js +3 -0
- package/lib/module/i18n/strings/zh.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/push.js +77 -3
- package/lib/module/push.js.map +1 -1
- package/lib/module/review.js +48 -0
- package/lib/module/review.js.map +1 -0
- package/lib/module/theme.js +141 -23
- package/lib/module/theme.js.map +1 -1
- package/lib/module/types.js +21 -3
- package/lib/module/types.js.map +1 -1
- package/lib/module/useSupportThreads.js +22 -15
- package/lib/module/useSupportThreads.js.map +1 -1
- package/lib/module/utils.js +12 -32
- package/lib/module/utils.js.map +1 -1
- package/lib/module/version.js +9 -0
- package/lib/module/version.js.map +1 -0
- package/lib/typescript/api.d.ts +33 -12
- package/lib/typescript/api.d.ts.map +1 -1
- package/lib/typescript/components/SupportButton.d.ts +2 -2
- package/lib/typescript/components/SupportButton.d.ts.map +1 -1
- package/lib/typescript/components/icons.d.ts +5 -14
- package/lib/typescript/components/icons.d.ts.map +1 -1
- package/lib/typescript/components/primitives.d.ts +0 -31
- package/lib/typescript/components/primitives.d.ts.map +1 -1
- package/lib/typescript/components/screens/ChatScreen.d.ts +21 -0
- package/lib/typescript/components/screens/ChatScreen.d.ts.map +1 -0
- package/lib/typescript/i18n/strings/de.d.ts.map +1 -1
- package/lib/typescript/i18n/strings/en.d.ts +3 -0
- package/lib/typescript/i18n/strings/en.d.ts.map +1 -1
- package/lib/typescript/i18n/strings/es.d.ts.map +1 -1
- package/lib/typescript/i18n/strings/fr.d.ts.map +1 -1
- package/lib/typescript/i18n/strings/hi.d.ts.map +1 -1
- package/lib/typescript/i18n/strings/it.d.ts.map +1 -1
- package/lib/typescript/i18n/strings/ja.d.ts.map +1 -1
- package/lib/typescript/i18n/strings/ko.d.ts.map +1 -1
- package/lib/typescript/i18n/strings/nl.d.ts.map +1 -1
- package/lib/typescript/i18n/strings/pl.d.ts.map +1 -1
- package/lib/typescript/i18n/strings/pt.d.ts.map +1 -1
- package/lib/typescript/i18n/strings/ru.d.ts.map +1 -1
- package/lib/typescript/i18n/strings/tr.d.ts.map +1 -1
- package/lib/typescript/i18n/strings/zh.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +3 -2
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/push.d.ts +14 -2
- package/lib/typescript/push.d.ts.map +1 -1
- package/lib/typescript/review.d.ts +15 -0
- package/lib/typescript/review.d.ts.map +1 -0
- package/lib/typescript/theme.d.ts +23 -5
- package/lib/typescript/theme.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +54 -11
- package/lib/typescript/types.d.ts.map +1 -1
- package/lib/typescript/useSupportThreads.d.ts +9 -3
- package/lib/typescript/useSupportThreads.d.ts.map +1 -1
- package/lib/typescript/utils.d.ts +3 -2
- package/lib/typescript/utils.d.ts.map +1 -1
- package/lib/typescript/version.d.ts +7 -0
- package/lib/typescript/version.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/api.ts +59 -30
- package/src/components/BottomSheet.tsx +1 -1
- package/src/components/LauncherButton.tsx +4 -4
- package/src/components/SupportButton.tsx +140 -111
- package/src/components/icons.tsx +60 -101
- package/src/components/primitives.tsx +1 -163
- package/src/components/screens/ChatScreen.tsx +541 -0
- package/src/i18n/strings/de.ts +3 -0
- package/src/i18n/strings/en.ts +3 -0
- package/src/i18n/strings/es.ts +3 -0
- package/src/i18n/strings/fr.ts +3 -0
- package/src/i18n/strings/hi.ts +3 -0
- package/src/i18n/strings/it.ts +3 -0
- package/src/i18n/strings/ja.ts +3 -0
- package/src/i18n/strings/ko.ts +3 -0
- package/src/i18n/strings/nl.ts +3 -0
- package/src/i18n/strings/pl.ts +3 -0
- package/src/i18n/strings/pt.ts +3 -0
- package/src/i18n/strings/ru.ts +3 -0
- package/src/i18n/strings/tr.ts +3 -0
- package/src/i18n/strings/zh.ts +3 -0
- package/src/index.tsx +5 -0
- package/src/push.ts +100 -2
- package/src/review.ts +54 -0
- package/src/theme.ts +182 -28
- package/src/types.ts +53 -11
- package/src/useSupportThreads.ts +31 -18
- package/src/utils.ts +14 -21
- package/src/version.ts +6 -0
- package/lib/commonjs/components/screens/ComposeScreen.js +0 -219
- package/lib/commonjs/components/screens/ComposeScreen.js.map +0 -1
- package/lib/commonjs/components/screens/HomeScreen.js +0 -334
- package/lib/commonjs/components/screens/HomeScreen.js.map +0 -1
- package/lib/commonjs/components/screens/ThreadScreen.js +0 -339
- package/lib/commonjs/components/screens/ThreadScreen.js.map +0 -1
- package/lib/module/components/screens/ComposeScreen.js +0 -217
- package/lib/module/components/screens/ComposeScreen.js.map +0 -1
- package/lib/module/components/screens/HomeScreen.js +0 -330
- package/lib/module/components/screens/HomeScreen.js.map +0 -1
- package/lib/module/components/screens/ThreadScreen.js +0 -337
- package/lib/module/components/screens/ThreadScreen.js.map +0 -1
- package/lib/typescript/components/screens/ComposeScreen.d.ts +0 -12
- package/lib/typescript/components/screens/ComposeScreen.d.ts.map +0 -1
- package/lib/typescript/components/screens/HomeScreen.d.ts +0 -19
- package/lib/typescript/components/screens/HomeScreen.d.ts.map +0 -1
- package/lib/typescript/components/screens/ThreadScreen.d.ts +0 -12
- package/lib/typescript/components/screens/ThreadScreen.d.ts.map +0 -1
- package/src/components/screens/ComposeScreen.tsx +0 -229
- package/src/components/screens/HomeScreen.tsx +0 -346
- package/src/components/screens/ThreadScreen.tsx +0 -424
package/lib/commonjs/theme.js
CHANGED
|
@@ -5,11 +5,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.resolveTheme = resolveTheme;
|
|
7
7
|
exports.supportRadii = exports.supportLightTheme = exports.supportDarkTheme = void 0;
|
|
8
|
+
exports.themeFor = themeFor;
|
|
8
9
|
var _designTokens = require("@appsupportkit/design-tokens");
|
|
9
10
|
// The SDK consumes the same design tokens as the admin dashboard, so both
|
|
10
11
|
// surfaces look like one product. On top of those it adds the few values
|
|
11
|
-
// that only exist on mobile: sheet/bubble radii
|
|
12
|
-
//
|
|
12
|
+
// that only exist on mobile: sheet/bubble radii, the elevation used by the
|
|
13
|
+
// launcher and the sheet (the web side gets those from CSS), and a re-cut of
|
|
14
|
+
// the surfaces and text ramp for a sheet held at arm's length (see
|
|
15
|
+
// SHEET_OVERRIDES).
|
|
13
16
|
|
|
14
17
|
/** Rounder than the dashboard: touch targets read better with more radius. */
|
|
15
18
|
const supportRadii = exports.supportRadii = {
|
|
@@ -36,7 +39,12 @@ const supportRadii = exports.supportRadii = {
|
|
|
36
39
|
// Color helpers come first: the themes below are built at module load, so
|
|
37
40
|
// anything they reach for has to already be initialized. (A `const` used
|
|
38
41
|
// before its definition survives tsc but lands as `undefined` on Hermes.)
|
|
42
|
+
|
|
39
43
|
const HEX = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i;
|
|
44
|
+
const WHITE = [255, 255, 255];
|
|
45
|
+
/** Foreground for light accents — the dashboard's near-black, not pure black. */
|
|
46
|
+
const INK = '#111113';
|
|
47
|
+
const INK_RGB = [17, 17, 19];
|
|
40
48
|
function parseHex(color) {
|
|
41
49
|
const match = HEX.exec(color.trim());
|
|
42
50
|
const digits = match?.[1];
|
|
@@ -44,10 +52,83 @@ function parseHex(color) {
|
|
|
44
52
|
const hex = digits.length === 3 ? digits.split('').map(c => c + c).join('') : digits;
|
|
45
53
|
return [parseInt(hex.slice(0, 2), 16), parseInt(hex.slice(2, 4), 16), parseInt(hex.slice(4, 6), 16)];
|
|
46
54
|
}
|
|
47
|
-
function
|
|
55
|
+
function toHex(rgb) {
|
|
56
|
+
return `#${rgb.map(c => c.toString(16).padStart(2, '0')).join('').toUpperCase()}`;
|
|
57
|
+
}
|
|
58
|
+
function mixRgb([r, g, b], target, amount) {
|
|
48
59
|
const channel = c => Math.round(c + (target - c) * amount);
|
|
49
|
-
return
|
|
60
|
+
return [channel(r), channel(g), channel(b)];
|
|
61
|
+
}
|
|
62
|
+
function mix(rgb, target, amount) {
|
|
63
|
+
return toHex(mixRgb(rgb, target, amount));
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** WCAG relative luminance. */
|
|
67
|
+
function luminance(rgb) {
|
|
68
|
+
const [r, g, b] = rgb.map(c => {
|
|
69
|
+
const s = c / 255;
|
|
70
|
+
return s <= 0.03928 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4;
|
|
71
|
+
});
|
|
72
|
+
return 0.2126 * r + 0.7152 * g + 0.0722 * b;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** WCAG contrast ratio, 1–21. */
|
|
76
|
+
function contrast(a, b) {
|
|
77
|
+
const [hi, lo] = [luminance(a), luminance(b)].sort((x, y) => y - x);
|
|
78
|
+
return (hi + 0.05) / (lo + 0.05);
|
|
50
79
|
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Nudges `color` toward white (dark theme) or black (light theme) in 5%
|
|
83
|
+
* steps until it reaches `ratio` against every background. The smallest
|
|
84
|
+
* step that works wins, so a brand color stays recognizably itself.
|
|
85
|
+
*/
|
|
86
|
+
function legible(color, backgrounds, ratio, name) {
|
|
87
|
+
const rgb = parseHex(color);
|
|
88
|
+
if (rgb === null) return color;
|
|
89
|
+
const against = backgrounds.map(parseHex).filter(c => c !== null);
|
|
90
|
+
const target = name === 'dark' ? 255 : 0;
|
|
91
|
+
for (let step = 0; step <= 20; step += 1) {
|
|
92
|
+
const candidate = mixRgb(rgb, target, step * 0.05);
|
|
93
|
+
if (against.every(bg => contrast(candidate, bg) >= ratio)) {
|
|
94
|
+
return toHex(candidate);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return name === 'dark' ? '#FFFFFF' : '#000000';
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Where the SDK departs from the dashboard tokens.
|
|
102
|
+
*
|
|
103
|
+
* Dark: the sheet floats over the host app, so it takes an elevated gray the
|
|
104
|
+
* way iOS sheets do, and the cards and bubbles on it step lighter again. On
|
|
105
|
+
* the dashboard's near-black base, cards sat 1.05:1 from the background and
|
|
106
|
+
* the layering disappeared.
|
|
107
|
+
*
|
|
108
|
+
* Both: the text ramp is re-cut so every step clears WCAG AA (4.5:1) on the
|
|
109
|
+
* sheet and on the cards over it. Tertiary carries timestamps and labels at
|
|
110
|
+
* 11–12px and was 3.1:1 (dark) and 2.5:1 (light); secondary moves too, so
|
|
111
|
+
* the two stay a visible step apart.
|
|
112
|
+
*/
|
|
113
|
+
const SHEET_OVERRIDES = {
|
|
114
|
+
dark: {
|
|
115
|
+
sheet: '#161618',
|
|
116
|
+
surface: '#1F1F23',
|
|
117
|
+
surfaceHover: '#26262B',
|
|
118
|
+
surfaceActive: '#2D2D33',
|
|
119
|
+
border: '#2E2E35',
|
|
120
|
+
borderStrong: '#3C3C44',
|
|
121
|
+
textSecondary: '#A3A3AB',
|
|
122
|
+
// 6.5:1 on surface
|
|
123
|
+
textTertiary: '#87878F' // 4.6:1 on surface, 5.1:1 on sheet
|
|
124
|
+
},
|
|
125
|
+
light: {
|
|
126
|
+
sheet: _designTokens.lightColors.bg,
|
|
127
|
+
textSecondary: '#5A5A62',
|
|
128
|
+
// 6.5:1 on sheet
|
|
129
|
+
textTertiary: '#717179' // 4.6:1 on sheet, 4.8:1 on surface
|
|
130
|
+
}
|
|
131
|
+
};
|
|
51
132
|
function shadowsFor(name, accent) {
|
|
52
133
|
const dark = name === 'dark';
|
|
53
134
|
return {
|
|
@@ -94,7 +175,21 @@ function launcherFor(name, accent) {
|
|
|
94
175
|
minimalMark: name === 'dark' && rgb !== null ? mix(rgb, 255, 0.35) : accent
|
|
95
176
|
};
|
|
96
177
|
}
|
|
97
|
-
function buildTheme(name,
|
|
178
|
+
function buildTheme(name, tokens) {
|
|
179
|
+
const base = {
|
|
180
|
+
...tokens,
|
|
181
|
+
...SHEET_OVERRIDES[name]
|
|
182
|
+
};
|
|
183
|
+
// Status tones double as 12px labels, so they get the text bar too.
|
|
184
|
+
const onSheet = [base.sheet, base.surface];
|
|
185
|
+
const colors = {
|
|
186
|
+
...base,
|
|
187
|
+
statusOpen: legible(base.statusOpen, onSheet, 4.5, name),
|
|
188
|
+
statusProgress: legible(base.statusProgress, onSheet, 4.5, name),
|
|
189
|
+
statusResolved: legible(base.statusResolved, onSheet, 4.5, name),
|
|
190
|
+
statusDanger: legible(base.statusDanger, onSheet, 4.5, name),
|
|
191
|
+
accentText: legible(base.accent, onSheet, 4.5, name)
|
|
192
|
+
};
|
|
98
193
|
return {
|
|
99
194
|
name,
|
|
100
195
|
colors,
|
|
@@ -110,39 +205,63 @@ const supportLightTheme = exports.supportLightTheme = buildTheme('light', _desig
|
|
|
110
205
|
|
|
111
206
|
/**
|
|
112
207
|
* Derives the accent family from a single brand color: a pressed shade, the
|
|
113
|
-
* 12% wash used behind chips
|
|
114
|
-
*
|
|
208
|
+
* 12% wash used behind chips, a text-safe variant, and whichever of white or
|
|
209
|
+
* ink reads better on top of it.
|
|
210
|
+
*
|
|
211
|
+
* `adapt` is for a color that has to serve both themes: it is lifted just
|
|
212
|
+
* far enough to read as a fill (3:1, the WCAG bar for UI components) on this
|
|
213
|
+
* theme's sheet — a navy brand would otherwise vanish in dark mode. A color
|
|
214
|
+
* given for this mode specifically is used as is.
|
|
115
215
|
*/
|
|
116
|
-
function withAccent(theme, accent) {
|
|
117
|
-
|
|
118
|
-
|
|
216
|
+
function withAccent(theme, accent, adapt) {
|
|
217
|
+
if (parseHex(accent) === null) return theme;
|
|
218
|
+
const {
|
|
219
|
+
name
|
|
220
|
+
} = theme;
|
|
221
|
+
const fill = adapt ? legible(accent, [theme.colors.sheet], 3, name) : toHex(parseHex(accent));
|
|
222
|
+
const rgb = parseHex(fill);
|
|
119
223
|
const [r, g, b] = rgb;
|
|
120
|
-
|
|
121
|
-
const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
|
|
224
|
+
const accentText = legible(fill, [theme.colors.sheet, theme.colors.surface], 4.5, name);
|
|
122
225
|
const colors = {
|
|
123
226
|
...theme.colors,
|
|
124
|
-
accent,
|
|
125
|
-
accentHover: mix(rgb,
|
|
227
|
+
accent: fill,
|
|
228
|
+
accentHover: mix(rgb, name === 'dark' ? 255 : 0, 0.12),
|
|
126
229
|
accentMuted: `rgba(${r}, ${g}, ${b}, 0.12)`,
|
|
127
|
-
accentForeground:
|
|
128
|
-
|
|
230
|
+
accentForeground: contrast(rgb, WHITE) >= contrast(rgb, INK_RGB) ? '#FFFFFF' : INK,
|
|
231
|
+
accentText,
|
|
232
|
+
statusOpen: accentText,
|
|
129
233
|
statusOpenBg: `rgba(${r}, ${g}, ${b}, 0.10)`,
|
|
130
|
-
focusRing:
|
|
234
|
+
focusRing: fill
|
|
131
235
|
};
|
|
132
236
|
return {
|
|
133
237
|
...theme,
|
|
134
238
|
colors,
|
|
135
|
-
shadows: shadowsFor(
|
|
136
|
-
launcher: launcherFor(
|
|
239
|
+
shadows: shadowsFor(name, fill),
|
|
240
|
+
launcher: launcherFor(name, fill)
|
|
137
241
|
};
|
|
138
242
|
}
|
|
139
243
|
|
|
140
244
|
/**
|
|
141
|
-
*
|
|
142
|
-
*
|
|
245
|
+
* The theme for one resolved mode. `accent` is the color for this mode
|
|
246
|
+
* (already picked from a light/dark pair), and `adapt` says whether it was a
|
|
247
|
+
* single color that has to be made to work here.
|
|
143
248
|
*/
|
|
144
|
-
function
|
|
249
|
+
function themeFor(name, accent, adapt) {
|
|
145
250
|
const base = name === 'light' ? supportLightTheme : supportDarkTheme;
|
|
146
|
-
return
|
|
251
|
+
return accent ? withAccent(base, accent, adapt) : base;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* @param name "light" | "dark" (default dark). SupportButton resolves its
|
|
256
|
+
* "system" default before calling this.
|
|
257
|
+
* @param accentColor Optional brand color: one hex for both modes (adjusted
|
|
258
|
+
* per mode where needed), or a `{ light, dark }` pair used as given.
|
|
259
|
+
*/
|
|
260
|
+
function resolveTheme(name, accentColor) {
|
|
261
|
+
const mode = name === 'light' ? 'light' : 'dark';
|
|
262
|
+
if (typeof accentColor === 'object' && accentColor !== null) {
|
|
263
|
+
return themeFor(mode, accentColor[mode], false);
|
|
264
|
+
}
|
|
265
|
+
return themeFor(mode, accentColor, true);
|
|
147
266
|
}
|
|
148
267
|
//# sourceMappingURL=theme.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_designTokens","require","supportRadii","exports","radii","control","card","cardLg","bubble","bubbleTail","sheet","pill","HEX","parseHex","color","match","exec","trim","digits","undefined","hex","length","split","map","c","join","parseInt","slice","
|
|
1
|
+
{"version":3,"names":["_designTokens","require","supportRadii","exports","radii","control","card","cardLg","bubble","bubbleTail","sheet","pill","HEX","WHITE","INK","INK_RGB","parseHex","color","match","exec","trim","digits","undefined","hex","length","split","map","c","join","parseInt","slice","toHex","rgb","toString","padStart","toUpperCase","mixRgb","r","g","b","target","amount","channel","Math","round","mix","luminance","s","contrast","a","hi","lo","sort","x","y","legible","backgrounds","ratio","name","against","filter","step","candidate","every","bg","SHEET_OVERRIDES","dark","surface","surfaceHover","surfaceActive","border","borderStrong","textSecondary","textTertiary","light","lightColors","shadowsFor","accent","launcher","shadowColor","shadowOpacity","shadowRadius","shadowOffset","width","height","elevation","badge","launcherFor","solidRing","minimalMark","buildTheme","tokens","base","onSheet","colors","statusOpen","statusProgress","statusResolved","statusDanger","accentText","spacing","motion","shadows","supportDarkTheme","darkColors","supportLightTheme","withAccent","theme","adapt","fill","accentHover","accentMuted","accentForeground","statusOpenBg","focusRing","themeFor","resolveTheme","accentColor","mode"],"sourceRoot":"../../src","sources":["theme.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/commonjs/types.js
CHANGED
|
@@ -4,6 +4,21 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.USER_MESSAGE_MIN = exports.USER_MESSAGE_MAX = exports.QUERY_TYPE_LABEL = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* 'support' is the single chat (0.4+). The other three are the typed requests
|
|
9
|
+
* older builds file; their conversations still show in the chat.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/** Shown to the support team, which can filter and message users by it. */
|
|
13
|
+
|
|
14
|
+
/** What the host app asks for. "system" follows the app's light/dark appearance. */
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* A brand color: one hex for both modes, or a pair. A single color is
|
|
18
|
+
* lightened in dark mode (darkened in light) only as far as it takes to
|
|
19
|
+
* stay visible; a pair is used exactly as given.
|
|
20
|
+
*/
|
|
21
|
+
|
|
7
22
|
/**
|
|
8
23
|
* How the launcher renders:
|
|
9
24
|
* solid — accent fill, elevated. The floating action button.
|
|
@@ -11,6 +26,8 @@ exports.USER_MESSAGE_MIN = exports.USER_MESSAGE_MAX = exports.QUERY_TYPE_LABEL =
|
|
|
11
26
|
* minimal — bare mark, no fill or border. Sits in a nav bar.
|
|
12
27
|
*/
|
|
13
28
|
|
|
29
|
+
/** Where a review request's button points; set per app in the dashboard. */
|
|
30
|
+
|
|
14
31
|
/**
|
|
15
32
|
* Note the absence of any admin identity: end users see one support team,
|
|
16
33
|
* not the people staffing it, so the names never leave the server. The
|
|
@@ -25,8 +42,9 @@ exports.USER_MESSAGE_MIN = exports.USER_MESSAGE_MAX = exports.QUERY_TYPE_LABEL =
|
|
|
25
42
|
const QUERY_TYPE_LABEL = exports.QUERY_TYPE_LABEL = {
|
|
26
43
|
feedback: 'Feedback',
|
|
27
44
|
feature_request: 'Feature request',
|
|
28
|
-
bug_report: 'Bug report'
|
|
45
|
+
bug_report: 'Bug report',
|
|
46
|
+
support: 'Support'
|
|
29
47
|
};
|
|
30
|
-
const USER_MESSAGE_MIN = exports.USER_MESSAGE_MIN =
|
|
31
|
-
const USER_MESSAGE_MAX = exports.USER_MESSAGE_MAX =
|
|
48
|
+
const USER_MESSAGE_MIN = exports.USER_MESSAGE_MIN = 1;
|
|
49
|
+
const USER_MESSAGE_MAX = exports.USER_MESSAGE_MAX = 1000;
|
|
32
50
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["QUERY_TYPE_LABEL","exports","feedback","feature_request","bug_report","USER_MESSAGE_MIN","USER_MESSAGE_MAX"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"names":["QUERY_TYPE_LABEL","exports","feedback","feature_request","bug_report","support","USER_MESSAGE_MIN","USER_MESSAGE_MAX"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;;;;;AAGA;AACA;AACA;AACA;;AAEA;;AAKA;;AAEA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;;AA2GA;;AAMA;AACA;AACA;AACA;AACA;;AA0BA;AACA;AACA;AACA;AACA;AACO,MAAMA,gBAA2C,GAAAC,OAAA,CAAAD,gBAAA,GAAG;EACzDE,QAAQ,EAAE,UAAU;EACpBC,eAAe,EAAE,iBAAiB;EAClCC,UAAU,EAAE,YAAY;EACxBC,OAAO,EAAE;AACX,CAAC;AAEM,MAAMC,gBAAgB,GAAAL,OAAA,CAAAK,gBAAA,GAAG,CAAC;AAC1B,MAAMC,gBAAgB,GAAAN,OAAA,CAAAM,gBAAA,GAAG,IAAI","ignoreList":[]}
|
|
@@ -24,11 +24,11 @@ var _unread = require("./unread");
|
|
|
24
24
|
// 3. `mark-read` failures are retried instead of swallowed, and the local
|
|
25
25
|
// watermark holds the UI correct in the meantime.
|
|
26
26
|
|
|
27
|
-
// Poll cadence by context: fast where latency is felt (
|
|
27
|
+
// Poll cadence by context: fast where latency is felt (looking at the chat,
|
|
28
28
|
// waiting for a reply), slow when the sheet is closed — and the idle tick
|
|
29
29
|
// uses the count-only endpoint, so it costs ~18 bytes instead of the full
|
|
30
30
|
// thread list.
|
|
31
|
-
const
|
|
31
|
+
const CHAT_POLL_MS = 5_000;
|
|
32
32
|
const SHEET_POLL_MS = 15_000;
|
|
33
33
|
const IDLE_POLL_MS = exports.IDLE_POLL_MS = 60_000;
|
|
34
34
|
const MIN_POLL_MS = 3_000;
|
|
@@ -67,7 +67,7 @@ function useSupportThreads({
|
|
|
67
67
|
revenuecatId,
|
|
68
68
|
enabled,
|
|
69
69
|
sheetOpen,
|
|
70
|
-
|
|
70
|
+
chatVisible,
|
|
71
71
|
idlePollMs
|
|
72
72
|
}) {
|
|
73
73
|
const [threads, setThreads] = (0, _react.useState)(null);
|
|
@@ -77,6 +77,7 @@ function useSupportThreads({
|
|
|
77
77
|
const [errorKey, setErrorKey] = (0, _react.useState)(null);
|
|
78
78
|
const [serverLanguage, setServerLanguage] = (0, _react.useState)(null);
|
|
79
79
|
const [languageLoaded, setLanguageLoaded] = (0, _react.useState)(false);
|
|
80
|
+
const [store, setStore] = (0, _react.useState)(null);
|
|
80
81
|
const mounted = (0, _react.useRef)(true);
|
|
81
82
|
/** Last server payload, before local read reconciliation. */
|
|
82
83
|
const rawThreads = (0, _react.useRef)(null);
|
|
@@ -85,10 +86,10 @@ function useSupportThreads({
|
|
|
85
86
|
const requestSeq = (0, _react.useRef)(0);
|
|
86
87
|
const appliedSeq = (0, _react.useRef)(0);
|
|
87
88
|
const readEpoch = (0, _react.useRef)(0);
|
|
88
|
-
const
|
|
89
|
+
const chatVisibleRef = (0, _react.useRef)(chatVisible);
|
|
89
90
|
(0, _react.useEffect)(() => {
|
|
90
|
-
|
|
91
|
-
}, [
|
|
91
|
+
chatVisibleRef.current = chatVisible;
|
|
92
|
+
}, [chatVisible]);
|
|
92
93
|
(0, _react.useEffect)(() => {
|
|
93
94
|
mounted.current = true;
|
|
94
95
|
const timers = reads.current;
|
|
@@ -180,6 +181,11 @@ function useSupportThreads({
|
|
|
180
181
|
}
|
|
181
182
|
sendRead(threadId);
|
|
182
183
|
}, [publish, sendRead]);
|
|
184
|
+
|
|
185
|
+
/** Marks every conversation read — the chat shows them all at once. */
|
|
186
|
+
const markAllRead = (0, _react.useCallback)(() => {
|
|
187
|
+
for (const thread of rawThreads.current ?? []) markThreadRead(thread.id);
|
|
188
|
+
}, [markThreadRead]);
|
|
183
189
|
const fetchThreads = (0, _react.useCallback)(async mode => {
|
|
184
190
|
if (!enabled) return;
|
|
185
191
|
const seq = requestSeq.current += 1;
|
|
@@ -201,12 +207,12 @@ function useSupportThreads({
|
|
|
201
207
|
setErrorKey(null);
|
|
202
208
|
setServerLanguage(data.language);
|
|
203
209
|
setLanguageLoaded(true);
|
|
210
|
+
setStore(data.store ?? null);
|
|
204
211
|
publish();
|
|
205
212
|
|
|
206
|
-
// Replies that arrived while the user is
|
|
213
|
+
// Replies that arrived while the user is looking at the chat are
|
|
207
214
|
// read on arrival — otherwise the badge climbed while they read.
|
|
208
|
-
|
|
209
|
-
if (active !== null) markThreadRead(active);
|
|
215
|
+
if (chatVisibleRef.current) markAllRead();
|
|
210
216
|
flushReads();
|
|
211
217
|
} catch (e) {
|
|
212
218
|
if (!mounted.current) return;
|
|
@@ -218,7 +224,7 @@ function useSupportThreads({
|
|
|
218
224
|
if (skeleton) setLoading(false);
|
|
219
225
|
}
|
|
220
226
|
}
|
|
221
|
-
}, [config, enabled, revenuecatId, publish,
|
|
227
|
+
}, [config, enabled, revenuecatId, publish, markAllRead, flushReads]);
|
|
222
228
|
|
|
223
229
|
/** Badge-only refresh — the cheap endpoint, used while idle. */
|
|
224
230
|
const fetchCount = (0, _react.useCallback)(async () => {
|
|
@@ -249,17 +255,17 @@ function useSupportThreads({
|
|
|
249
255
|
if (sheetOpen) void fetchThreads('background');
|
|
250
256
|
}, [sheetOpen, fetchThreads]);
|
|
251
257
|
|
|
252
|
-
// Opening
|
|
258
|
+
// Opening the chat marks everything read immediately, before the next poll.
|
|
253
259
|
(0, _react.useEffect)(() => {
|
|
254
|
-
if (
|
|
255
|
-
}, [
|
|
260
|
+
if (chatVisible) markAllRead();
|
|
261
|
+
}, [chatVisible, markAllRead]);
|
|
256
262
|
|
|
257
263
|
// Cadence follows what the user is looking at; the app returning to the
|
|
258
264
|
// foreground always ticks.
|
|
259
265
|
(0, _react.useEffect)(() => {
|
|
260
266
|
if (!enabled) return;
|
|
261
267
|
const idle = !sheetOpen;
|
|
262
|
-
const intervalMs = idle ? idlePollMs :
|
|
268
|
+
const intervalMs = idle ? idlePollMs : chatVisible ? CHAT_POLL_MS : SHEET_POLL_MS;
|
|
263
269
|
const tick = () => {
|
|
264
270
|
// While a receipt is unconfirmed the count-only endpoint would report
|
|
265
271
|
// replies the user has already read, so pay for the full payload.
|
|
@@ -276,7 +282,7 @@ function useSupportThreads({
|
|
|
276
282
|
if (timer !== null) clearInterval(timer);
|
|
277
283
|
appStateSub.remove();
|
|
278
284
|
};
|
|
279
|
-
}, [enabled, sheetOpen,
|
|
285
|
+
}, [enabled, sheetOpen, chatVisible, idlePollMs, fetchThreads, fetchCount]);
|
|
280
286
|
const refresh = (0, _react.useCallback)(() => {
|
|
281
287
|
void fetchThreads('user');
|
|
282
288
|
}, [fetchThreads]);
|
|
@@ -289,6 +295,7 @@ function useSupportThreads({
|
|
|
289
295
|
errorKey,
|
|
290
296
|
serverLanguage,
|
|
291
297
|
languageLoaded,
|
|
298
|
+
store,
|
|
292
299
|
refresh,
|
|
293
300
|
reload
|
|
294
301
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","_api","_unread","THREAD_POLL_MS","SHEET_POLL_MS","IDLE_POLL_MS","exports","MIN_POLL_MS","MARK_READ_MAX_ATTEMPTS","MARK_READ_BACKOFF_MS","loadErrorKey","e","SupportApiError","offline","status","__DEV__","console","error","useSupportThreads","config","revenuecatId","enabled","sheetOpen","activeThreadId","idlePollMs","threads","setThreads","useState","totalUnread","setTotalUnread","loading","setLoading","refreshing","setRefreshing","errorKey","setErrorKey","serverLanguage","setServerLanguage","languageLoaded","setLanguageLoaded","mounted","useRef","rawThreads","watermarks","Map","reads","requestSeq","appliedSeq","readEpoch","activeThreadIdRef","useEffect","current","timers","attempt","values","timer","clearTimeout","clear","publish","useCallback","raw","reconciled","reconcileThreads","sumUnread","sendRead","threadId","get","inFlight","covers","target","markRead","queryId","then","attempts","delete","catch","setTimeout","flushReads","markThreadRead","thread","find","t","id","latest","latestAdminMessageAt","set","fetchThreads","mode","seq","blank","spinner","skeleton","data","getThreads","pruneWatermarks","language","active","fetchCount","epoch","getUnreadCount","total_unread","idle","intervalMs","tick","size","setInterval","Math","max","appStateSub","AppState","addEventListener","state","clearInterval","remove","refresh","reload"],"sourceRoot":"../../src","sources":["useSupportThreads.ts"],"mappings":";;;;;;;AAcA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,IAAA,GAAAF,OAAA;AASA,IAAAG,OAAA,GAAAH,OAAA;AAzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAoBA;AACA;AACA;AACA;AACA,MAAMI,cAAc,GAAG,KAAK;AAC5B,MAAMC,aAAa,GAAG,MAAM;AACrB,MAAMC,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAG,MAAM;AAClC,MAAME,WAAW,GAAG,KAAK;;AAEzB;AACA;AACA;AACA,MAAMC,sBAAsB,GAAG,CAAC;AAChC,MAAMC,oBAAoB,GAAG,KAAK;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,YAAYA,CAACC,CAAU,EAAa;EAC3C,IAAIA,CAAC,YAAYC,oBAAe,EAAE;IAChC,IAAID,CAAC,CAACE,OAAO,EAAE,OAAO,eAAe;IACrC,IAAIF,CAAC,CAACG,MAAM,KAAK,GAAG,IAAIH,CAAC,CAACG,MAAM,KAAK,GAAG,EAAE;MACxC,IAAIC,OAAO,EAAE;QACXC,OAAO,CAACC,KAAK,CACX,qEAAqE,GACnE,iEAAiE,GACjE,qCACJ,CAAC;MACH;MACA,OAAO,mBAAmB;IAC5B;IACA,IAAIN,CAAC,CAACG,MAAM,KAAK,GAAG,EAAE,OAAO,uBAAuB;EACtD;EACA,OAAO,kBAAkB;AAC3B;AAoCO,SAASI,iBAAiBA,CAAC;EAChCC,MAAM;EACNC,YAAY;EACZC,OAAO;EACPC,SAAS;EACTC,cAAc;EACdC;AASF,CAAC,EAAuB;EACtB,MAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAC,eAAQ,EAAkB,IAAI,CAAC;EAC7D,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAG,IAAAF,eAAQ,EAAC,CAAC,CAAC;EACjD,MAAM,CAACG,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAJ,eAAQ,EAAC,KAAK,CAAC;EAC7C,MAAM,CAACK,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAN,eAAQ,EAAC,KAAK,CAAC;EACnD,MAAM,CAACO,QAAQ,EAAEC,WAAW,CAAC,GAAG,IAAAR,eAAQ,EAAmB,IAAI,CAAC;EAChE,MAAM,CAACS,cAAc,EAAEC,iBAAiB,CAAC,GAAG,IAAAV,eAAQ,EAAgB,IAAI,CAAC;EACzE,MAAM,CAACW,cAAc,EAAEC,iBAAiB,CAAC,GAAG,IAAAZ,eAAQ,EAAC,KAAK,CAAC;EAE3D,MAAMa,OAAO,GAAG,IAAAC,aAAM,EAAC,IAAI,CAAC;EAC5B;EACA,MAAMC,UAAU,GAAG,IAAAD,aAAM,EAAkB,IAAI,CAAC;EAChD,MAAME,UAAU,GAAG,IAAAF,aAAM,EAAiB,IAAIG,GAAG,CAAC,CAAC,CAAC;EACpD,MAAMC,KAAK,GAAG,IAAAJ,aAAM,EAAC,IAAIG,GAAG,CAAsB,CAAC,CAAC;EACpD,MAAME,UAAU,GAAG,IAAAL,aAAM,EAAC,CAAC,CAAC;EAC5B,MAAMM,UAAU,GAAG,IAAAN,aAAM,EAAC,CAAC,CAAC;EAC5B,MAAMO,SAAS,GAAG,IAAAP,aAAM,EAAC,CAAC,CAAC;EAC3B,MAAMQ,iBAAiB,GAAG,IAAAR,aAAM,EAAgBlB,cAAc,CAAC;EAE/D,IAAA2B,gBAAS,EAAC,MAAM;IACdD,iBAAiB,CAACE,OAAO,GAAG5B,cAAc;EAC5C,CAAC,EAAE,CAACA,cAAc,CAAC,CAAC;EAEpB,IAAA2B,gBAAS,EAAC,MAAM;IACdV,OAAO,CAACW,OAAO,GAAG,IAAI;IACtB,MAAMC,MAAM,GAAGP,KAAK,CAACM,OAAO;IAC5B,OAAO,MAAM;MACXX,OAAO,CAACW,OAAO,GAAG,KAAK;MACvB,KAAK,MAAME,OAAO,IAAID,MAAM,CAACE,MAAM,CAAC,CAAC,EAAE;QACrC,IAAID,OAAO,CAACE,KAAK,KAAK,IAAI,EAAEC,YAAY,CAACH,OAAO,CAACE,KAAK,CAAC;MACzD;MACAH,MAAM,CAACK,KAAK,CAAC,CAAC;IAChB,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,OAAO,GAAG,IAAAC,kBAAW,EAAC,MAAM;IAChC,MAAMC,GAAG,GAAGlB,UAAU,CAACS,OAAO;IAC9B,IAAIS,GAAG,KAAK,IAAI,EAAE;IAClB,MAAMC,UAAU,GAAG,IAAAC,wBAAgB,EAACF,GAAG,EAAEjB,UAAU,CAACQ,OAAO,CAAC;IAC5DzB,UAAU,CAACmC,UAAU,CAAC;IACtBhC,cAAc,CAAC,IAAAkC,iBAAS,EAACF,UAAU,CAAC,CAAC;EACvC,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA,MAAMG,QAAQ,GAAG,IAAAL,kBAAW,EACzBM,QAAgB,IAAK;IACpB,MAAMZ,OAAO,GAAGR,KAAK,CAACM,OAAO,CAACe,GAAG,CAACD,QAAQ,CAAC;IAC3C,IAAI,CAACZ,OAAO,IAAIA,OAAO,CAACc,QAAQ,KAAK,IAAI,EAAE;IAC3C,MAAMC,MAAM,GAAGf,OAAO,CAACgB,MAAM;IAC7BhB,OAAO,CAACc,QAAQ,GAAGC,MAAM;IACzBf,OAAO,CAACE,KAAK,GAAG,IAAI;IAEpB,IAAAe,aAAQ,EAACnD,MAAM,EAAE;MAAEoD,OAAO,EAAEN,QAAQ;MAAE7C;IAAa,CAAC,CAAC,CAClDoD,IAAI,CAAC,MAAM;MACV,IAAI,CAAChC,OAAO,CAACW,OAAO,EAAE;MACtB,MAAMA,OAAO,GAAGN,KAAK,CAACM,OAAO,CAACe,GAAG,CAACD,QAAQ,CAAC;MAC3C,IAAI,CAACd,OAAO,EAAE;MACdA,OAAO,CAACgB,QAAQ,GAAG,IAAI;MACvB;MACA;MACA,IAAIhB,OAAO,CAACkB,MAAM,GAAGD,MAAM,EAAE;QAC3BjB,OAAO,CAACsB,QAAQ,GAAG,CAAC;QACpBT,QAAQ,CAACC,QAAQ,CAAC;QAClB;MACF;MACApB,KAAK,CAACM,OAAO,CAACuB,MAAM,CAACT,QAAQ,CAAC;MAC9B;MACA;MACAjB,SAAS,CAACG,OAAO,IAAI,CAAC;IACxB,CAAC,CAAC,CACDwB,KAAK,CAAC,MAAM;MACX,IAAI,CAACnC,OAAO,CAACW,OAAO,EAAE;MACtB,MAAMA,OAAO,GAAGN,KAAK,CAACM,OAAO,CAACe,GAAG,CAACD,QAAQ,CAAC;MAC3C,IAAI,CAACd,OAAO,EAAE;MACdA,OAAO,CAACgB,QAAQ,GAAG,IAAI;MACvBhB,OAAO,CAACsB,QAAQ,IAAI,CAAC;MACrB,IAAItB,OAAO,CAACsB,QAAQ,IAAIjE,sBAAsB,EAAE;MAChD2C,OAAO,CAACI,KAAK,GAAGqB,UAAU,CACxB,MAAMZ,QAAQ,CAACC,QAAQ,CAAC,EACxBxD,oBAAoB,GAAG,CAAC,KAAK0C,OAAO,CAACsB,QAAQ,GAAG,CAAC,CACnD,CAAC;IACH,CAAC,CAAC;EACN,CAAC,EACD,CAACtD,MAAM,EAAEC,YAAY,CACvB,CAAC;;EAED;EACA,MAAMyD,UAAU,GAAG,IAAAlB,kBAAW,EAAC,MAAM;IACnC,KAAK,MAAM,CAACM,QAAQ,EAAEZ,OAAO,CAAC,IAAIR,KAAK,CAACM,OAAO,EAAE;MAC/C,IAAIE,OAAO,CAACc,QAAQ,KAAK,IAAI,IAAId,OAAO,CAACE,KAAK,KAAK,IAAI,EAAE;MACzDF,OAAO,CAACoB,QAAQ,GAAG,CAAC;MACpBT,QAAQ,CAACC,QAAQ,CAAC;IACpB;EACF,CAAC,EAAE,CAACD,QAAQ,CAAC,CAAC;;EAEd;AACF;AACA;AACA;AACA;EACE,MAAMc,cAAc,GAAG,IAAAnB,kBAAW,EAC/BM,QAAgB,IAAK;IACpB,MAAMc,MAAM,GAAGrC,UAAU,CAACS,OAAO,EAAE6B,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,EAAE,KAAKjB,QAAQ,CAAC;IACjE,IAAI,CAACc,MAAM,EAAE;IACb,MAAMI,MAAM,GAAG,IAAAC,4BAAoB,EAACL,MAAM,CAAC;IAC3C,IAAII,MAAM,KAAK,CAAC,EAAE;IAClB,IAAIA,MAAM,KAAKxC,UAAU,CAACQ,OAAO,CAACe,GAAG,CAACD,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;IAEvDtB,UAAU,CAACQ,OAAO,CAACkC,GAAG,CAACpB,QAAQ,EAAEkB,MAAM,CAAC;IACxC;IACAnC,SAAS,CAACG,OAAO,IAAI,CAAC;IACtBO,OAAO,CAAC,CAAC;IAET,MAAML,OAAO,GAAGR,KAAK,CAACM,OAAO,CAACe,GAAG,CAACD,QAAQ,CAAC;IAC3C,IAAIZ,OAAO,EAAEA,OAAO,CAACgB,MAAM,GAAGc,MAAM,CAAC,KAChC;MACHtC,KAAK,CAACM,OAAO,CAACkC,GAAG,CAACpB,QAAQ,EAAE;QAC1BI,MAAM,EAAEc,MAAM;QACdhB,QAAQ,EAAE,IAAI;QACdM,QAAQ,EAAE,CAAC;QACXlB,KAAK,EAAE;MACT,CAAC,CAAC;IACJ;IACAS,QAAQ,CAACC,QAAQ,CAAC;EACpB,CAAC,EACD,CAACP,OAAO,EAAEM,QAAQ,CACpB,CAAC;EAED,MAAMsB,YAAY,GAAG,IAAA3B,kBAAW,EAC9B,MAAO4B,IAAuC,IAAK;IACjD,IAAI,CAAClE,OAAO,EAAE;IACd,MAAMmE,GAAG,GAAI1C,UAAU,CAACK,OAAO,IAAI,CAAE;IACrC;IACA;IACA,MAAMsC,KAAK,GAAG/C,UAAU,CAACS,OAAO,KAAK,IAAI;IACzC,MAAMuC,OAAO,GAAGH,IAAI,KAAK,MAAM,IAAI,CAACE,KAAK;IACzC,MAAME,QAAQ,GAAGJ,IAAI,KAAK,YAAY,IAAIE,KAAK;IAC/C,IAAIC,OAAO,EAAEzD,aAAa,CAAC,IAAI,CAAC;IAChC,IAAI0D,QAAQ,EAAE5D,UAAU,CAAC,IAAI,CAAC;IAE9B,IAAI;MACF,MAAM6D,IAAI,GAAG,MAAM,IAAAC,eAAU,EAAC1E,MAAM,EAAEC,YAAY,CAAC;MACnD,IAAI,CAACoB,OAAO,CAACW,OAAO,EAAE;MACtB;MACA,IAAIqC,GAAG,IAAIzC,UAAU,CAACI,OAAO,EAAE;MAC/BJ,UAAU,CAACI,OAAO,GAAGqC,GAAG;MAExB9C,UAAU,CAACS,OAAO,GAAGyC,IAAI,CAACnE,OAAO;MACjCkB,UAAU,CAACQ,OAAO,GAAG,IAAA2C,uBAAe,EAACnD,UAAU,CAACQ,OAAO,EAAEyC,IAAI,CAACnE,OAAO,CAAC;MACtEU,WAAW,CAAC,IAAI,CAAC;MACjBE,iBAAiB,CAACuD,IAAI,CAACG,QAAQ,CAAC;MAChCxD,iBAAiB,CAAC,IAAI,CAAC;MACvBmB,OAAO,CAAC,CAAC;;MAET;MACA;MACA,MAAMsC,MAAM,GAAG/C,iBAAiB,CAACE,OAAO;MACxC,IAAI6C,MAAM,KAAK,IAAI,EAAElB,cAAc,CAACkB,MAAM,CAAC;MAC3CnB,UAAU,CAAC,CAAC;IACd,CAAC,CAAC,OAAOlE,CAAC,EAAE;MACV,IAAI,CAAC6B,OAAO,CAACW,OAAO,EAAE;MACtB;MACA,IAAIT,UAAU,CAACS,OAAO,KAAK,IAAI,EAAEhB,WAAW,CAACzB,YAAY,CAACC,CAAC,CAAC,CAAC;IAC/D,CAAC,SAAS;MACR,IAAI6B,OAAO,CAACW,OAAO,EAAE;QACnB,IAAIuC,OAAO,EAAEzD,aAAa,CAAC,KAAK,CAAC;QACjC,IAAI0D,QAAQ,EAAE5D,UAAU,CAAC,KAAK,CAAC;MACjC;IACF;EACF,CAAC,EACD,CAACZ,MAAM,EAAEE,OAAO,EAAED,YAAY,EAAEsC,OAAO,EAAEoB,cAAc,EAAED,UAAU,CACrE,CAAC;;EAED;EACA,MAAMoB,UAAU,GAAG,IAAAtC,kBAAW,EAAC,YAAY;IACzC,IAAI,CAACtC,OAAO,EAAE;IACd,MAAMmE,GAAG,GAAI1C,UAAU,CAACK,OAAO,IAAI,CAAE;IACrC,MAAM+C,KAAK,GAAGlD,SAAS,CAACG,OAAO;IAC/B,IAAI;MACF,MAAMyC,IAAI,GAAG,MAAM,IAAAO,mBAAc,EAAChF,MAAM,EAAEC,YAAY,CAAC;MACvD,IAAI,CAACoB,OAAO,CAACW,OAAO,EAAE;MACtB;MACA;MACA,IAAIH,SAAS,CAACG,OAAO,KAAK+C,KAAK,EAAE;MACjC,IAAIV,GAAG,IAAIzC,UAAU,CAACI,OAAO,EAAE;MAC/BJ,UAAU,CAACI,OAAO,GAAGqC,GAAG;MACxB3D,cAAc,CAAC+D,IAAI,CAACQ,YAAY,CAAC;IACnC,CAAC,CAAC,MAAM;MACN;IAAA;EAEJ,CAAC,EAAE,CAACjF,MAAM,EAAEE,OAAO,EAAED,YAAY,CAAC,CAAC;;EAEnC;EACA,IAAA8B,gBAAS,EAAC,MAAM;IACd,KAAKoC,YAAY,CAAC,SAAS,CAAC;EAC9B,CAAC,EAAE,CAACA,YAAY,CAAC,CAAC;;EAElB;EACA,IAAApC,gBAAS,EAAC,MAAM;IACd,IAAI5B,SAAS,EAAE,KAAKgE,YAAY,CAAC,YAAY,CAAC;EAChD,CAAC,EAAE,CAAChE,SAAS,EAAEgE,YAAY,CAAC,CAAC;;EAE7B;EACA,IAAApC,gBAAS,EAAC,MAAM;IACd,IAAI3B,cAAc,KAAK,IAAI,EAAEuD,cAAc,CAACvD,cAAc,CAAC;EAC7D,CAAC,EAAE,CAACA,cAAc,EAAEuD,cAAc,CAAC,CAAC;;EAEpC;EACA;EACA,IAAA5B,gBAAS,EAAC,MAAM;IACd,IAAI,CAAC7B,OAAO,EAAE;IACd,MAAMgF,IAAI,GAAG,CAAC/E,SAAS;IACvB,MAAMgF,UAAU,GAAGD,IAAI,GACnB7E,UAAU,GACVD,cAAc,KAAK,IAAI,GACrBpB,cAAc,GACdC,aAAa;IAEnB,MAAMmG,IAAI,GAAGA,CAAA,KAAM;MACjB;MACA;MACA,IAAIF,IAAI,IAAIxD,KAAK,CAACM,OAAO,CAACqD,IAAI,KAAK,CAAC,EAAE,KAAKP,UAAU,CAAC,CAAC,CAAC,KACnD,KAAKX,YAAY,CAAC,YAAY,CAAC;IACtC,CAAC;;IAED;IACA;IACA,MAAM/B,KAAK,GACT+C,UAAU,GAAG,CAAC,GACVG,WAAW,CAACF,IAAI,EAAEG,IAAI,CAACC,GAAG,CAACL,UAAU,EAAE/F,WAAW,CAAC,CAAC,GACpD,IAAI;IAEV,MAAMqG,WAAW,GAAGC,qBAAQ,CAACC,gBAAgB,CAAC,QAAQ,EAAGC,KAAK,IAAK;MACjE,IAAIA,KAAK,KAAK,QAAQ,EAAER,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,OAAO,MAAM;MACX,IAAIhD,KAAK,KAAK,IAAI,EAAEyD,aAAa,CAACzD,KAAK,CAAC;MACxCqD,WAAW,CAACK,MAAM,CAAC,CAAC;IACtB,CAAC;EACH,CAAC,EAAE,CACD5F,OAAO,EACPC,SAAS,EACTC,cAAc,EACdC,UAAU,EACV8D,YAAY,EACZW,UAAU,CACX,CAAC;EAEF,MAAMiB,OAAO,GAAG,IAAAvD,kBAAW,EAAC,MAAM;IAChC,KAAK2B,YAAY,CAAC,MAAM,CAAC;EAC3B,CAAC,EAAE,CAACA,YAAY,CAAC,CAAC;EAElB,MAAM6B,MAAM,GAAG,IAAAxD,kBAAW,EAAC,MAAM2B,YAAY,CAAC,YAAY,CAAC,EAAE,CAACA,YAAY,CAAC,CAAC;EAE5E,OAAO;IACL7D,OAAO;IACPG,WAAW;IACXE,OAAO;IACPE,UAAU;IACVE,QAAQ;IACRE,cAAc;IACdE,cAAc;IACd4E,OAAO;IACPC;EACF,CAAC;AACH","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_api","_unread","CHAT_POLL_MS","SHEET_POLL_MS","IDLE_POLL_MS","exports","MIN_POLL_MS","MARK_READ_MAX_ATTEMPTS","MARK_READ_BACKOFF_MS","loadErrorKey","e","SupportApiError","offline","status","__DEV__","console","error","useSupportThreads","config","revenuecatId","enabled","sheetOpen","chatVisible","idlePollMs","threads","setThreads","useState","totalUnread","setTotalUnread","loading","setLoading","refreshing","setRefreshing","errorKey","setErrorKey","serverLanguage","setServerLanguage","languageLoaded","setLanguageLoaded","store","setStore","mounted","useRef","rawThreads","watermarks","Map","reads","requestSeq","appliedSeq","readEpoch","chatVisibleRef","useEffect","current","timers","attempt","values","timer","clearTimeout","clear","publish","useCallback","raw","reconciled","reconcileThreads","sumUnread","sendRead","threadId","get","inFlight","covers","target","markRead","queryId","then","attempts","delete","catch","setTimeout","flushReads","markThreadRead","thread","find","t","id","latest","latestAdminMessageAt","set","markAllRead","fetchThreads","mode","seq","blank","spinner","skeleton","data","getThreads","pruneWatermarks","language","fetchCount","epoch","getUnreadCount","total_unread","idle","intervalMs","tick","size","setInterval","Math","max","appStateSub","AppState","addEventListener","state","clearInterval","remove","refresh","reload"],"sourceRoot":"../../src","sources":["useSupportThreads.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/commonjs/utils.js
CHANGED
|
@@ -7,40 +7,11 @@ exports.dayLabel = dayLabel;
|
|
|
7
7
|
exports.formatDate = formatDate;
|
|
8
8
|
exports.formatTime = formatTime;
|
|
9
9
|
exports.isSameDay = isSameDay;
|
|
10
|
-
exports.
|
|
10
|
+
exports.userPlan = userPlan;
|
|
11
11
|
exports.validateProps = validateProps;
|
|
12
12
|
// Dates and times follow the language the user picked, not the device's:
|
|
13
13
|
// a sheet that says "Traduction…" above "2 days ago" reads as broken.
|
|
14
14
|
|
|
15
|
-
/** "2h ago" relative time — mirrors the web dashboard's formatting. */
|
|
16
|
-
function relativeTime(iso, strings) {
|
|
17
|
-
const then = new Date(iso).getTime();
|
|
18
|
-
const seconds = Math.max(0, Math.floor((Date.now() - then) / 1000));
|
|
19
|
-
if (seconds < 60) return strings.t('time.justNow');
|
|
20
|
-
const minutes = Math.floor(seconds / 60);
|
|
21
|
-
if (minutes < 60) return strings.t('time.minutes', {
|
|
22
|
-
count: minutes
|
|
23
|
-
});
|
|
24
|
-
const hours = Math.floor(minutes / 60);
|
|
25
|
-
if (hours < 24) return strings.t('time.hours', {
|
|
26
|
-
count: hours
|
|
27
|
-
});
|
|
28
|
-
const days = Math.floor(hours / 24);
|
|
29
|
-
if (days < 7) return strings.t('time.days', {
|
|
30
|
-
count: days
|
|
31
|
-
});
|
|
32
|
-
const weeks = Math.floor(days / 7);
|
|
33
|
-
if (weeks < 5) return strings.t('time.weeks', {
|
|
34
|
-
count: weeks
|
|
35
|
-
});
|
|
36
|
-
const months = Math.floor(days / 30);
|
|
37
|
-
if (months < 12) return strings.t('time.months', {
|
|
38
|
-
count: months
|
|
39
|
-
});
|
|
40
|
-
return strings.t('time.years', {
|
|
41
|
-
count: Math.floor(days / 365)
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
15
|
function formatDate(iso, strings) {
|
|
45
16
|
return new Date(iso).toLocaleDateString(strings.locale, {
|
|
46
17
|
year: 'numeric',
|
|
@@ -78,6 +49,12 @@ function dayLabel(iso, strings) {
|
|
|
78
49
|
})
|
|
79
50
|
});
|
|
80
51
|
}
|
|
52
|
+
const PLANS = ['free', 'trial', 'pro'];
|
|
53
|
+
|
|
54
|
+
/** The user's plan, reading the deprecated `isPaid` when `plan` is absent. */
|
|
55
|
+
function userPlan(user) {
|
|
56
|
+
return user.plan ?? (user.isPaid ? 'pro' : 'free');
|
|
57
|
+
}
|
|
81
58
|
|
|
82
59
|
/** Dev-mode prop validation with actionable messages. */
|
|
83
60
|
function validateProps(props) {
|
|
@@ -92,13 +69,16 @@ function validateProps(props) {
|
|
|
92
69
|
}
|
|
93
70
|
const user = props.user;
|
|
94
71
|
if (!user || typeof user !== 'object') {
|
|
95
|
-
return 'SupportButton: `user` is required — { name,
|
|
72
|
+
return 'SupportButton: `user` is required — { name, plan, revenuecatId, appVersion }.';
|
|
96
73
|
}
|
|
97
74
|
if (typeof user.name !== 'string' || user.name.length === 0) {
|
|
98
75
|
return 'SupportButton: `user.name` is required (string).';
|
|
99
76
|
}
|
|
100
|
-
if (
|
|
101
|
-
return 'SupportButton: `user.
|
|
77
|
+
if (user.plan !== undefined && !PLANS.includes(user.plan)) {
|
|
78
|
+
return 'SupportButton: `user.plan` must be "free", "trial" or "pro".';
|
|
79
|
+
}
|
|
80
|
+
if (user.plan === undefined && typeof user.isPaid !== 'boolean') {
|
|
81
|
+
return 'SupportButton: `user.plan` is required — "free", "trial" or "pro".';
|
|
102
82
|
}
|
|
103
83
|
if (typeof user.revenuecatId !== 'string' || user.revenuecatId.length === 0) {
|
|
104
84
|
return 'SupportButton: `user.revenuecatId` is required (string) — the RevenueCat app user id.';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["formatDate","iso","strings","Date","toLocaleDateString","locale","year","month","day","formatTime","toLocaleTimeString","hour","minute","isSameDay","a","b","first","second","getFullYear","getMonth","getDate","dayLabel","now","toISOString","t","yesterday","getTime","date","weekday","PLANS","userPlan","user","plan","isPaid","validateProps","props","appName","length","apiKey","supabaseUrl","test","name","undefined","includes","revenuecatId","appVersion"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.SDK_VERSION = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Sent as `x-sdk-version` on every request. The backend uses its presence to
|
|
9
|
+
* tell 0.4+ (one support chat) from older builds still in the App Store, so
|
|
10
|
+
* keep it in step with package.json.
|
|
11
|
+
*/
|
|
12
|
+
const SDK_VERSION = exports.SDK_VERSION = '0.4.0';
|
|
13
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SDK_VERSION","exports"],"sourceRoot":"../../src","sources":["version.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACO,MAAMA,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,OAAO","ignoreList":[]}
|