@appsupportkit/support-sdk 0.2.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.
Files changed (242) hide show
  1. package/lib/commonjs/api.js +61 -12
  2. package/lib/commonjs/api.js.map +1 -1
  3. package/lib/commonjs/components/BottomSheet.js +1 -1
  4. package/lib/commonjs/components/BottomSheet.js.map +1 -1
  5. package/lib/commonjs/components/LauncherButton.js +4 -4
  6. package/lib/commonjs/components/LauncherButton.js.map +1 -1
  7. package/lib/commonjs/components/SupportButton.js +192 -66
  8. package/lib/commonjs/components/SupportButton.js.map +1 -1
  9. package/lib/commonjs/components/icons.js +117 -110
  10. package/lib/commonjs/components/icons.js.map +1 -1
  11. package/lib/commonjs/components/primitives.js +3 -154
  12. package/lib/commonjs/components/primitives.js.map +1 -1
  13. package/lib/commonjs/components/screens/ChatScreen.js +487 -0
  14. package/lib/commonjs/components/screens/ChatScreen.js.map +1 -0
  15. package/lib/commonjs/components/screens/LanguageScreen.js +150 -0
  16. package/lib/commonjs/components/screens/LanguageScreen.js.map +1 -0
  17. package/lib/commonjs/i18n/index.js +101 -0
  18. package/lib/commonjs/i18n/index.js.map +1 -0
  19. package/lib/commonjs/i18n/languages.js +95 -0
  20. package/lib/commonjs/i18n/languages.js.map +1 -0
  21. package/lib/commonjs/i18n/strings/de.js +75 -0
  22. package/lib/commonjs/i18n/strings/de.js.map +1 -0
  23. package/lib/commonjs/i18n/strings/en.js +91 -0
  24. package/lib/commonjs/i18n/strings/en.js.map +1 -0
  25. package/lib/commonjs/i18n/strings/es.js +75 -0
  26. package/lib/commonjs/i18n/strings/es.js.map +1 -0
  27. package/lib/commonjs/i18n/strings/fr.js +75 -0
  28. package/lib/commonjs/i18n/strings/fr.js.map +1 -0
  29. package/lib/commonjs/i18n/strings/hi.js +75 -0
  30. package/lib/commonjs/i18n/strings/hi.js.map +1 -0
  31. package/lib/commonjs/i18n/strings/it.js +75 -0
  32. package/lib/commonjs/i18n/strings/it.js.map +1 -0
  33. package/lib/commonjs/i18n/strings/ja.js +75 -0
  34. package/lib/commonjs/i18n/strings/ja.js.map +1 -0
  35. package/lib/commonjs/i18n/strings/ko.js +75 -0
  36. package/lib/commonjs/i18n/strings/ko.js.map +1 -0
  37. package/lib/commonjs/i18n/strings/nl.js +75 -0
  38. package/lib/commonjs/i18n/strings/nl.js.map +1 -0
  39. package/lib/commonjs/i18n/strings/pl.js +75 -0
  40. package/lib/commonjs/i18n/strings/pl.js.map +1 -0
  41. package/lib/commonjs/i18n/strings/pt.js +75 -0
  42. package/lib/commonjs/i18n/strings/pt.js.map +1 -0
  43. package/lib/commonjs/i18n/strings/ru.js +75 -0
  44. package/lib/commonjs/i18n/strings/ru.js.map +1 -0
  45. package/lib/commonjs/i18n/strings/tr.js +75 -0
  46. package/lib/commonjs/i18n/strings/tr.js.map +1 -0
  47. package/lib/commonjs/i18n/strings/zh.js +75 -0
  48. package/lib/commonjs/i18n/strings/zh.js.map +1 -0
  49. package/lib/commonjs/index.js +38 -0
  50. package/lib/commonjs/index.js.map +1 -1
  51. package/lib/commonjs/push.js +78 -3
  52. package/lib/commonjs/push.js.map +1 -1
  53. package/lib/commonjs/review.js +54 -0
  54. package/lib/commonjs/review.js.map +1 -0
  55. package/lib/commonjs/theme.js +142 -23
  56. package/lib/commonjs/theme.js.map +1 -1
  57. package/lib/commonjs/types.js +32 -3
  58. package/lib/commonjs/types.js.map +1 -1
  59. package/lib/commonjs/useSupportThreads.js +41 -24
  60. package/lib/commonjs/useSupportThreads.js.map +1 -1
  61. package/lib/commonjs/utils.js +25 -30
  62. package/lib/commonjs/utils.js.map +1 -1
  63. package/lib/commonjs/version.js +13 -0
  64. package/lib/commonjs/version.js.map +1 -0
  65. package/lib/module/api.js +57 -10
  66. package/lib/module/api.js.map +1 -1
  67. package/lib/module/components/BottomSheet.js +1 -1
  68. package/lib/module/components/BottomSheet.js.map +1 -1
  69. package/lib/module/components/LauncherButton.js +5 -5
  70. package/lib/module/components/LauncherButton.js.map +1 -1
  71. package/lib/module/components/SupportButton.js +199 -73
  72. package/lib/module/components/SupportButton.js.map +1 -1
  73. package/lib/module/components/icons.js +115 -107
  74. package/lib/module/components/icons.js.map +1 -1
  75. package/lib/module/components/primitives.js +5 -147
  76. package/lib/module/components/primitives.js.map +1 -1
  77. package/lib/module/components/screens/ChatScreen.js +485 -0
  78. package/lib/module/components/screens/ChatScreen.js.map +1 -0
  79. package/lib/module/components/screens/LanguageScreen.js +147 -0
  80. package/lib/module/components/screens/LanguageScreen.js.map +1 -0
  81. package/lib/module/i18n/index.js +56 -0
  82. package/lib/module/i18n/index.js.map +1 -0
  83. package/lib/module/i18n/languages.js +88 -0
  84. package/lib/module/i18n/languages.js.map +1 -0
  85. package/lib/module/i18n/strings/de.js +71 -0
  86. package/lib/module/i18n/strings/de.js.map +1 -0
  87. package/lib/module/i18n/strings/en.js +87 -0
  88. package/lib/module/i18n/strings/en.js.map +1 -0
  89. package/lib/module/i18n/strings/es.js +71 -0
  90. package/lib/module/i18n/strings/es.js.map +1 -0
  91. package/lib/module/i18n/strings/fr.js +71 -0
  92. package/lib/module/i18n/strings/fr.js.map +1 -0
  93. package/lib/module/i18n/strings/hi.js +71 -0
  94. package/lib/module/i18n/strings/hi.js.map +1 -0
  95. package/lib/module/i18n/strings/it.js +71 -0
  96. package/lib/module/i18n/strings/it.js.map +1 -0
  97. package/lib/module/i18n/strings/ja.js +71 -0
  98. package/lib/module/i18n/strings/ja.js.map +1 -0
  99. package/lib/module/i18n/strings/ko.js +71 -0
  100. package/lib/module/i18n/strings/ko.js.map +1 -0
  101. package/lib/module/i18n/strings/nl.js +71 -0
  102. package/lib/module/i18n/strings/nl.js.map +1 -0
  103. package/lib/module/i18n/strings/pl.js +71 -0
  104. package/lib/module/i18n/strings/pl.js.map +1 -0
  105. package/lib/module/i18n/strings/pt.js +71 -0
  106. package/lib/module/i18n/strings/pt.js.map +1 -0
  107. package/lib/module/i18n/strings/ru.js +71 -0
  108. package/lib/module/i18n/strings/ru.js.map +1 -0
  109. package/lib/module/i18n/strings/tr.js +71 -0
  110. package/lib/module/i18n/strings/tr.js.map +1 -0
  111. package/lib/module/i18n/strings/zh.js +71 -0
  112. package/lib/module/i18n/strings/zh.js.map +1 -0
  113. package/lib/module/index.js +2 -0
  114. package/lib/module/index.js.map +1 -1
  115. package/lib/module/push.js +77 -3
  116. package/lib/module/push.js.map +1 -1
  117. package/lib/module/review.js +48 -0
  118. package/lib/module/review.js.map +1 -0
  119. package/lib/module/theme.js +141 -23
  120. package/lib/module/theme.js.map +1 -1
  121. package/lib/module/types.js +32 -3
  122. package/lib/module/types.js.map +1 -1
  123. package/lib/module/useSupportThreads.js +41 -24
  124. package/lib/module/useSupportThreads.js.map +1 -1
  125. package/lib/module/utils.js +24 -29
  126. package/lib/module/utils.js.map +1 -1
  127. package/lib/module/version.js +9 -0
  128. package/lib/module/version.js.map +1 -0
  129. package/lib/typescript/api.d.ts +40 -10
  130. package/lib/typescript/api.d.ts.map +1 -1
  131. package/lib/typescript/components/SupportButton.d.ts +2 -2
  132. package/lib/typescript/components/SupportButton.d.ts.map +1 -1
  133. package/lib/typescript/components/icons.d.ts +10 -14
  134. package/lib/typescript/components/icons.d.ts.map +1 -1
  135. package/lib/typescript/components/primitives.d.ts +3 -30
  136. package/lib/typescript/components/primitives.d.ts.map +1 -1
  137. package/lib/typescript/components/screens/ChatScreen.d.ts +21 -0
  138. package/lib/typescript/components/screens/ChatScreen.d.ts.map +1 -0
  139. package/lib/typescript/components/screens/LanguageScreen.d.ts +30 -0
  140. package/lib/typescript/components/screens/LanguageScreen.d.ts.map +1 -0
  141. package/lib/typescript/i18n/index.d.ts +15 -0
  142. package/lib/typescript/i18n/index.d.ts.map +1 -0
  143. package/lib/typescript/i18n/languages.d.ts +36 -0
  144. package/lib/typescript/i18n/languages.d.ts.map +1 -0
  145. package/lib/typescript/i18n/strings/de.d.ts +3 -0
  146. package/lib/typescript/i18n/strings/de.d.ts.map +1 -0
  147. package/lib/typescript/i18n/strings/en.d.ts +86 -0
  148. package/lib/typescript/i18n/strings/en.d.ts.map +1 -0
  149. package/lib/typescript/i18n/strings/es.d.ts +3 -0
  150. package/lib/typescript/i18n/strings/es.d.ts.map +1 -0
  151. package/lib/typescript/i18n/strings/fr.d.ts +3 -0
  152. package/lib/typescript/i18n/strings/fr.d.ts.map +1 -0
  153. package/lib/typescript/i18n/strings/hi.d.ts +3 -0
  154. package/lib/typescript/i18n/strings/hi.d.ts.map +1 -0
  155. package/lib/typescript/i18n/strings/it.d.ts +3 -0
  156. package/lib/typescript/i18n/strings/it.d.ts.map +1 -0
  157. package/lib/typescript/i18n/strings/ja.d.ts +3 -0
  158. package/lib/typescript/i18n/strings/ja.d.ts.map +1 -0
  159. package/lib/typescript/i18n/strings/ko.d.ts +3 -0
  160. package/lib/typescript/i18n/strings/ko.d.ts.map +1 -0
  161. package/lib/typescript/i18n/strings/nl.d.ts +3 -0
  162. package/lib/typescript/i18n/strings/nl.d.ts.map +1 -0
  163. package/lib/typescript/i18n/strings/pl.d.ts +3 -0
  164. package/lib/typescript/i18n/strings/pl.d.ts.map +1 -0
  165. package/lib/typescript/i18n/strings/pt.d.ts +3 -0
  166. package/lib/typescript/i18n/strings/pt.d.ts.map +1 -0
  167. package/lib/typescript/i18n/strings/ru.d.ts +3 -0
  168. package/lib/typescript/i18n/strings/ru.d.ts.map +1 -0
  169. package/lib/typescript/i18n/strings/tr.d.ts +3 -0
  170. package/lib/typescript/i18n/strings/tr.d.ts.map +1 -0
  171. package/lib/typescript/i18n/strings/zh.d.ts +3 -0
  172. package/lib/typescript/i18n/strings/zh.d.ts.map +1 -0
  173. package/lib/typescript/index.d.ts +4 -2
  174. package/lib/typescript/index.d.ts.map +1 -1
  175. package/lib/typescript/push.d.ts +14 -2
  176. package/lib/typescript/push.d.ts.map +1 -1
  177. package/lib/typescript/review.d.ts +15 -0
  178. package/lib/typescript/review.d.ts.map +1 -0
  179. package/lib/typescript/theme.d.ts +23 -5
  180. package/lib/typescript/theme.d.ts.map +1 -1
  181. package/lib/typescript/types.d.ts +86 -13
  182. package/lib/typescript/types.d.ts.map +1 -1
  183. package/lib/typescript/useSupportThreads.d.ts +20 -4
  184. package/lib/typescript/useSupportThreads.d.ts.map +1 -1
  185. package/lib/typescript/utils.d.ts +8 -6
  186. package/lib/typescript/utils.d.ts.map +1 -1
  187. package/lib/typescript/version.d.ts +7 -0
  188. package/lib/typescript/version.d.ts.map +1 -0
  189. package/package.json +2 -2
  190. package/src/api.ts +75 -23
  191. package/src/components/BottomSheet.tsx +1 -1
  192. package/src/components/LauncherButton.tsx +4 -4
  193. package/src/components/SupportButton.tsx +244 -86
  194. package/src/components/icons.tsx +96 -101
  195. package/src/components/primitives.tsx +9 -161
  196. package/src/components/screens/ChatScreen.tsx +541 -0
  197. package/src/components/screens/LanguageScreen.tsx +172 -0
  198. package/src/i18n/index.ts +81 -0
  199. package/src/i18n/languages.ts +106 -0
  200. package/src/i18n/strings/de.ts +81 -0
  201. package/src/i18n/strings/en.ts +97 -0
  202. package/src/i18n/strings/es.ts +80 -0
  203. package/src/i18n/strings/fr.ts +81 -0
  204. package/src/i18n/strings/hi.ts +80 -0
  205. package/src/i18n/strings/it.ts +80 -0
  206. package/src/i18n/strings/ja.ts +80 -0
  207. package/src/i18n/strings/ko.ts +79 -0
  208. package/src/i18n/strings/nl.ts +80 -0
  209. package/src/i18n/strings/pl.ts +80 -0
  210. package/src/i18n/strings/pt.ts +80 -0
  211. package/src/i18n/strings/ru.ts +80 -0
  212. package/src/i18n/strings/tr.ts +80 -0
  213. package/src/i18n/strings/zh.ts +78 -0
  214. package/src/index.tsx +13 -0
  215. package/src/push.ts +100 -2
  216. package/src/review.ts +54 -0
  217. package/src/theme.ts +182 -28
  218. package/src/types.ts +85 -13
  219. package/src/useSupportThreads.ts +61 -28
  220. package/src/utils.ts +27 -29
  221. package/src/version.ts +6 -0
  222. package/lib/commonjs/components/screens/ComposeScreen.js +0 -228
  223. package/lib/commonjs/components/screens/ComposeScreen.js.map +0 -1
  224. package/lib/commonjs/components/screens/HomeScreen.js +0 -286
  225. package/lib/commonjs/components/screens/HomeScreen.js.map +0 -1
  226. package/lib/commonjs/components/screens/ThreadScreen.js +0 -327
  227. package/lib/commonjs/components/screens/ThreadScreen.js.map +0 -1
  228. package/lib/module/components/screens/ComposeScreen.js +0 -224
  229. package/lib/module/components/screens/ComposeScreen.js.map +0 -1
  230. package/lib/module/components/screens/HomeScreen.js +0 -282
  231. package/lib/module/components/screens/HomeScreen.js.map +0 -1
  232. package/lib/module/components/screens/ThreadScreen.js +0 -325
  233. package/lib/module/components/screens/ThreadScreen.js.map +0 -1
  234. package/lib/typescript/components/screens/ComposeScreen.d.ts +0 -10
  235. package/lib/typescript/components/screens/ComposeScreen.d.ts.map +0 -1
  236. package/lib/typescript/components/screens/HomeScreen.d.ts +0 -14
  237. package/lib/typescript/components/screens/HomeScreen.d.ts.map +0 -1
  238. package/lib/typescript/components/screens/ThreadScreen.d.ts +0 -10
  239. package/lib/typescript/components/screens/ThreadScreen.d.ts.map +0 -1
  240. package/src/components/screens/ComposeScreen.tsx +0 -233
  241. package/src/components/screens/HomeScreen.tsx +0 -287
  242. package/src/components/screens/ThreadScreen.tsx +0 -397
@@ -7,9 +7,12 @@ exports.SupportApiError = void 0;
7
7
  exports.getThreads = getThreads;
8
8
  exports.getUnreadCount = getUnreadCount;
9
9
  exports.markRead = markRead;
10
- exports.postMessage = postMessage;
11
10
  exports.registerPush = registerPush;
12
- exports.submitQuery = submitQuery;
11
+ exports.registerUser = registerUser;
12
+ exports.reviewOpened = reviewOpened;
13
+ exports.sendMessage = sendMessage;
14
+ exports.setLanguage = setLanguage;
15
+ var _version = require("./version");
13
16
  // Thin client for the Supabase Edge Functions. Every call authenticates with
14
17
  // the per-app x-api-key header; no Supabase JS client is needed on-device.
15
18
 
@@ -33,6 +36,8 @@ async function request(config, path, init) {
33
36
  headers: {
34
37
  'Content-Type': 'application/json',
35
38
  'x-api-key': config.apiKey,
39
+ // Tells the backend this build speaks the single support chat.
40
+ 'x-sdk-version': _version.SDK_VERSION,
36
41
  ...init.headers
37
42
  }
38
43
  });
@@ -86,27 +91,71 @@ function registerPush(config, input) {
86
91
  })
87
92
  });
88
93
  }
89
- function submitQuery(config, input) {
90
- return request(config, 'submit-query', {
94
+
95
+ /** Records the language the user reads and writes support messages in. */
96
+ function setLanguage(config, input) {
97
+ return request(config, 'set-language', {
98
+ method: 'POST',
99
+ body: JSON.stringify({
100
+ revenuecat_id: input.revenuecatId,
101
+ language: input.language
102
+ })
103
+ });
104
+ }
105
+
106
+ /** What the backend is told about the current user. */
107
+
108
+ function reportedUser(user) {
109
+ return {
110
+ name: user.name,
111
+ plan: user.plan,
112
+ app_version: user.appVersion,
113
+ platform: user.platform
114
+ };
115
+ }
116
+
117
+ /**
118
+ * Sends one chat message. The server appends it to the user's open
119
+ * conversation, or starts one if none is open (a first message, or the first
120
+ * after a resolve).
121
+ */
122
+ function sendMessage(config, input) {
123
+ return request(config, 'send-message', {
91
124
  method: 'POST',
92
125
  body: JSON.stringify({
93
126
  app_name: config.appName,
94
- query_type: input.queryType,
127
+ revenuecat_id: input.revenuecatId,
95
128
  message: input.message,
96
- user_name: input.userName,
97
- is_paid: input.isPaid,
129
+ // Sent on every write so a lost set-language call self-heals.
130
+ language: input.language,
131
+ user: reportedUser(input.user)
132
+ })
133
+ });
134
+ }
135
+
136
+ /**
137
+ * Records the user in the app's directory, so the team can find and message
138
+ * them before they ever open support. Called on every load.
139
+ */
140
+ function registerUser(config, input) {
141
+ return request(config, 'register-user', {
142
+ method: 'POST',
143
+ body: JSON.stringify({
144
+ app_name: config.appName,
98
145
  revenuecat_id: input.revenuecatId,
99
- app_version: input.appVersion
146
+ user: reportedUser(input.user)
100
147
  })
101
148
  });
102
149
  }
103
- function postMessage(config, input) {
104
- return request(config, 'post-message', {
150
+
151
+ /** Records a tap on a review request's store button, for the dashboard. */
152
+ function reviewOpened(config, input) {
153
+ return request(config, 'review-opened', {
105
154
  method: 'POST',
106
155
  body: JSON.stringify({
107
- query_id: input.queryId,
156
+ app_name: config.appName,
108
157
  revenuecat_id: input.revenuecatId,
109
- message: input.message
158
+ message_id: input.messageId
110
159
  })
111
160
  });
112
161
  }
@@ -1 +1 @@
1
- {"version":3,"names":["SupportApiError","Error","constructor","message","status","offline","name","exports","request","config","path","init","url","supabaseUrl","replace","response","fetch","headers","apiKey","payload","json","ok","error","getThreads","revenuecatId","params","URLSearchParams","revenuecat_id","toString","method","getUnreadCount","registerPush","input","body","JSON","stringify","app_name","appName","permission_status","permissionStatus","expo_push_token","expoPushToken","asked","submitQuery","query_type","queryType","user_name","userName","is_paid","isPaid","app_version","appVersion","postMessage","query_id","queryId","markRead"],"sourceRoot":"../../src","sources":["api.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_version","require","SupportApiError","Error","constructor","message","status","offline","name","exports","request","config","path","init","url","supabaseUrl","replace","response","fetch","headers","apiKey","SDK_VERSION","payload","json","ok","error","getThreads","revenuecatId","params","URLSearchParams","revenuecat_id","toString","method","getUnreadCount","registerPush","input","body","JSON","stringify","app_name","appName","permission_status","permissionStatus","expo_push_token","expoPushToken","asked","setLanguage","language","reportedUser","user","plan","app_version","appVersion","platform","sendMessage","registerUser","reviewOpened","message_id","messageId","markRead","query_id","queryId"],"sourceRoot":"../../src","sources":["api.ts"],"mappings":"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","ignoreList":[]}
@@ -136,7 +136,7 @@ function BottomSheet({
136
136
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Animated.View, {
137
137
  style: {
138
138
  height: sheetHeight,
139
- backgroundColor: theme.colors.bg,
139
+ backgroundColor: theme.colors.sheet,
140
140
  borderTopLeftRadius: theme.radii.sheet,
141
141
  borderTopRightRadius: theme.radii.sheet,
142
142
  borderWidth: 1,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_reactNativeSafeAreaContext","_jsxRuntime","SLIDE_MS","FADE_MS","BottomSheet","visible","onClose","theme","children","height","windowHeight","useWindowDimensions","sheetHeight","Math","min","rendered","setRendered","useState","translateY","useRef","Animated","Value","current","backdrop","shown","useEffect","setValue","parallel","timing","toValue","duration","easing","Easing","bezier","useNativeDriver","out","cubic","start","motion","slow","in","finished","requestClose","useCallback","panResponder","PanResponder","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","_e","g","abs","dy","onPanResponderMove","onPanResponderRelease","vy","jsx","Modal","transparent","animationType","onRequestClose","statusBarTranslucent","SafeAreaProvider","jsxs","View","style","flex","justifyContent","position","top","right","bottom","left","backgroundColor","opacity","Pressable","onPress","accessibilityLabel","colors","bg","borderTopLeftRadius","radii","sheet","borderTopRightRadius","borderWidth","borderBottomWidth","borderColor","border","overflow","transform","shadows","panHandlers","alignItems","paddingTop","paddingBottom","width","borderRadius","borderStrong","SafeAreaView","edges"],"sourceRoot":"../../../src","sources":["components/BottomSheet.tsx"],"mappings":";;;;;;AAWA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AASA,IAAAE,2BAAA,GAAAF,OAAA;AAAgF,IAAAG,WAAA,GAAAH,OAAA;AArBhF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAcA,MAAMI,QAAQ,GAAG,GAAG;AACpB,MAAMC,OAAO,GAAG,GAAG;AAEZ,SAASC,WAAWA,CAAC;EAC1BC,OAAO;EACPC,OAAO;EACPC,KAAK;EACLC;AAMF,CAAC,EAAE;EACD,MAAM;IAAEC,MAAM,EAAEC;EAAa,CAAC,GAAG,IAAAC,gCAAmB,EAAC,CAAC;EACtD,MAAMC,WAAW,GAAGC,IAAI,CAACC,GAAG,CAACJ,YAAY,GAAG,IAAI,EAAE,GAAG,CAAC;EAEtD,MAAM,CAACK,QAAQ,EAAEC,WAAW,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;EAC/C,MAAMC,UAAU,GAAG,IAAAC,aAAM,EAAC,IAAIC,qBAAQ,CAACC,KAAK,CAACT,WAAW,CAAC,CAAC,CAACU,OAAO;EAClE,MAAMC,QAAQ,GAAG,IAAAJ,aAAM,EAAC,IAAIC,qBAAQ,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;EACtD;EACA,MAAME,KAAK,GAAG,IAAAL,aAAM,EAAC,KAAK,CAAC;EAE3B,IAAAM,gBAAS,EAAC,MAAM;IACd,IAAIpB,OAAO,EAAEW,WAAW,CAAC,IAAI,CAAC;EAChC,CAAC,EAAE,CAACX,OAAO,CAAC,CAAC;EAEb,IAAAoB,gBAAS,EAAC,MAAM;IACd,IAAI,CAACV,QAAQ,EAAE;IAEf,IAAIV,OAAO,IAAI,CAACmB,KAAK,CAACF,OAAO,EAAE;MAC7BE,KAAK,CAACF,OAAO,GAAG,IAAI;MACpBJ,UAAU,CAACQ,QAAQ,CAACd,WAAW,CAAC;MAChCQ,qBAAQ,CAACO,QAAQ,CAAC,CAChBP,qBAAQ,CAACQ,MAAM,CAACV,UAAU,EAAE;QAC1BW,OAAO,EAAE,CAAC;QACVC,QAAQ,EAAE5B,QAAQ;QAClB6B,MAAM,EAAEC,mBAAM,CAACC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACtCC,eAAe,EAAE;MACnB,CAAC,CAAC,EACFd,qBAAQ,CAACQ,MAAM,CAACL,QAAQ,EAAE;QACxBM,OAAO,EAAE,CAAC;QACVC,QAAQ,EAAE3B,OAAO;QACjB4B,MAAM,EAAEC,mBAAM,CAACG,GAAG,CAACH,mBAAM,CAACI,KAAK,CAAC;QAChCF,eAAe,EAAE;MACnB,CAAC,CAAC,CACH,CAAC,CAACG,KAAK,CAAC,CAAC;MACV;IACF;IAEA,IAAI,CAAChC,OAAO,IAAImB,KAAK,CAACF,OAAO,EAAE;MAC7BE,KAAK,CAACF,OAAO,GAAG,KAAK;MACrB;MACA;MACAF,qBAAQ,CAACO,QAAQ,CAAC,CAChBP,qBAAQ,CAACQ,MAAM,CAACV,UAAU,EAAE;QAC1BW,OAAO,EAAEjB,WAAW;QACpBkB,QAAQ,EAAEvB,KAAK,CAAC+B,MAAM,CAACC,IAAI;QAC3BR,MAAM,EAAEC,mBAAM,CAACQ,EAAE,CAACR,mBAAM,CAACI,KAAK,CAAC;QAC/BF,eAAe,EAAE;MACnB,CAAC,CAAC,EACFd,qBAAQ,CAACQ,MAAM,CAACL,QAAQ,EAAE;QACxBM,OAAO,EAAE,CAAC;QACVC,QAAQ,EAAEvB,KAAK,CAAC+B,MAAM,CAACC,IAAI;QAC3BR,MAAM,EAAEC,mBAAM,CAACQ,EAAE,CAACR,mBAAM,CAACI,KAAK,CAAC;QAC/BF,eAAe,EAAE;MACnB,CAAC,CAAC,CACH,CAAC,CAACG,KAAK,CAAC,CAAC;QAAEI;MAAS,CAAC,KAAK;QACzB,IAAIA,QAAQ,EAAEzB,WAAW,CAAC,KAAK,CAAC;MAClC,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,CAACD,QAAQ,EAAEV,OAAO,EAAEO,WAAW,EAAEM,UAAU,EAAEK,QAAQ,EAAEhB,KAAK,CAAC+B,MAAM,CAACC,IAAI,CAAC,CAAC;EAE7E,MAAMG,YAAY,GAAG,IAAAC,kBAAW,EAAC,MAAM;IACrCrC,OAAO,CAAC,CAAC;EACX,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;;EAEb;EACA,MAAMsC,YAAY,GAAG,IAAAzB,aAAM,EACzB0B,yBAAY,CAACC,MAAM,CAAC;IAClBC,4BAA4B,EAAEA,CAAA,KAAM,IAAI;IACxCC,2BAA2B,EAAEA,CAACC,EAAE,EAAEC,CAAC,KAAKrC,IAAI,CAACsC,GAAG,CAACD,CAAC,CAACE,EAAE,CAAC,GAAG,CAAC;IAC1DC,kBAAkB,EAAEA,CAACJ,EAAE,EAAEC,CAAC,KAAK;MAC7B,IAAIA,CAAC,CAACE,EAAE,GAAG,CAAC,EAAElC,UAAU,CAACQ,QAAQ,CAACwB,CAAC,CAACE,EAAE,CAAC;IACzC,CAAC;IACDE,qBAAqB,EAAEA,CAACL,EAAE,EAAEC,CAAC,KAAK;MAChC,IAAIA,CAAC,CAACE,EAAE,GAAGxC,WAAW,GAAG,IAAI,IAAIsC,CAAC,CAACK,EAAE,GAAG,GAAG,EAAE;QAC3Cb,YAAY,CAAC,CAAC;MAChB,CAAC,MAAM;QACLtB,qBAAQ,CAACQ,MAAM,CAACV,UAAU,EAAE;UAC1BW,OAAO,EAAE,CAAC;UACVC,QAAQ,EAAEvB,KAAK,CAAC+B,MAAM,CAACC,IAAI;UAC3BR,MAAM,EAAEC,mBAAM,CAACG,GAAG,CAACH,mBAAM,CAACI,KAAK,CAAC;UAChCF,eAAe,EAAE;QACnB,CAAC,CAAC,CAACG,KAAK,CAAC,CAAC;MACZ;IACF;EACF,CAAC,CACH,CAAC,CAACf,OAAO;EAET,IAAI,CAACP,QAAQ,EAAE,OAAO,IAAI;EAE1B,oBACE,IAAAd,WAAA,CAAAuD,GAAA,EAACzD,YAAA,CAAA0D,KAAK;IACJpD,OAAO;IACPqD,WAAW;IACXC,aAAa,EAAC,MAAM;IACpBC,cAAc,EAAElB,YAAa;IAC7BmB,oBAAoB;IAAArD,QAAA,eAEpB,IAAAP,WAAA,CAAAuD,GAAA,EAACxD,2BAAA,CAAA8D,gBAAgB;MAAAtD,QAAA,eACf,IAAAP,WAAA,CAAA8D,IAAA,EAAChE,YAAA,CAAAiE,IAAI;QAACC,KAAK,EAAE;UAAEC,IAAI,EAAE,CAAC;UAAEC,cAAc,EAAE;QAAW,CAAE;QAAA3D,QAAA,gBACnD,IAAAP,WAAA,CAAAuD,GAAA,EAACzD,YAAA,CAAAqB,QAAQ,CAAC4C,IAAI;UACZC,KAAK,EAAE;YACLG,QAAQ,EAAE,UAAU;YACpBC,GAAG,EAAE,CAAC;YACNC,KAAK,EAAE,CAAC;YACRC,MAAM,EAAE,CAAC;YACTC,IAAI,EAAE,CAAC;YACPC,eAAe,EAAE,kBAAkB;YACnCC,OAAO,EAAEnD;UACX,CAAE;UAAAf,QAAA,eAEF,IAAAP,WAAA,CAAAuD,GAAA,EAACzD,YAAA,CAAA4E,SAAS;YACRV,KAAK,EAAE;cAAEC,IAAI,EAAE;YAAE,CAAE;YACnBU,OAAO,EAAElC,YAAa;YACtBmC,kBAAkB,EAAC;UAAe,CACnC;QAAC,CACW,CAAC,eAEhB,IAAA5E,WAAA,CAAA8D,IAAA,EAAChE,YAAA,CAAAqB,QAAQ,CAAC4C,IAAI;UACZC,KAAK,EAAE;YACLxD,MAAM,EAAEG,WAAW;YACnB6D,eAAe,EAAElE,KAAK,CAACuE,MAAM,CAACC,EAAE;YAChCC,mBAAmB,EAAEzE,KAAK,CAAC0E,KAAK,CAACC,KAAK;YACtCC,oBAAoB,EAAE5E,KAAK,CAAC0E,KAAK,CAACC,KAAK;YACvCE,WAAW,EAAE,CAAC;YACdC,iBAAiB,EAAE,CAAC;YACpBC,WAAW,EAAE/E,KAAK,CAACuE,MAAM,CAACS,MAAM;YAChCC,QAAQ,EAAE,QAAQ;YAClBC,SAAS,EAAE,CAAC;cAAEvE;YAAW,CAAC,CAAC;YAC3B,GAAGX,KAAK,CAACmF,OAAO,CAACR;UACnB,CAAE;UAAA1E,QAAA,gBAGF,IAAAP,WAAA,CAAAuD,GAAA,EAACzD,YAAA,CAAAiE,IAAI;YAAA,GACCpB,YAAY,CAAC+C,WAAW;YAC5B1B,KAAK,EAAE;cAAE2B,UAAU,EAAE,QAAQ;cAAEC,UAAU,EAAE,EAAE;cAAEC,aAAa,EAAE;YAAE,CAAE;YAAAtF,QAAA,eAElE,IAAAP,WAAA,CAAAuD,GAAA,EAACzD,YAAA,CAAAiE,IAAI;cACHC,KAAK,EAAE;gBACL8B,KAAK,EAAE,EAAE;gBACTtF,MAAM,EAAE,CAAC;gBACTuF,YAAY,EAAE,CAAC;gBACfvB,eAAe,EAAElE,KAAK,CAACuE,MAAM,CAACmB;cAChC;YAAE,CACH;UAAC,CACE,CAAC,eACP,IAAAhG,WAAA,CAAAuD,GAAA,EAACxD,2BAAA,CAAAkG,YAAY;YAACC,KAAK,EAAE,CAAC,QAAQ,CAAE;YAAClC,KAAK,EAAE;cAAEC,IAAI,EAAE;YAAE,CAAE;YAAA1D,QAAA,EACjDA;UAAQ,CACG,CAAC;QAAA,CACF,CAAC;MAAA,CACZ;IAAC,CACS;EAAC,CACd,CAAC;AAEZ","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_reactNativeSafeAreaContext","_jsxRuntime","SLIDE_MS","FADE_MS","BottomSheet","visible","onClose","theme","children","height","windowHeight","useWindowDimensions","sheetHeight","Math","min","rendered","setRendered","useState","translateY","useRef","Animated","Value","current","backdrop","shown","useEffect","setValue","parallel","timing","toValue","duration","easing","Easing","bezier","useNativeDriver","out","cubic","start","motion","slow","in","finished","requestClose","useCallback","panResponder","PanResponder","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","_e","g","abs","dy","onPanResponderMove","onPanResponderRelease","vy","jsx","Modal","transparent","animationType","onRequestClose","statusBarTranslucent","SafeAreaProvider","jsxs","View","style","flex","justifyContent","position","top","right","bottom","left","backgroundColor","opacity","Pressable","onPress","accessibilityLabel","colors","sheet","borderTopLeftRadius","radii","borderTopRightRadius","borderWidth","borderBottomWidth","borderColor","border","overflow","transform","shadows","panHandlers","alignItems","paddingTop","paddingBottom","width","borderRadius","borderStrong","SafeAreaView","edges"],"sourceRoot":"../../../src","sources":["components/BottomSheet.tsx"],"mappings":"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","ignoreList":[]}
@@ -62,7 +62,7 @@ function LauncherButton({
62
62
  const soft = variant === 'soft';
63
63
  const fill = solid ? theme.colors.accent : soft ? theme.colors.surface : 'transparent';
64
64
  const markColor = solid ? theme.colors.accentForeground : soft ? theme.colors.accent : theme.launcher.minimalMark;
65
- // Dots are punched out of the bubble in whatever sits behind the mark —
65
+ // The gap between the bubbles is cut in whatever sits behind the mark —
66
66
  // the button's own fill, or the app background when there isn't one.
67
67
  const markHoleColor = solid ? theme.colors.accent : soft ? theme.colors.surface : theme.colors.bg;
68
68
  // Dark: a hairline separates the fill from a near-black app background.
@@ -81,7 +81,7 @@ function LauncherButton({
81
81
  const badgeBg = solid ? theme.colors.accentForeground : theme.colors.accent;
82
82
  const badgeFg = solid ? theme.colors.accent : theme.colors.accentForeground;
83
83
  const height = label ? Math.max(44, size * 0.84) : size;
84
- const markSize = Math.round(size * (label ? 0.36 : 0.42));
84
+ const markSize = Math.round(size * (label ? 0.4 : 0.46));
85
85
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Animated.View, {
86
86
  style: [{
87
87
  transform: [{
@@ -133,9 +133,9 @@ function LauncherButton({
133
133
  ...border,
134
134
  ...(variant === 'minimal' ? null : theme.shadows.launcher)
135
135
  },
136
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.ChatBubbleMark, {
136
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.ConversationMark, {
137
137
  color: markColor,
138
- dotColor: markHoleColor,
138
+ holeColor: markHoleColor,
139
139
  size: markSize
140
140
  }), label !== undefined && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
141
141
  style: {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNative","_icons","_jsxRuntime","PRESS_SCALE","badgeLabel","unread","String","LauncherButton","theme","variant","size","label","style","onPress","scale","useRef","Animated","Value","current","pulse","previousUnread","useEffect","setValue","animation","loop","timing","toValue","duration","easing","Easing","out","ease","useNativeDriver","iterations","start","stop","undefined","press","to","motion","base","fast","cubic","solid","soft","fill","colors","accent","surface","markColor","accentForeground","launcher","minimalMark","markHoleColor","bg","border","borderWidth","borderColor","solidRing","badgeBg","badgeFg","height","Math","max","markSize","round","jsxs","View","transform","pointerEvents","children","jsx","position","top","left","width","right","borderRadius","radii","pill","backgroundColor","opacity","interpolate","inputRange","outputRange","Pressable","onPressIn","onPressOut","hitSlop","accessibilityRole","accessibilityLabel","paddingHorizontal","flexDirection","alignItems","justifyContent","gap","shadows","ChatBubbleMark","color","dotColor","Text","fontSize","fontWeight","letterSpacing","textPrimary","minWidth","badge","lineHeight","fontVariant"],"sourceRoot":"../../../src","sources":["components/LauncherButton.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNative","_icons","_jsxRuntime","PRESS_SCALE","badgeLabel","unread","String","LauncherButton","theme","variant","size","label","style","onPress","scale","useRef","Animated","Value","current","pulse","previousUnread","useEffect","setValue","animation","loop","timing","toValue","duration","easing","Easing","out","ease","useNativeDriver","iterations","start","stop","undefined","press","to","motion","base","fast","cubic","solid","soft","fill","colors","accent","surface","markColor","accentForeground","launcher","minimalMark","markHoleColor","bg","border","borderWidth","borderColor","solidRing","badgeBg","badgeFg","height","Math","max","markSize","round","jsxs","View","transform","pointerEvents","children","jsx","position","top","left","width","right","borderRadius","radii","pill","backgroundColor","opacity","interpolate","inputRange","outputRange","Pressable","onPressIn","onPressOut","hitSlop","accessibilityRole","accessibilityLabel","paddingHorizontal","flexDirection","alignItems","justifyContent","gap","shadows","ConversationMark","color","holeColor","Text","fontSize","fontWeight","letterSpacing","textPrimary","minWidth","badge","lineHeight","fontVariant"],"sourceRoot":"../../../src","sources":["components/LauncherButton.tsx"],"mappings":"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","ignoreList":[]}
@@ -7,39 +7,57 @@ 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");
13
+ var _review = require("../review");
11
14
  var _theme = require("../theme");
12
15
  var _useSupportThreads = require("../useSupportThreads");
13
16
  var _utils = require("../utils");
14
17
  var _BottomSheet = require("./BottomSheet");
15
18
  var _LauncherButton = require("./LauncherButton");
16
- var _ComposeScreen = require("./screens/ComposeScreen");
17
- var _HomeScreen = require("./screens/HomeScreen");
18
- var _ThreadScreen = require("./screens/ThreadScreen");
19
+ var _ChatScreen = require("./screens/ChatScreen");
20
+ var _LanguageScreen = require("./screens/LanguageScreen");
19
21
  var _jsxRuntime = require("react/jsx-runtime");
20
22
  /**
21
23
  * The single entry point of the SDK: a launcher with an unread badge that
22
- * opens the support bottom sheet. Threads, polling, and read receipts are
23
- * handled by useSupportThreads.
24
+ * opens the support chat in a bottom sheet. Conversations, polling, and read
25
+ * receipts are handled by useSupportThreads.
24
26
  */
25
27
  function SupportButton(props) {
26
28
  const validationError = (0, _utils.validateProps)(props);
27
- const theme = (0, _react.useMemo)(() => (0, _theme.resolveTheme)(props.theme, props.accentColor), [props.theme, props.accentColor]);
29
+
30
+ // "system" (the default) follows the host app's appearance and re-renders
31
+ // when it changes.
32
+ const colorScheme = (0, _reactNative.useColorScheme)();
33
+ const themeName = props.theme === 'light' || props.theme === 'dark' ? props.theme : colorScheme === 'dark' ? 'dark' : 'light';
34
+ // Picked down to one string first, so an inline `{ light, dark }` object
35
+ // doesn't rebuild the theme on every render.
36
+ const perModeAccent = typeof props.accentColor === 'object' && props.accentColor !== null;
37
+ const accent = perModeAccent ? props.accentColor[themeName] : props.accentColor;
38
+ const theme = (0, _react.useMemo)(() => (0, _theme.themeFor)(themeName, accent, !perModeAccent), [themeName, accent, perModeAccent]);
28
39
  const config = (0, _react.useMemo)(() => ({
29
40
  supabaseUrl: props.supabaseUrl,
30
41
  apiKey: props.apiKey,
31
42
  appName: props.appName
32
43
  }), [props.supabaseUrl, props.apiKey, props.appName]);
33
44
  const [sheetOpen, setSheetOpen] = (0, _react.useState)(false);
34
- const [screen, setScreen] = (0, _react.useState)({
35
- name: 'home'
36
- });
45
+ const [screen, setScreen] = (0, _react.useState)('chat');
46
+
47
+ /**
48
+ * What the user picked, once they have picked. Until then the sheet is
49
+ * rendered in the host app's hint or the device's language, which is a
50
+ * guess — hence `chosen`, which is what decides whether to ask.
51
+ */
52
+ const [chosen, setChosen] = (0, _react.useState)(null);
37
53
  const {
38
54
  threads,
39
55
  totalUnread,
40
56
  loading,
41
- refreshing,
42
- error,
57
+ errorKey,
58
+ serverLanguage,
59
+ languageLoaded,
60
+ store,
43
61
  refresh,
44
62
  reload
45
63
  } = (0, _useSupportThreads.useSupportThreads)({
@@ -47,9 +65,31 @@ function SupportButton(props) {
47
65
  revenuecatId: props.user.revenuecatId,
48
66
  enabled: validationError === null,
49
67
  sheetOpen,
50
- activeThreadId: screen.name === 'thread' ? screen.threadId : null,
68
+ // Not while the first-run language prompt covers it: nothing behind
69
+ // the prompt has been seen, so nothing may be marked read.
70
+ chatVisible: sheetOpen && screen === 'chat' && chosen !== null,
51
71
  idlePollMs: props.pollIntervalMs ?? _useSupportThreads.IDLE_POLL_MS
52
72
  });
73
+ const [draftLanguage, setDraftLanguage] = (0, _react.useState)(null);
74
+ const [savingLanguage, setSavingLanguage] = (0, _react.useState)(false);
75
+ const [languageError, setLanguageError] = (0, _react.useState)(null);
76
+
77
+ // A preference saved on another device (or an earlier install) wins over
78
+ // any local guess, and answers the "have they chosen?" question for free.
79
+ (0, _react.useEffect)(() => {
80
+ const stored = (0, _languages.asLanguage)(serverLanguage);
81
+ if (stored !== null) setChosen(stored);
82
+ }, [serverLanguage]);
83
+ const fallbackLanguage = props.defaultLanguage ?? (0, _languages.deviceLanguage)() ?? _languages.DEFAULT_LANGUAGE;
84
+ const language = chosen ?? fallbackLanguage;
85
+ const strings = (0, _react.useMemo)(() => (0, _i18n.createTranslator)(draftLanguage ?? language), [draftLanguage, language]);
86
+
87
+ /**
88
+ * Ask once, on first open — but only once the server has told us whether
89
+ * this user already answered. Asking before then would show the picker to
90
+ * someone who chose months ago on another device.
91
+ */
92
+ const mustChooseLanguage = languageLoaded && chosen === null;
53
93
 
54
94
  /**
55
95
  * Asks for notification permission the moment the sheet opens, then
@@ -71,10 +111,60 @@ function SupportButton(props) {
71
111
  // Push is an enhancement — never surfaced to the user as an error.
72
112
  }
73
113
  }, [config, props.user.revenuecatId, props.expoProjectId, validationError]);
74
- function openSheet() {
75
- setScreen({
76
- name: 'home'
114
+ const {
115
+ name: userName,
116
+ revenuecatId,
117
+ appVersion
118
+ } = props.user;
119
+ const plan = (0, _utils.userPlan)(props.user);
120
+
121
+ /**
122
+ * Reports the user on load, and whenever who they are changes, so the team
123
+ * can find and message them before they ever open support. Refreshes the
124
+ * push token too when permission was already granted — never prompting:
125
+ * the OS prompt only appears once the user opens support.
126
+ */
127
+ (0, _react.useEffect)(() => {
128
+ if (validationError !== null) return;
129
+ (0, _api.registerUser)(config, {
130
+ revenuecatId,
131
+ user: {
132
+ name: userName,
133
+ plan,
134
+ appVersion,
135
+ platform: (0, _review.storePlatform)()
136
+ }
137
+ }).catch(() => {
138
+ // Best effort; the next load reports again.
139
+ });
140
+ if (!_push.isPushAvailable) return;
141
+ void (async () => {
142
+ const registration = await (0, _push.ensurePushPermission)(props.expoProjectId, {
143
+ prompt: false
144
+ });
145
+ if (registration.status !== 'granted') return;
146
+ await (0, _api.registerPush)(config, {
147
+ revenuecatId,
148
+ permissionStatus: registration.status,
149
+ expoPushToken: registration.token,
150
+ asked: false
151
+ });
152
+ })().catch(() => {});
153
+ }, [config, validationError, revenuecatId, userName, plan, appVersion, props.expoProjectId]);
154
+
155
+ // A tapped support-reply notification opens the chat. If the threads
156
+ // haven't loaded yet (cold start), it fills in as soon as they do.
157
+ (0, _react.useEffect)(() => {
158
+ if (validationError !== null) return;
159
+ return (0, _push.onSupportNotificationTap)(() => {
160
+ setDraftLanguage(null);
161
+ setLanguageError(null);
162
+ setScreen('chat');
163
+ setSheetOpen(true);
77
164
  });
165
+ }, [validationError]);
166
+ function openSheet() {
167
+ setScreen('chat');
78
168
  setSheetOpen(true);
79
169
  // The OS prompt appears right as the sheet opens; if the user declines,
80
170
  // everything below carries on exactly as before.
@@ -82,9 +172,9 @@ function SupportButton(props) {
82
172
  }
83
173
  function closeSheet() {
84
174
  setSheetOpen(false);
85
- setScreen({
86
- name: 'home'
87
- });
175
+ setScreen('chat');
176
+ setDraftLanguage(null);
177
+ setLanguageError(null);
88
178
  }
89
179
  if (validationError !== null) {
90
180
  // Dev-mode: loud and actionable. Production: render nothing rather than
@@ -111,33 +201,52 @@ function SupportButton(props) {
111
201
  }
112
202
  function writeErrorMessage(e) {
113
203
  if (e instanceof _api.SupportApiError) {
114
- if (e.status === 429) return 'Too many requests — try again later';
115
- if (e.offline) return "You're offline — check your connection";
204
+ if (e.status === 429) return strings.t('error.rateLimited');
205
+ if (e.offline) return strings.t('error.offline');
116
206
  }
117
- return "Couldn't send — try again";
207
+ return strings.t('error.sendFailed');
118
208
  }
119
- async function handleSubmit(type, message) {
209
+
210
+ /**
211
+ * Persists the picked language and leaves the picker.
212
+ *
213
+ * A failed save keeps the user on the screen with a retry: getting this
214
+ * wrong means every message they write is translated from the wrong
215
+ * language, which is worse than one more tap.
216
+ */
217
+ async function confirmLanguage() {
218
+ const next = draftLanguage ?? language;
219
+ setSavingLanguage(true);
220
+ setLanguageError(null);
120
221
  try {
121
- await (0, _api.submitQuery)(config, {
122
- queryType: type,
123
- message,
124
- userName: props.user.name,
125
- isPaid: props.user.isPaid,
222
+ await (0, _api.setLanguage)(config, {
126
223
  revenuecatId: props.user.revenuecatId,
127
- appVersion: props.user.appVersion
224
+ language: next
128
225
  });
226
+ setChosen(next);
227
+ setDraftLanguage(null);
228
+ setScreen('chat');
229
+ // On a change, the server re-queues existing replies for translation
230
+ // into the new language; they arrive over the next poll or two.
129
231
  void reload();
130
- return null;
131
232
  } catch (e) {
132
- return writeErrorMessage(e);
233
+ setLanguageError(e instanceof _api.SupportApiError && e.offline ? strings.t('error.offline') : strings.t('lang.saveFailed'));
234
+ } finally {
235
+ setSavingLanguage(false);
133
236
  }
134
237
  }
135
- async function handleSend(threadId, message) {
238
+ async function handleSend(message) {
136
239
  try {
137
- await (0, _api.postMessage)(config, {
138
- queryId: threadId,
139
- revenuecatId: props.user.revenuecatId,
140
- message
240
+ await (0, _api.sendMessage)(config, {
241
+ revenuecatId,
242
+ message,
243
+ language,
244
+ user: {
245
+ name: userName,
246
+ plan,
247
+ appVersion,
248
+ platform: (0, _review.storePlatform)()
249
+ }
141
250
  });
142
251
  await reload();
143
252
  return null;
@@ -145,23 +254,37 @@ function SupportButton(props) {
145
254
  return writeErrorMessage(e);
146
255
  }
147
256
  }
148
- const activeThread = screen.name === 'thread' ? (threads ?? []).find(t => t.id === screen.threadId) ?? null : null;
149
- const home = /*#__PURE__*/(0, _jsxRuntime.jsx)(_HomeScreen.HomeScreen, {
257
+ const reviewLinks = (0, _review.storeLinks)(store);
258
+ const reviewLabel = reviewLinks === null ? null : strings.t(_reactNative.Platform.OS === 'ios' ? 'review.appStore' : 'review.playStore');
259
+
260
+ /** Opens the store's review page and lets the team know it was tapped. */
261
+ function openReview(messageId) {
262
+ if (reviewLinks === null) return;
263
+ void (0, _review.openStoreReview)(reviewLinks);
264
+ (0, _api.reviewOpened)(config, {
265
+ revenuecatId,
266
+ messageId
267
+ }).catch(() => {
268
+ // The receipt is for the dashboard; the user already has the store.
269
+ });
270
+ }
271
+ const languagePicker = /*#__PURE__*/(0, _jsxRuntime.jsx)(_LanguageScreen.LanguageScreen, {
150
272
  theme: theme,
151
- threads: threads,
152
- loading: loading,
153
- refreshing: refreshing,
154
- error: error,
155
- onRefresh: refresh,
156
- onCompose: type => setScreen({
157
- name: 'compose',
158
- type
159
- }),
160
- onOpenThread: thread => setScreen({
161
- name: 'thread',
162
- threadId: thread.id
163
- }),
164
- onClose: closeSheet
273
+ strings: strings,
274
+ selected: draftLanguage ?? language,
275
+ onSelect: setDraftLanguage,
276
+ onConfirm: () => void confirmLanguage()
277
+ // No way back on first run: there is nothing behind it yet, so the
278
+ // only exit is choosing — or closing the sheet, which asks again.
279
+ ,
280
+ onBack: mustChooseLanguage ? undefined : () => {
281
+ setDraftLanguage(null);
282
+ setLanguageError(null);
283
+ setScreen('chat');
284
+ },
285
+ onDismiss: mustChooseLanguage ? closeSheet : undefined,
286
+ saving: savingLanguage,
287
+ error: languageError
165
288
  });
166
289
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
167
290
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_LauncherButton.LauncherButton, {
@@ -172,25 +295,28 @@ function SupportButton(props) {
172
295
  label: props.label,
173
296
  style: props.style,
174
297
  onPress: openSheet
175
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_BottomSheet.BottomSheet, {
298
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_BottomSheet.BottomSheet, {
176
299
  visible: sheetOpen,
177
300
  onClose: closeSheet,
178
301
  theme: theme,
179
- children: [screen.name === 'home' && home, screen.name === 'compose' && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ComposeScreen.ComposeScreen, {
302
+ children: mustChooseLanguage || screen === 'language' ? languagePicker : /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChatScreen.ChatScreen, {
180
303
  theme: theme,
181
- type: screen.type,
182
- onBack: () => setScreen({
183
- name: 'home'
184
- }),
185
- onSubmit: message => handleSubmit(screen.type, message)
186
- }), screen.name === 'thread' && (activeThread !== null ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ThreadScreen.ThreadScreen, {
187
- theme: theme,
188
- thread: activeThread,
189
- onBack: () => setScreen({
190
- name: 'home'
191
- }),
192
- onSend: message => handleSend(activeThread.id, message)
193
- }) : home)]
304
+ strings: strings,
305
+ language: language,
306
+ threads: threads,
307
+ loading: loading,
308
+ error: errorKey === null ? null : strings.t(errorKey),
309
+ onRetry: refresh,
310
+ onSend: handleSend,
311
+ onChangeLanguage: () => {
312
+ setDraftLanguage(language);
313
+ setLanguageError(null);
314
+ setScreen('language');
315
+ },
316
+ onClose: closeSheet,
317
+ reviewLabel: reviewLabel,
318
+ onOpenReview: openReview
319
+ })
194
320
  })]
195
321
  });
196
322
  }