@appsupportkit/support-sdk 0.1.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/lib/commonjs/api.js +17 -2
  2. package/lib/commonjs/api.js.map +1 -1
  3. package/lib/commonjs/components/BottomSheet.js +67 -47
  4. package/lib/commonjs/components/BottomSheet.js.map +1 -1
  5. package/lib/commonjs/components/LauncherButton.js +177 -0
  6. package/lib/commonjs/components/LauncherButton.js.map +1 -0
  7. package/lib/commonjs/components/SupportButton.js +168 -190
  8. package/lib/commonjs/components/SupportButton.js.map +1 -1
  9. package/lib/commonjs/components/icons.js +110 -23
  10. package/lib/commonjs/components/icons.js.map +1 -1
  11. package/lib/commonjs/components/primitives.js +191 -44
  12. package/lib/commonjs/components/primitives.js.map +1 -1
  13. package/lib/commonjs/components/screens/ComposeScreen.js +108 -60
  14. package/lib/commonjs/components/screens/ComposeScreen.js.map +1 -1
  15. package/lib/commonjs/components/screens/HomeScreen.js +221 -118
  16. package/lib/commonjs/components/screens/HomeScreen.js.map +1 -1
  17. package/lib/commonjs/components/screens/LanguageScreen.js +150 -0
  18. package/lib/commonjs/components/screens/LanguageScreen.js.map +1 -0
  19. package/lib/commonjs/components/screens/ThreadScreen.js +237 -111
  20. package/lib/commonjs/components/screens/ThreadScreen.js.map +1 -1
  21. package/lib/commonjs/i18n/index.js +101 -0
  22. package/lib/commonjs/i18n/index.js.map +1 -0
  23. package/lib/commonjs/i18n/languages.js +95 -0
  24. package/lib/commonjs/i18n/languages.js.map +1 -0
  25. package/lib/commonjs/i18n/strings/de.js +72 -0
  26. package/lib/commonjs/i18n/strings/de.js.map +1 -0
  27. package/lib/commonjs/i18n/strings/en.js +88 -0
  28. package/lib/commonjs/i18n/strings/en.js.map +1 -0
  29. package/lib/commonjs/i18n/strings/es.js +72 -0
  30. package/lib/commonjs/i18n/strings/es.js.map +1 -0
  31. package/lib/commonjs/i18n/strings/fr.js +72 -0
  32. package/lib/commonjs/i18n/strings/fr.js.map +1 -0
  33. package/lib/commonjs/i18n/strings/hi.js +72 -0
  34. package/lib/commonjs/i18n/strings/hi.js.map +1 -0
  35. package/lib/commonjs/i18n/strings/it.js +72 -0
  36. package/lib/commonjs/i18n/strings/it.js.map +1 -0
  37. package/lib/commonjs/i18n/strings/ja.js +72 -0
  38. package/lib/commonjs/i18n/strings/ja.js.map +1 -0
  39. package/lib/commonjs/i18n/strings/ko.js +72 -0
  40. package/lib/commonjs/i18n/strings/ko.js.map +1 -0
  41. package/lib/commonjs/i18n/strings/nl.js +72 -0
  42. package/lib/commonjs/i18n/strings/nl.js.map +1 -0
  43. package/lib/commonjs/i18n/strings/pl.js +72 -0
  44. package/lib/commonjs/i18n/strings/pl.js.map +1 -0
  45. package/lib/commonjs/i18n/strings/pt.js +72 -0
  46. package/lib/commonjs/i18n/strings/pt.js.map +1 -0
  47. package/lib/commonjs/i18n/strings/ru.js +72 -0
  48. package/lib/commonjs/i18n/strings/ru.js.map +1 -0
  49. package/lib/commonjs/i18n/strings/tr.js +72 -0
  50. package/lib/commonjs/i18n/strings/tr.js.map +1 -0
  51. package/lib/commonjs/i18n/strings/zh.js +72 -0
  52. package/lib/commonjs/i18n/strings/zh.js.map +1 -0
  53. package/lib/commonjs/index.js +31 -0
  54. package/lib/commonjs/index.js.map +1 -1
  55. package/lib/commonjs/theme.js +136 -17
  56. package/lib/commonjs/theme.js.map +1 -1
  57. package/lib/commonjs/types.js +18 -0
  58. package/lib/commonjs/types.js.map +1 -1
  59. package/lib/commonjs/unread.js +92 -0
  60. package/lib/commonjs/unread.js.map +1 -0
  61. package/lib/commonjs/useSupportThreads.js +296 -0
  62. package/lib/commonjs/useSupportThreads.js.map +1 -0
  63. package/lib/commonjs/utils.js +58 -10
  64. package/lib/commonjs/utils.js.map +1 -1
  65. package/lib/module/api.js +16 -2
  66. package/lib/module/api.js.map +1 -1
  67. package/lib/module/components/BottomSheet.js +68 -48
  68. package/lib/module/components/BottomSheet.js.map +1 -1
  69. package/lib/module/components/LauncherButton.js +172 -0
  70. package/lib/module/components/LauncherButton.js.map +1 -0
  71. package/lib/module/components/SupportButton.js +172 -194
  72. package/lib/module/components/SupportButton.js.map +1 -1
  73. package/lib/module/components/icons.js +107 -22
  74. package/lib/module/components/icons.js.map +1 -1
  75. package/lib/module/components/primitives.js +187 -45
  76. package/lib/module/components/primitives.js.map +1 -1
  77. package/lib/module/components/screens/ComposeScreen.js +114 -64
  78. package/lib/module/components/screens/ComposeScreen.js.map +1 -1
  79. package/lib/module/components/screens/HomeScreen.js +224 -121
  80. package/lib/module/components/screens/HomeScreen.js.map +1 -1
  81. package/lib/module/components/screens/LanguageScreen.js +147 -0
  82. package/lib/module/components/screens/LanguageScreen.js.map +1 -0
  83. package/lib/module/components/screens/ThreadScreen.js +243 -115
  84. package/lib/module/components/screens/ThreadScreen.js.map +1 -1
  85. package/lib/module/i18n/index.js +56 -0
  86. package/lib/module/i18n/index.js.map +1 -0
  87. package/lib/module/i18n/languages.js +88 -0
  88. package/lib/module/i18n/languages.js.map +1 -0
  89. package/lib/module/i18n/strings/de.js +68 -0
  90. package/lib/module/i18n/strings/de.js.map +1 -0
  91. package/lib/module/i18n/strings/en.js +84 -0
  92. package/lib/module/i18n/strings/en.js.map +1 -0
  93. package/lib/module/i18n/strings/es.js +68 -0
  94. package/lib/module/i18n/strings/es.js.map +1 -0
  95. package/lib/module/i18n/strings/fr.js +68 -0
  96. package/lib/module/i18n/strings/fr.js.map +1 -0
  97. package/lib/module/i18n/strings/hi.js +68 -0
  98. package/lib/module/i18n/strings/hi.js.map +1 -0
  99. package/lib/module/i18n/strings/it.js +68 -0
  100. package/lib/module/i18n/strings/it.js.map +1 -0
  101. package/lib/module/i18n/strings/ja.js +68 -0
  102. package/lib/module/i18n/strings/ja.js.map +1 -0
  103. package/lib/module/i18n/strings/ko.js +68 -0
  104. package/lib/module/i18n/strings/ko.js.map +1 -0
  105. package/lib/module/i18n/strings/nl.js +68 -0
  106. package/lib/module/i18n/strings/nl.js.map +1 -0
  107. package/lib/module/i18n/strings/pl.js +68 -0
  108. package/lib/module/i18n/strings/pl.js.map +1 -0
  109. package/lib/module/i18n/strings/pt.js +68 -0
  110. package/lib/module/i18n/strings/pt.js.map +1 -0
  111. package/lib/module/i18n/strings/ru.js +68 -0
  112. package/lib/module/i18n/strings/ru.js.map +1 -0
  113. package/lib/module/i18n/strings/tr.js +68 -0
  114. package/lib/module/i18n/strings/tr.js.map +1 -0
  115. package/lib/module/i18n/strings/zh.js +68 -0
  116. package/lib/module/i18n/strings/zh.js.map +1 -0
  117. package/lib/module/index.js +1 -0
  118. package/lib/module/index.js.map +1 -1
  119. package/lib/module/theme.js +135 -16
  120. package/lib/module/theme.js.map +1 -1
  121. package/lib/module/types.js +18 -0
  122. package/lib/module/types.js.map +1 -1
  123. package/lib/module/unread.js +83 -0
  124. package/lib/module/unread.js.map +1 -0
  125. package/lib/module/useSupportThreads.js +291 -0
  126. package/lib/module/useSupportThreads.js.map +1 -0
  127. package/lib/module/utils.js +55 -10
  128. package/lib/module/utils.js.map +1 -1
  129. package/lib/typescript/api.d.ts +9 -0
  130. package/lib/typescript/api.d.ts.map +1 -1
  131. package/lib/typescript/components/BottomSheet.d.ts.map +1 -1
  132. package/lib/typescript/components/LauncherButton.d.ts +14 -0
  133. package/lib/typescript/components/LauncherButton.d.ts.map +1 -0
  134. package/lib/typescript/components/SupportButton.d.ts +3 -3
  135. package/lib/typescript/components/SupportButton.d.ts.map +1 -1
  136. package/lib/typescript/components/icons.d.ts +18 -2
  137. package/lib/typescript/components/icons.d.ts.map +1 -1
  138. package/lib/typescript/components/primitives.d.ts +42 -7
  139. package/lib/typescript/components/primitives.d.ts.map +1 -1
  140. package/lib/typescript/components/screens/ComposeScreen.d.ts +3 -1
  141. package/lib/typescript/components/screens/ComposeScreen.d.ts.map +1 -1
  142. package/lib/typescript/components/screens/HomeScreen.d.ts +8 -2
  143. package/lib/typescript/components/screens/HomeScreen.d.ts.map +1 -1
  144. package/lib/typescript/components/screens/LanguageScreen.d.ts +30 -0
  145. package/lib/typescript/components/screens/LanguageScreen.d.ts.map +1 -0
  146. package/lib/typescript/components/screens/ThreadScreen.d.ts +3 -1
  147. package/lib/typescript/components/screens/ThreadScreen.d.ts.map +1 -1
  148. package/lib/typescript/i18n/index.d.ts +15 -0
  149. package/lib/typescript/i18n/index.d.ts.map +1 -0
  150. package/lib/typescript/i18n/languages.d.ts +36 -0
  151. package/lib/typescript/i18n/languages.d.ts.map +1 -0
  152. package/lib/typescript/i18n/strings/de.d.ts +3 -0
  153. package/lib/typescript/i18n/strings/de.d.ts.map +1 -0
  154. package/lib/typescript/i18n/strings/en.d.ts +83 -0
  155. package/lib/typescript/i18n/strings/en.d.ts.map +1 -0
  156. package/lib/typescript/i18n/strings/es.d.ts +3 -0
  157. package/lib/typescript/i18n/strings/es.d.ts.map +1 -0
  158. package/lib/typescript/i18n/strings/fr.d.ts +3 -0
  159. package/lib/typescript/i18n/strings/fr.d.ts.map +1 -0
  160. package/lib/typescript/i18n/strings/hi.d.ts +3 -0
  161. package/lib/typescript/i18n/strings/hi.d.ts.map +1 -0
  162. package/lib/typescript/i18n/strings/it.d.ts +3 -0
  163. package/lib/typescript/i18n/strings/it.d.ts.map +1 -0
  164. package/lib/typescript/i18n/strings/ja.d.ts +3 -0
  165. package/lib/typescript/i18n/strings/ja.d.ts.map +1 -0
  166. package/lib/typescript/i18n/strings/ko.d.ts +3 -0
  167. package/lib/typescript/i18n/strings/ko.d.ts.map +1 -0
  168. package/lib/typescript/i18n/strings/nl.d.ts +3 -0
  169. package/lib/typescript/i18n/strings/nl.d.ts.map +1 -0
  170. package/lib/typescript/i18n/strings/pl.d.ts +3 -0
  171. package/lib/typescript/i18n/strings/pl.d.ts.map +1 -0
  172. package/lib/typescript/i18n/strings/pt.d.ts +3 -0
  173. package/lib/typescript/i18n/strings/pt.d.ts.map +1 -0
  174. package/lib/typescript/i18n/strings/ru.d.ts +3 -0
  175. package/lib/typescript/i18n/strings/ru.d.ts.map +1 -0
  176. package/lib/typescript/i18n/strings/tr.d.ts +3 -0
  177. package/lib/typescript/i18n/strings/tr.d.ts.map +1 -0
  178. package/lib/typescript/i18n/strings/zh.d.ts +3 -0
  179. package/lib/typescript/i18n/strings/zh.d.ts.map +1 -0
  180. package/lib/typescript/index.d.ts +2 -1
  181. package/lib/typescript/index.d.ts.map +1 -1
  182. package/lib/typescript/theme.d.ts +44 -3
  183. package/lib/typescript/theme.d.ts.map +1 -1
  184. package/lib/typescript/types.d.ts +54 -2
  185. package/lib/typescript/types.d.ts.map +1 -1
  186. package/lib/typescript/unread.d.ts +22 -0
  187. package/lib/typescript/unread.d.ts.map +1 -0
  188. package/lib/typescript/useSupportThreads.d.ts +38 -0
  189. package/lib/typescript/useSupportThreads.d.ts.map +1 -0
  190. package/lib/typescript/utils.d.ts +8 -2
  191. package/lib/typescript/utils.d.ts.map +1 -1
  192. package/package.json +3 -3
  193. package/src/api.ts +24 -1
  194. package/src/components/BottomSheet.tsx +61 -43
  195. package/src/components/LauncherButton.tsx +217 -0
  196. package/src/components/SupportButton.tsx +195 -210
  197. package/src/components/icons.tsx +113 -19
  198. package/src/components/primitives.tsx +230 -39
  199. package/src/components/screens/ComposeScreen.tsx +129 -63
  200. package/src/components/screens/HomeScreen.tsx +230 -120
  201. package/src/components/screens/LanguageScreen.tsx +172 -0
  202. package/src/components/screens/ThreadScreen.tsx +319 -122
  203. package/src/i18n/index.ts +81 -0
  204. package/src/i18n/languages.ts +106 -0
  205. package/src/i18n/strings/de.ts +78 -0
  206. package/src/i18n/strings/en.ts +94 -0
  207. package/src/i18n/strings/es.ts +77 -0
  208. package/src/i18n/strings/fr.ts +78 -0
  209. package/src/i18n/strings/hi.ts +77 -0
  210. package/src/i18n/strings/it.ts +77 -0
  211. package/src/i18n/strings/ja.ts +77 -0
  212. package/src/i18n/strings/ko.ts +76 -0
  213. package/src/i18n/strings/nl.ts +77 -0
  214. package/src/i18n/strings/pl.ts +77 -0
  215. package/src/i18n/strings/pt.ts +77 -0
  216. package/src/i18n/strings/ru.ts +77 -0
  217. package/src/i18n/strings/tr.ts +77 -0
  218. package/src/i18n/strings/zh.ts +75 -0
  219. package/src/index.tsx +9 -0
  220. package/src/theme.ts +165 -18
  221. package/src/types.ts +56 -2
  222. package/src/unread.ts +91 -0
  223. package/src/useSupportThreads.ts +392 -0
  224. package/src/utils.ts +48 -10
@@ -7,32 +7,27 @@ exports.SupportButton = SupportButton;
7
7
  var _react = require("react");
8
8
  var _reactNative = require("react-native");
9
9
  var _api = require("../api");
10
+ var _i18n = require("../i18n");
11
+ var _languages = require("../i18n/languages");
10
12
  var _push = require("../push");
11
13
  var _theme = require("../theme");
14
+ var _useSupportThreads = require("../useSupportThreads");
12
15
  var _utils = require("../utils");
13
16
  var _BottomSheet = require("./BottomSheet");
14
- var _icons = require("./icons");
17
+ var _LauncherButton = require("./LauncherButton");
15
18
  var _ComposeScreen = require("./screens/ComposeScreen");
16
19
  var _HomeScreen = require("./screens/HomeScreen");
20
+ var _LanguageScreen = require("./screens/LanguageScreen");
17
21
  var _ThreadScreen = require("./screens/ThreadScreen");
18
22
  var _jsxRuntime = require("react/jsx-runtime");
19
- // Poll cadence by context: fast where latency is felt (staring at a thread
20
- // waiting for a reply), slow when the sheet is closed — and the idle tick
21
- // uses the count-only endpoint, so it costs ~18 bytes instead of the full
22
- // thread list.
23
- const THREAD_POLL_MS = 5_000;
24
- const SHEET_POLL_MS = 15_000;
25
- const IDLE_POLL_MS = 60_000;
26
- const MIN_POLL_MS = 3_000;
27
-
28
23
  /**
29
- * The single entry point of the SDK: a button with an unread badge that
30
- * opens the support bottom sheet. Polls get-threads on mount and whenever
31
- * the sheet opens (no websockets in v1).
24
+ * The single entry point of the SDK: a launcher with an unread badge that
25
+ * opens the support bottom sheet. Threads, polling, and read receipts are
26
+ * handled by useSupportThreads.
32
27
  */
33
28
  function SupportButton(props) {
34
29
  const validationError = (0, _utils.validateProps)(props);
35
- const theme = (0, _theme.resolveTheme)(props.theme);
30
+ const theme = (0, _react.useMemo)(() => (0, _theme.resolveTheme)(props.theme, props.accentColor), [props.theme, props.accentColor]);
36
31
  const config = (0, _react.useMemo)(() => ({
37
32
  supabaseUrl: props.supabaseUrl,
38
33
  apiKey: props.apiKey,
@@ -42,72 +37,51 @@ function SupportButton(props) {
42
37
  const [screen, setScreen] = (0, _react.useState)({
43
38
  name: 'home'
44
39
  });
45
- const [threads, setThreads] = (0, _react.useState)(null);
46
- const [totalUnread, setTotalUnread] = (0, _react.useState)(0);
47
- const [loading, setLoading] = (0, _react.useState)(false);
48
- const [error, setError] = (0, _react.useState)(null);
49
- const mounted = (0, _react.useRef)(true);
50
- (0, _react.useEffect)(() => {
51
- mounted.current = true;
52
- return () => {
53
- mounted.current = false;
54
- };
55
- }, []);
56
- const refresh = (0, _react.useCallback)(async () => {
57
- if (validationError) return;
58
- setLoading(true);
59
- setError(null);
60
- try {
61
- const data = await (0, _api.getThreads)(config, props.user.revenuecatId);
62
- if (!mounted.current) return;
63
- setThreads(data.threads);
64
- setTotalUnread(data.total_unread);
65
- } catch (e) {
66
- if (!mounted.current) return;
67
- setError(e instanceof _api.SupportApiError && e.offline ? "You're offline — check your connection" : "Couldn't load threads");
68
- } finally {
69
- if (mounted.current) setLoading(false);
70
- }
71
- }, [config, props.user.revenuecatId, validationError]);
72
-
73
- /** Badge-only refresh — the cheap endpoint used while idle. */
74
- const refreshBadge = (0, _react.useCallback)(async () => {
75
- if (validationError) return;
76
- try {
77
- const data = await (0, _api.getUnreadCount)(config, props.user.revenuecatId);
78
- if (mounted.current) setTotalUnread(data.total_unread);
79
- } catch {
80
- // Best-effort: the next tick or the next sheet open reconciles.
81
- }
82
- }, [config, props.user.revenuecatId, validationError]);
40
+ const {
41
+ threads,
42
+ totalUnread,
43
+ loading,
44
+ refreshing,
45
+ errorKey,
46
+ serverLanguage,
47
+ languageLoaded,
48
+ refresh,
49
+ reload
50
+ } = (0, _useSupportThreads.useSupportThreads)({
51
+ config,
52
+ revenuecatId: props.user.revenuecatId,
53
+ enabled: validationError === null,
54
+ sheetOpen,
55
+ activeThreadId: screen.name === 'thread' ? screen.threadId : null,
56
+ idlePollMs: props.pollIntervalMs ?? _useSupportThreads.IDLE_POLL_MS
57
+ });
83
58
 
84
- // Poll on mount…
85
- (0, _react.useEffect)(() => {
86
- void refresh();
87
- }, [refresh]);
59
+ /**
60
+ * What the user picked, once they have picked. Until then the sheet is
61
+ * rendered in the host app's hint or the device's language, which is a
62
+ * guess — hence `chosen`, which is what decides whether to ask.
63
+ */
64
+ const [chosen, setChosen] = (0, _react.useState)(null);
65
+ const [draftLanguage, setDraftLanguage] = (0, _react.useState)(null);
66
+ const [savingLanguage, setSavingLanguage] = (0, _react.useState)(false);
67
+ const [languageError, setLanguageError] = (0, _react.useState)(null);
88
68
 
89
- // …then adapt the cadence to what the user is looking at, and refresh
90
- // whenever the app returns to the foreground.
91
- const idlePollMs = props.pollIntervalMs ?? IDLE_POLL_MS;
92
- const screenName = screen.name;
69
+ // A preference saved on another device (or an earlier install) wins over
70
+ // any local guess, and answers the "have they chosen?" question for free.
93
71
  (0, _react.useEffect)(() => {
94
- const idle = !sheetOpen;
95
- const intervalMs = idle ? idlePollMs : screenName === 'thread' ? THREAD_POLL_MS : SHEET_POLL_MS;
96
-
97
- // While idle only the badge matters, so use the count-only endpoint.
98
- const tick = () => void (idle ? refreshBadge() : refresh());
72
+ const stored = (0, _languages.asLanguage)(serverLanguage);
73
+ if (stored !== null) setChosen(stored);
74
+ }, [serverLanguage]);
75
+ const fallbackLanguage = props.defaultLanguage ?? (0, _languages.deviceLanguage)() ?? _languages.DEFAULT_LANGUAGE;
76
+ const language = chosen ?? fallbackLanguage;
77
+ const strings = (0, _react.useMemo)(() => (0, _i18n.createTranslator)(draftLanguage ?? language), [draftLanguage, language]);
99
78
 
100
- // Clamped so a typo like `pollIntervalMs={30}` can't hammer the API;
101
- // 0 (or negative) disables idle polling entirely.
102
- const timer = intervalMs > 0 ? setInterval(tick, Math.max(intervalMs, MIN_POLL_MS)) : null;
103
- const appStateSub = _reactNative.AppState.addEventListener('change', state => {
104
- if (state === 'active') tick();
105
- });
106
- return () => {
107
- if (timer !== null) clearInterval(timer);
108
- appStateSub.remove();
109
- };
110
- }, [sheetOpen, screenName, idlePollMs, refresh, refreshBadge]);
79
+ /**
80
+ * Ask once, on first open — but only once the server has told us whether
81
+ * this user already answered. Asking before then would show the picker to
82
+ * someone who chose months ago on another device.
83
+ */
84
+ const mustChooseLanguage = languageLoaded && chosen === null;
111
85
 
112
86
  /**
113
87
  * Asks for notification permission the moment the sheet opens, then
@@ -116,7 +90,7 @@ function SupportButton(props) {
116
90
  * support flow waits on it or breaks if it fails.
117
91
  */
118
92
  const syncPushPermission = (0, _react.useCallback)(async () => {
119
- if (validationError || !_push.isPushAvailable) return;
93
+ if (validationError !== null || !_push.isPushAvailable) return;
120
94
  try {
121
95
  const registration = await (0, _push.ensurePushPermission)(props.expoProjectId);
122
96
  await (0, _api.registerPush)(config, {
@@ -129,14 +103,11 @@ function SupportButton(props) {
129
103
  // Push is an enhancement — never surfaced to the user as an error.
130
104
  }
131
105
  }, [config, props.user.revenuecatId, props.expoProjectId, validationError]);
132
-
133
- // …and on sheet open.
134
106
  function openSheet() {
135
107
  setScreen({
136
108
  name: 'home'
137
109
  });
138
110
  setSheetOpen(true);
139
- void refresh();
140
111
  // The OS prompt appears right as the sheet opens; if the user declines,
141
112
  // everything below carries on exactly as before.
142
113
  void syncPushPermission();
@@ -146,8 +117,10 @@ function SupportButton(props) {
146
117
  setScreen({
147
118
  name: 'home'
148
119
  });
120
+ setDraftLanguage(null);
121
+ setLanguageError(null);
149
122
  }
150
- if (validationError) {
123
+ if (validationError !== null) {
151
124
  // Dev-mode: loud and actionable. Production: render nothing rather than
152
125
  // a broken button.
153
126
  if (__DEV__) {
@@ -170,32 +143,43 @@ function SupportButton(props) {
170
143
  }
171
144
  return null;
172
145
  }
173
- function openThread(thread) {
174
- setScreen({
175
- name: 'thread',
176
- threadId: thread.id
177
- });
178
- if (thread.unread_count > 0) {
179
- // Optimistically clear the badge; persist via mark-read.
180
- setThreads(prev => prev?.map(t => t.id === thread.id ? {
181
- ...t,
182
- unread_count: 0
183
- } : t) ?? null);
184
- setTotalUnread(n => Math.max(0, n - thread.unread_count));
185
- void (0, _api.markRead)(config, {
186
- queryId: thread.id,
187
- revenuecatId: props.user.revenuecatId
188
- }).catch(() => {
189
- // Non-fatal: the next get-threads reconciles the badge.
190
- });
191
- }
192
- }
193
146
  function writeErrorMessage(e) {
194
147
  if (e instanceof _api.SupportApiError) {
195
- if (e.status === 429) return 'Too many requests — try again later';
196
- if (e.offline) return "You're offline — check your connection";
148
+ if (e.status === 429) return strings.t('error.rateLimited');
149
+ if (e.offline) return strings.t('error.offline');
150
+ }
151
+ return strings.t('error.sendFailed');
152
+ }
153
+
154
+ /**
155
+ * Persists the picked language and leaves the picker.
156
+ *
157
+ * A failed save keeps the user on the screen with a retry: getting this
158
+ * wrong means every message they write is translated from the wrong
159
+ * language, which is worse than one more tap.
160
+ */
161
+ async function confirmLanguage() {
162
+ const next = draftLanguage ?? language;
163
+ setSavingLanguage(true);
164
+ setLanguageError(null);
165
+ try {
166
+ await (0, _api.setLanguage)(config, {
167
+ revenuecatId: props.user.revenuecatId,
168
+ language: next
169
+ });
170
+ setChosen(next);
171
+ setDraftLanguage(null);
172
+ setScreen({
173
+ name: 'home'
174
+ });
175
+ // On a change, the server re-queues existing replies for translation
176
+ // into the new language; they arrive over the next poll or two.
177
+ void reload();
178
+ } catch (e) {
179
+ setLanguageError(e instanceof _api.SupportApiError && e.offline ? strings.t('error.offline') : strings.t('lang.saveFailed'));
180
+ } finally {
181
+ setSavingLanguage(false);
197
182
  }
198
- return "Couldn't send — try again";
199
183
  }
200
184
  async function handleSubmit(type, message) {
201
185
  try {
@@ -205,9 +189,10 @@ function SupportButton(props) {
205
189
  userName: props.user.name,
206
190
  isPaid: props.user.isPaid,
207
191
  revenuecatId: props.user.revenuecatId,
208
- appVersion: props.user.appVersion
192
+ appVersion: props.user.appVersion,
193
+ language
209
194
  });
210
- void refresh();
195
+ void reload();
211
196
  return null;
212
197
  } catch (e) {
213
198
  return writeErrorMessage(e);
@@ -218,101 +203,94 @@ function SupportButton(props) {
218
203
  await (0, _api.postMessage)(config, {
219
204
  queryId: threadId,
220
205
  revenuecatId: props.user.revenuecatId,
221
- message
206
+ message,
207
+ language
222
208
  });
223
- await refresh();
209
+ await reload();
224
210
  return null;
225
211
  } catch (e) {
226
212
  return writeErrorMessage(e);
227
213
  }
228
214
  }
229
215
  const activeThread = screen.name === 'thread' ? (threads ?? []).find(t => t.id === screen.threadId) ?? null : null;
216
+ const home = /*#__PURE__*/(0, _jsxRuntime.jsx)(_HomeScreen.HomeScreen, {
217
+ theme: theme,
218
+ strings: strings,
219
+ language: language,
220
+ threads: threads,
221
+ loading: loading,
222
+ refreshing: refreshing,
223
+ error: errorKey === null ? null : strings.t(errorKey),
224
+ onRefresh: refresh,
225
+ onCompose: type => setScreen({
226
+ name: 'compose',
227
+ type
228
+ }),
229
+ onOpenThread: thread => setScreen({
230
+ name: 'thread',
231
+ threadId: thread.id
232
+ }),
233
+ onChangeLanguage: () => {
234
+ setDraftLanguage(language);
235
+ setLanguageError(null);
236
+ setScreen({
237
+ name: 'language'
238
+ });
239
+ },
240
+ onClose: closeSheet
241
+ });
242
+ const languagePicker = /*#__PURE__*/(0, _jsxRuntime.jsx)(_LanguageScreen.LanguageScreen, {
243
+ theme: theme,
244
+ strings: strings,
245
+ selected: draftLanguage ?? language,
246
+ onSelect: setDraftLanguage,
247
+ onConfirm: () => void confirmLanguage()
248
+ // No way back on first run: there is nothing behind it yet, so the
249
+ // only exit is choosing — or closing the sheet, which asks again.
250
+ ,
251
+ onBack: mustChooseLanguage ? undefined : () => {
252
+ setDraftLanguage(null);
253
+ setLanguageError(null);
254
+ setScreen({
255
+ name: 'home'
256
+ });
257
+ },
258
+ onDismiss: mustChooseLanguage ? closeSheet : undefined,
259
+ saving: savingLanguage,
260
+ error: languageError
261
+ });
230
262
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
231
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Pressable, {
232
- onPress: openSheet,
233
- accessibilityRole: "button",
234
- accessibilityLabel: totalUnread > 0 ? `Support, ${totalUnread} unread ${totalUnread === 1 ? 'reply' : 'replies'}` : 'Support',
235
- style: ({
236
- pressed
237
- }) => ({
238
- width: 44,
239
- height: 44,
240
- borderRadius: 22,
241
- borderWidth: 1,
242
- borderColor: theme.colors.border,
243
- backgroundColor: pressed ? theme.colors.surfaceHover : theme.colors.surface,
244
- alignItems: 'center',
245
- justifyContent: 'center'
246
- }),
247
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.BubbleMark, {
248
- color: theme.colors.textPrimary,
249
- size: 18
250
- }), totalUnread > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
251
- style: {
252
- position: 'absolute',
253
- top: -3,
254
- right: -3,
255
- minWidth: 16,
256
- height: 16,
257
- borderRadius: 8,
258
- paddingHorizontal: 4,
259
- backgroundColor: theme.colors.accent,
260
- alignItems: 'center',
261
- justifyContent: 'center'
262
- },
263
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
264
- style: {
265
- fontSize: 10,
266
- fontWeight: '600',
267
- color: theme.colors.accentForeground,
268
- fontVariant: ['tabular-nums']
269
- },
270
- children: totalUnread > 9 ? '9+' : totalUnread
271
- })
272
- })]
273
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_BottomSheet.BottomSheet, {
263
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_LauncherButton.LauncherButton, {
264
+ theme: theme,
265
+ unread: totalUnread,
266
+ variant: props.variant,
267
+ size: props.size,
268
+ label: props.label,
269
+ style: props.style,
270
+ onPress: openSheet
271
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_BottomSheet.BottomSheet, {
274
272
  visible: sheetOpen,
275
273
  onClose: closeSheet,
276
274
  theme: theme,
277
- children: [screen.name === 'home' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_HomeScreen.HomeScreen, {
278
- theme: theme,
279
- threads: threads,
280
- loading: loading,
281
- error: error,
282
- onRetry: () => void refresh(),
283
- onCompose: type => setScreen({
284
- name: 'compose',
285
- type
286
- }),
287
- onOpenThread: openThread,
288
- onClose: closeSheet
289
- }), screen.name === 'compose' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ComposeScreen.ComposeScreen, {
290
- theme: theme,
291
- type: screen.type,
292
- onBack: () => setScreen({
293
- name: 'home'
294
- }),
295
- onSubmit: message => handleSubmit(screen.type, message)
296
- }), screen.name === 'thread' && (activeThread ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ThreadScreen.ThreadScreen, {
297
- theme: theme,
298
- thread: activeThread,
299
- onBack: () => setScreen({
300
- name: 'home'
301
- }),
302
- onSend: message => handleSend(activeThread.id, message)
303
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_HomeScreen.HomeScreen, {
304
- theme: theme,
305
- threads: threads,
306
- loading: loading,
307
- error: error,
308
- onRetry: () => void refresh(),
309
- onCompose: type => setScreen({
310
- name: 'compose',
311
- type
312
- }),
313
- onOpenThread: openThread,
314
- onClose: closeSheet
315
- }))]
275
+ children: mustChooseLanguage || screen.name === 'language' ? languagePicker : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
276
+ children: [screen.name === 'home' && home, screen.name === 'compose' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ComposeScreen.ComposeScreen, {
277
+ theme: theme,
278
+ strings: strings,
279
+ type: screen.type,
280
+ onBack: () => setScreen({
281
+ name: 'home'
282
+ }),
283
+ onSubmit: message => handleSubmit(screen.type, message)
284
+ }), screen.name === 'thread' && (activeThread !== null ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ThreadScreen.ThreadScreen, {
285
+ theme: theme,
286
+ strings: strings,
287
+ thread: activeThread,
288
+ onBack: () => setScreen({
289
+ name: 'home'
290
+ }),
291
+ onSend: message => handleSend(activeThread.id, message)
292
+ }) : home)]
293
+ })
316
294
  })]
317
295
  });
318
296
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_api","_push","_theme","_utils","_BottomSheet","_icons","_ComposeScreen","_HomeScreen","_ThreadScreen","_jsxRuntime","THREAD_POLL_MS","SHEET_POLL_MS","IDLE_POLL_MS","MIN_POLL_MS","SupportButton","props","validationError","validateProps","theme","resolveTheme","config","useMemo","supabaseUrl","apiKey","appName","sheetOpen","setSheetOpen","useState","screen","setScreen","name","threads","setThreads","totalUnread","setTotalUnread","loading","setLoading","error","setError","mounted","useRef","useEffect","current","refresh","useCallback","data","getThreads","user","revenuecatId","total_unread","e","SupportApiError","offline","refreshBadge","getUnreadCount","idlePollMs","pollIntervalMs","screenName","idle","intervalMs","tick","timer","setInterval","Math","max","appStateSub","AppState","addEventListener","state","clearInterval","remove","syncPushPermission","isPushAvailable","registration","ensurePushPermission","expoProjectId","registerPush","permissionStatus","status","expoPushToken","token","asked","openSheet","closeSheet","__DEV__","console","jsx","View","style","padding","borderWidth","borderColor","colors","statusDanger","borderRadius","radii","control","children","Text","fontSize","color","openThread","thread","threadId","id","unread_count","prev","map","t","n","markRead","queryId","catch","writeErrorMessage","handleSubmit","type","message","submitQuery","queryType","userName","isPaid","appVersion","handleSend","postMessage","activeThread","find","jsxs","Fragment","Pressable","onPress","accessibilityRole","accessibilityLabel","pressed","width","height","border","backgroundColor","surfaceHover","surface","alignItems","justifyContent","BubbleMark","textPrimary","size","position","top","right","minWidth","paddingHorizontal","accent","fontWeight","accentForeground","fontVariant","BottomSheet","visible","onClose","HomeScreen","onRetry","onCompose","onOpenThread","ComposeScreen","onBack","onSubmit","ThreadScreen","onSend"],"sourceRoot":"../../../src","sources":["components/SupportButton.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_api","_i18n","_languages","_push","_theme","_useSupportThreads","_utils","_BottomSheet","_LauncherButton","_ComposeScreen","_HomeScreen","_LanguageScreen","_ThreadScreen","_jsxRuntime","SupportButton","props","validationError","validateProps","theme","useMemo","resolveTheme","accentColor","config","supabaseUrl","apiKey","appName","sheetOpen","setSheetOpen","useState","screen","setScreen","name","threads","totalUnread","loading","refreshing","errorKey","serverLanguage","languageLoaded","refresh","reload","useSupportThreads","revenuecatId","user","enabled","activeThreadId","threadId","idlePollMs","pollIntervalMs","IDLE_POLL_MS","chosen","setChosen","draftLanguage","setDraftLanguage","savingLanguage","setSavingLanguage","languageError","setLanguageError","useEffect","stored","asLanguage","fallbackLanguage","defaultLanguage","deviceLanguage","DEFAULT_LANGUAGE","language","strings","createTranslator","mustChooseLanguage","syncPushPermission","useCallback","isPushAvailable","registration","ensurePushPermission","expoProjectId","registerPush","permissionStatus","status","expoPushToken","token","asked","openSheet","closeSheet","__DEV__","console","error","jsx","View","style","padding","borderWidth","borderColor","colors","statusDanger","borderRadius","radii","control","children","Text","fontSize","color","writeErrorMessage","e","SupportApiError","t","offline","confirmLanguage","next","setLanguageRequest","handleSubmit","type","message","submitQuery","queryType","userName","isPaid","appVersion","handleSend","postMessage","queryId","activeThread","find","id","home","HomeScreen","onRefresh","onCompose","onOpenThread","thread","onChangeLanguage","onClose","languagePicker","LanguageScreen","selected","onSelect","onConfirm","onBack","undefined","onDismiss","saving","jsxs","Fragment","LauncherButton","unread","variant","size","label","onPress","BottomSheet","visible","ComposeScreen","onSubmit","ThreadScreen","onSend"],"sourceRoot":"../../../src","sources":["components/SupportButton.tsx"],"mappings":"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","ignoreList":[]}