react-native-chatbot-ai 0.1.19 → 0.1.22

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 (263) hide show
  1. package/lib/module/components/Drawer/DeleteSessionPopup.js +113 -0
  2. package/lib/module/components/Drawer/DeleteSessionPopup.js.map +1 -0
  3. package/lib/module/components/Drawer/DrawerContent.js +21 -8
  4. package/lib/module/components/Drawer/DrawerContent.js.map +1 -1
  5. package/lib/module/components/Drawer/RenameSessionPopup.js +121 -0
  6. package/lib/module/components/Drawer/RenameSessionPopup.js.map +1 -0
  7. package/lib/module/components/Drawer/SearchInput.js +10 -3
  8. package/lib/module/components/Drawer/SearchInput.js.map +1 -1
  9. package/lib/module/components/Drawer/SessionItem.js +36 -20
  10. package/lib/module/components/Drawer/SessionItem.js.map +1 -1
  11. package/lib/module/components/Drawer/SessionList.js +2 -5
  12. package/lib/module/components/Drawer/SessionList.js.map +1 -1
  13. package/lib/module/components/Drawer/SessionOptionsBottomSheet.js +129 -0
  14. package/lib/module/components/Drawer/SessionOptionsBottomSheet.js.map +1 -0
  15. package/lib/module/components/Drawer/ShareSessionPopup.js +132 -0
  16. package/lib/module/components/Drawer/ShareSessionPopup.js.map +1 -0
  17. package/lib/module/components/chat/ChatEmpty.js +15 -4
  18. package/lib/module/components/chat/ChatEmpty.js.map +1 -1
  19. package/lib/module/components/chat/ChatHeader.js +10 -4
  20. package/lib/module/components/chat/ChatHeader.js.map +1 -1
  21. package/lib/module/components/chat/ChatMessageList.js +75 -24
  22. package/lib/module/components/chat/ChatMessageList.js.map +1 -1
  23. package/lib/module/components/chat/SuggestionItem.js +2 -1
  24. package/lib/module/components/chat/SuggestionItem.js.map +1 -1
  25. package/lib/module/components/chat/footer/index.js +77 -15
  26. package/lib/module/components/chat/footer/index.js.map +1 -1
  27. package/lib/module/components/chat/footer/item/UploadImageItem.js +21 -1
  28. package/lib/module/components/chat/footer/item/UploadImageItem.js.map +1 -1
  29. package/lib/module/components/chat/index.js +7 -6
  30. package/lib/module/components/chat/index.js.map +1 -1
  31. package/lib/module/components/chat/item/ChatAIAnswerMessageItem.js +36 -5
  32. package/lib/module/components/chat/item/ChatAIAnswerMessageItem.js.map +1 -1
  33. package/lib/module/components/chat/item/DeeplinkItem.js +30 -2
  34. package/lib/module/components/chat/item/DeeplinkItem.js.map +1 -1
  35. package/lib/module/components/chat/item/MessageActionsBar.js +243 -0
  36. package/lib/module/components/chat/item/MessageActionsBar.js.map +1 -0
  37. package/lib/module/components/chat/item/actions/ActionButton.js +56 -0
  38. package/lib/module/components/chat/item/actions/ActionButton.js.map +1 -0
  39. package/lib/module/components/portal/BottomSheet.js +245 -0
  40. package/lib/module/components/portal/BottomSheet.js.map +1 -0
  41. package/lib/module/components/portal/Popup.js +278 -0
  42. package/lib/module/components/portal/Popup.js.map +1 -0
  43. package/lib/module/components/portal/index.js +11 -5
  44. package/lib/module/components/portal/index.js.map +1 -1
  45. package/lib/module/components/product/CardHorizontal.js +44 -7
  46. package/lib/module/components/product/CardHorizontal.js.map +1 -1
  47. package/lib/module/constants/events.js +33 -0
  48. package/lib/module/constants/events.js.map +1 -1
  49. package/lib/module/constants/index.js +5 -1
  50. package/lib/module/constants/index.js.map +1 -1
  51. package/lib/module/constants/query.js +5 -1
  52. package/lib/module/constants/query.js.map +1 -1
  53. package/lib/module/context/ChatContext.js +9 -3
  54. package/lib/module/context/ChatContext.js.map +1 -1
  55. package/lib/module/hooks/message/useSendMessage.js +21 -3
  56. package/lib/module/hooks/message/useSendMessage.js.map +1 -1
  57. package/lib/module/hooks/message/useStreamMessage.js +10 -3
  58. package/lib/module/hooks/message/useStreamMessage.js.map +1 -1
  59. package/lib/module/hooks/messageActions/index.js +13 -0
  60. package/lib/module/hooks/messageActions/index.js.map +1 -0
  61. package/lib/module/hooks/messageActions/useAudioPlayer.js +269 -0
  62. package/lib/module/hooks/messageActions/useAudioPlayer.js.map +1 -0
  63. package/lib/module/hooks/messageActions/useCopyToClipboard.js +38 -0
  64. package/lib/module/hooks/messageActions/useCopyToClipboard.js.map +1 -0
  65. package/lib/module/hooks/messageActions/useFeedback.js +93 -0
  66. package/lib/module/hooks/messageActions/useFeedback.js.map +1 -0
  67. package/lib/module/hooks/messageActions/useSendFeedback.js +24 -0
  68. package/lib/module/hooks/messageActions/useSendFeedback.js.map +1 -0
  69. package/lib/module/hooks/messageActions/useShareMessage.js +128 -0
  70. package/lib/module/hooks/messageActions/useShareMessage.js.map +1 -0
  71. package/lib/module/hooks/session/useDeleteSession.js +23 -0
  72. package/lib/module/hooks/session/useDeleteSession.js.map +1 -0
  73. package/lib/module/hooks/session/useRenameSession.js +28 -0
  74. package/lib/module/hooks/session/useRenameSession.js.map +1 -0
  75. package/lib/module/hooks/session/useSearchSessions.js +5 -1
  76. package/lib/module/hooks/session/useSearchSessions.js.map +1 -1
  77. package/lib/module/hooks/session/useShareSession.js +16 -0
  78. package/lib/module/hooks/session/useShareSession.js.map +1 -0
  79. package/lib/module/hooks/upload/useImageUpload.js +2 -1
  80. package/lib/module/hooks/upload/useImageUpload.js.map +1 -1
  81. package/lib/module/services/endpoints.js +6 -1
  82. package/lib/module/services/endpoints.js.map +1 -1
  83. package/lib/module/services/index.js +1 -0
  84. package/lib/module/services/index.js.map +1 -1
  85. package/lib/module/services/playbackService.js +22 -0
  86. package/lib/module/services/playbackService.js.map +1 -0
  87. package/lib/module/store/audioPlayer.js +75 -0
  88. package/lib/module/store/audioPlayer.js.map +1 -0
  89. package/lib/module/store/messageActions.js +160 -0
  90. package/lib/module/store/messageActions.js.map +1 -0
  91. package/lib/module/store/session.js +6 -3
  92. package/lib/module/store/session.js.map +1 -1
  93. package/lib/module/translation/index.js +21 -25
  94. package/lib/module/translation/index.js.map +1 -1
  95. package/lib/module/translation/resources/i18n.js +39 -0
  96. package/lib/module/translation/resources/i18n.js.map +1 -0
  97. package/lib/module/types/chat.js +12 -1
  98. package/lib/module/types/chat.js.map +1 -1
  99. package/lib/module/types/index.js +1 -0
  100. package/lib/module/types/index.js.map +1 -1
  101. package/lib/module/types/messageActions.js +56 -0
  102. package/lib/module/types/messageActions.js.map +1 -0
  103. package/lib/module/utils/textCleaner.js +67 -0
  104. package/lib/module/utils/textCleaner.js.map +1 -0
  105. package/lib/module/utils/ui.js +27 -1
  106. package/lib/module/utils/ui.js.map +1 -1
  107. package/lib/typescript/src/components/Drawer/DeleteSessionPopup.d.ts +3 -0
  108. package/lib/typescript/src/components/Drawer/DeleteSessionPopup.d.ts.map +1 -0
  109. package/lib/typescript/src/components/Drawer/DrawerContent.d.ts.map +1 -1
  110. package/lib/typescript/src/components/Drawer/RenameSessionPopup.d.ts +3 -0
  111. package/lib/typescript/src/components/Drawer/RenameSessionPopup.d.ts.map +1 -0
  112. package/lib/typescript/src/components/Drawer/SearchInput.d.ts.map +1 -1
  113. package/lib/typescript/src/components/Drawer/SessionItem.d.ts.map +1 -1
  114. package/lib/typescript/src/components/Drawer/SessionList.d.ts.map +1 -1
  115. package/lib/typescript/src/components/Drawer/SessionOptionsBottomSheet.d.ts +3 -0
  116. package/lib/typescript/src/components/Drawer/SessionOptionsBottomSheet.d.ts.map +1 -0
  117. package/lib/typescript/src/components/Drawer/ShareSessionPopup.d.ts +3 -0
  118. package/lib/typescript/src/components/Drawer/ShareSessionPopup.d.ts.map +1 -0
  119. package/lib/typescript/src/components/chat/ChatEmpty.d.ts.map +1 -1
  120. package/lib/typescript/src/components/chat/ChatHeader.d.ts.map +1 -1
  121. package/lib/typescript/src/components/chat/ChatMessageList.d.ts.map +1 -1
  122. package/lib/typescript/src/components/chat/SuggestionItem.d.ts +3 -2
  123. package/lib/typescript/src/components/chat/SuggestionItem.d.ts.map +1 -1
  124. package/lib/typescript/src/components/chat/footer/index.d.ts.map +1 -1
  125. package/lib/typescript/src/components/chat/footer/item/UploadImageItem.d.ts.map +1 -1
  126. package/lib/typescript/src/components/chat/index.d.ts.map +1 -1
  127. package/lib/typescript/src/components/chat/item/ChatAIAnswerMessageItem.d.ts.map +1 -1
  128. package/lib/typescript/src/components/chat/item/DeeplinkItem.d.ts +2 -1
  129. package/lib/typescript/src/components/chat/item/DeeplinkItem.d.ts.map +1 -1
  130. package/lib/typescript/src/components/chat/item/MessageActionsBar.d.ts +16 -0
  131. package/lib/typescript/src/components/chat/item/MessageActionsBar.d.ts.map +1 -0
  132. package/lib/typescript/src/components/chat/item/actions/ActionButton.d.ts +19 -0
  133. package/lib/typescript/src/components/chat/item/actions/ActionButton.d.ts.map +1 -0
  134. package/lib/typescript/src/components/portal/BottomSheet.d.ts +8 -0
  135. package/lib/typescript/src/components/portal/BottomSheet.d.ts.map +1 -0
  136. package/lib/typescript/src/components/portal/Popup.d.ts +4 -0
  137. package/lib/typescript/src/components/portal/Popup.d.ts.map +1 -0
  138. package/lib/typescript/src/components/portal/index.d.ts.map +1 -1
  139. package/lib/typescript/src/components/product/CardHorizontal.d.ts +3 -2
  140. package/lib/typescript/src/components/product/CardHorizontal.d.ts.map +1 -1
  141. package/lib/typescript/src/constants/events.d.ts +33 -0
  142. package/lib/typescript/src/constants/events.d.ts.map +1 -1
  143. package/lib/typescript/src/constants/index.d.ts +5 -1
  144. package/lib/typescript/src/constants/index.d.ts.map +1 -1
  145. package/lib/typescript/src/constants/query.d.ts +4 -0
  146. package/lib/typescript/src/constants/query.d.ts.map +1 -1
  147. package/lib/typescript/src/context/ChatContext.d.ts.map +1 -1
  148. package/lib/typescript/src/hooks/message/useSendMessage.d.ts +2 -2
  149. package/lib/typescript/src/hooks/message/useSendMessage.d.ts.map +1 -1
  150. package/lib/typescript/src/hooks/message/useStreamMessage.d.ts.map +1 -1
  151. package/lib/typescript/src/hooks/messageActions/index.d.ts +10 -0
  152. package/lib/typescript/src/hooks/messageActions/index.d.ts.map +1 -0
  153. package/lib/typescript/src/hooks/messageActions/useAudioPlayer.d.ts +14 -0
  154. package/lib/typescript/src/hooks/messageActions/useAudioPlayer.d.ts.map +1 -0
  155. package/lib/typescript/src/hooks/messageActions/useCopyToClipboard.d.ts +9 -0
  156. package/lib/typescript/src/hooks/messageActions/useCopyToClipboard.d.ts.map +1 -0
  157. package/lib/typescript/src/hooks/messageActions/useFeedback.d.ts +18 -0
  158. package/lib/typescript/src/hooks/messageActions/useFeedback.d.ts.map +1 -0
  159. package/lib/typescript/src/hooks/messageActions/useSendFeedback.d.ts +6 -0
  160. package/lib/typescript/src/hooks/messageActions/useSendFeedback.d.ts.map +1 -0
  161. package/lib/typescript/src/hooks/messageActions/useShareMessage.d.ts +12 -0
  162. package/lib/typescript/src/hooks/messageActions/useShareMessage.d.ts.map +1 -0
  163. package/lib/typescript/src/hooks/session/useDeleteSession.d.ts +2 -0
  164. package/lib/typescript/src/hooks/session/useDeleteSession.d.ts.map +1 -0
  165. package/lib/typescript/src/hooks/session/useRenameSession.d.ts +2 -0
  166. package/lib/typescript/src/hooks/session/useRenameSession.d.ts.map +1 -0
  167. package/lib/typescript/src/hooks/session/useSearchSessions.d.ts +1 -1
  168. package/lib/typescript/src/hooks/session/useSearchSessions.d.ts.map +1 -1
  169. package/lib/typescript/src/hooks/session/useShareSession.d.ts +2 -0
  170. package/lib/typescript/src/hooks/session/useShareSession.d.ts.map +1 -0
  171. package/lib/typescript/src/hooks/upload/useImageUpload.d.ts +1 -1
  172. package/lib/typescript/src/hooks/upload/useImageUpload.d.ts.map +1 -1
  173. package/lib/typescript/src/services/endpoints.d.ts +5 -0
  174. package/lib/typescript/src/services/endpoints.d.ts.map +1 -1
  175. package/lib/typescript/src/services/index.d.ts +1 -0
  176. package/lib/typescript/src/services/index.d.ts.map +1 -1
  177. package/lib/typescript/src/services/playbackService.d.ts +2 -0
  178. package/lib/typescript/src/services/playbackService.d.ts.map +1 -0
  179. package/lib/typescript/src/store/audioPlayer.d.ts +27 -0
  180. package/lib/typescript/src/store/audioPlayer.d.ts.map +1 -0
  181. package/lib/typescript/src/store/messageActions.d.ts +9 -0
  182. package/lib/typescript/src/store/messageActions.d.ts.map +1 -0
  183. package/lib/typescript/src/store/session.d.ts.map +1 -1
  184. package/lib/typescript/src/translation/index.d.ts +3 -4
  185. package/lib/typescript/src/translation/index.d.ts.map +1 -1
  186. package/lib/typescript/src/translation/resources/i18n.d.ts +5 -0
  187. package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -0
  188. package/lib/typescript/src/types/chat.d.ts +16 -1
  189. package/lib/typescript/src/types/chat.d.ts.map +1 -1
  190. package/lib/typescript/src/types/dto.d.ts +11 -0
  191. package/lib/typescript/src/types/dto.d.ts.map +1 -1
  192. package/lib/typescript/src/types/index.d.ts +1 -0
  193. package/lib/typescript/src/types/index.d.ts.map +1 -1
  194. package/lib/typescript/src/types/messageActions.d.ts +85 -0
  195. package/lib/typescript/src/types/messageActions.d.ts.map +1 -0
  196. package/lib/typescript/src/types/ui.d.ts +16 -1
  197. package/lib/typescript/src/types/ui.d.ts.map +1 -1
  198. package/lib/typescript/src/utils/textCleaner.d.ts +30 -0
  199. package/lib/typescript/src/utils/textCleaner.d.ts.map +1 -0
  200. package/lib/typescript/src/utils/ui.d.ts +12 -1
  201. package/lib/typescript/src/utils/ui.d.ts.map +1 -1
  202. package/package.json +6 -6
  203. package/src/components/Drawer/DeleteSessionPopup.tsx +121 -0
  204. package/src/components/Drawer/DrawerContent.tsx +23 -7
  205. package/src/components/Drawer/RenameSessionPopup.tsx +145 -0
  206. package/src/components/Drawer/SearchInput.tsx +11 -2
  207. package/src/components/Drawer/SessionItem.tsx +22 -8
  208. package/src/components/Drawer/SessionList.tsx +0 -2
  209. package/src/components/Drawer/SessionOptionsBottomSheet.tsx +138 -0
  210. package/src/components/Drawer/ShareSessionPopup.tsx +145 -0
  211. package/src/components/chat/ChatEmpty.tsx +15 -5
  212. package/src/components/chat/ChatHeader.tsx +9 -4
  213. package/src/components/chat/ChatMessageList.tsx +78 -18
  214. package/src/components/chat/SuggestionItem.tsx +4 -3
  215. package/src/components/chat/footer/index.tsx +95 -14
  216. package/src/components/chat/footer/item/UploadImageItem.tsx +21 -1
  217. package/src/components/chat/index.tsx +8 -11
  218. package/src/components/chat/item/ChatAIAnswerMessageItem.tsx +55 -6
  219. package/src/components/chat/item/DeeplinkItem.tsx +30 -2
  220. package/src/components/chat/item/MessageActionsBar.tsx +326 -0
  221. package/src/components/chat/item/actions/ActionButton.tsx +65 -0
  222. package/src/components/portal/BottomSheet.tsx +307 -0
  223. package/src/components/portal/Popup.tsx +345 -0
  224. package/src/components/portal/index.tsx +5 -1
  225. package/src/components/product/CardHorizontal.tsx +45 -10
  226. package/src/constants/events.ts +34 -0
  227. package/src/constants/index.ts +6 -1
  228. package/src/constants/query.ts +4 -0
  229. package/src/context/ChatContext.tsx +6 -0
  230. package/src/hooks/message/useSendMessage.ts +47 -4
  231. package/src/hooks/message/useStreamMessage.ts +15 -4
  232. package/src/hooks/messageActions/index.ts +10 -0
  233. package/src/hooks/messageActions/useAudioPlayer.ts +346 -0
  234. package/src/hooks/messageActions/useCopyToClipboard.ts +38 -0
  235. package/src/hooks/messageActions/useFeedback.ts +114 -0
  236. package/src/hooks/messageActions/useSendFeedback.ts +31 -0
  237. package/src/hooks/messageActions/useShareMessage.ts +146 -0
  238. package/src/hooks/session/useDeleteSession.ts +25 -0
  239. package/src/hooks/session/useRenameSession.ts +37 -0
  240. package/src/hooks/session/useSearchSessions.ts +6 -1
  241. package/src/hooks/session/useShareSession.ts +22 -0
  242. package/src/hooks/upload/useImageUpload.ts +6 -2
  243. package/src/ignore.d.ts +20 -1
  244. package/src/services/endpoints.ts +10 -0
  245. package/src/services/index.ts +1 -0
  246. package/src/services/playbackService.ts +22 -0
  247. package/src/store/audioPlayer.ts +112 -0
  248. package/src/store/messageActions.ts +161 -0
  249. package/src/store/session.ts +4 -2
  250. package/src/translation/index.ts +27 -19
  251. package/src/translation/resources/i18n.ts +45 -0
  252. package/src/types/chat.ts +21 -1
  253. package/src/types/dto.ts +14 -0
  254. package/src/types/index.ts +1 -0
  255. package/src/types/messageActions.ts +131 -0
  256. package/src/types/ui.ts +19 -1
  257. package/src/utils/textCleaner.ts +65 -0
  258. package/src/utils/ui.tsx +29 -2
  259. package/lib/module/translation/resources/vi.js +0 -12
  260. package/lib/module/translation/resources/vi.js.map +0 -1
  261. package/lib/typescript/src/translation/resources/vi.d.ts +0 -11
  262. package/lib/typescript/src/translation/resources/vi.d.ts.map +0 -1
  263. package/src/translation/resources/vi.ts +0 -10
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * useShareMessage Hook
5
+ * Custom hook for sharing message content via native share sheet
6
+ * Supports platform-specific sharing (Zalo, Facebook, Messenger)
7
+ */
8
+
9
+ import { useCallback } from 'react';
10
+ import Share from 'react-native-share';
11
+ import RNFetchBlob from 'react-native-blob-util';
12
+ import useMessageActionsStore from "../../store/messageActions.js";
13
+ import { ShareState } from "../../types/messageActions.js";
14
+ import UIUtils from "../../utils/ui.js";
15
+ import { cleanMarkdown, truncateText } from "../../utils/textCleaner.js";
16
+ import { useChatContext } from "../../context/ChatContext.js";
17
+ import { GAEvents } from "../../constants/events.js";
18
+ import useSessionStore from "../../store/session.js";
19
+ const MAX_SHARE_TEXT_LENGTH = 3000;
20
+ export const useShareMessage = (messageId, messageContent, productImages) => {
21
+ const logGA = useChatContext().logGA;
22
+ const shareState = useMessageActionsStore(state => state.getShareState(messageId));
23
+ const setShareState = useMessageActionsStore(state => state.setShareState);
24
+ const currentState = shareState?.state || ShareState.idle;
25
+ const shareMessage = useCallback(async () => {
26
+ if (!messageContent || messageContent.trim().length === 0) {
27
+ UIUtils.toast.showError('Không có nội dung để chia sẻ');
28
+ return;
29
+ }
30
+ try {
31
+ setShareState(messageId, ShareState.loading);
32
+
33
+ // Clean and truncate text
34
+ const cleanText = cleanMarkdown(messageContent);
35
+ const truncatedText = truncateText(cleanText, MAX_SHARE_TEXT_LENGTH);
36
+ const localImagePaths = [];
37
+
38
+ // Download all images to local cache if available
39
+ if (productImages && productImages.length > 0) {
40
+ for (let i = 0; i < productImages.length; i++) {
41
+ const imageUrl = productImages[i];
42
+ if (!imageUrl || imageUrl.trim() === '') {
43
+ console.warn(`[Share] Skipping empty image URL at index ${i}`);
44
+ continue;
45
+ }
46
+ try {
47
+ // Use unique timestamp for each image to avoid conflicts
48
+ const timestamp = Date.now() + i;
49
+ const imagePath = `${RNFetchBlob.fs.dirs.CacheDir}/share_image_${timestamp}.jpg`;
50
+ await RNFetchBlob.config({
51
+ path: imagePath
52
+ }).fetch('GET', imageUrl);
53
+
54
+ // Verify file exists and has content
55
+ const fileExists = await RNFetchBlob.fs.exists(imagePath);
56
+ if (!fileExists) {
57
+ continue;
58
+ }
59
+ const fileInfo = await RNFetchBlob.fs.stat(imagePath);
60
+ if (fileInfo.size === 0) {
61
+ await RNFetchBlob.fs.unlink(imagePath);
62
+ continue;
63
+ }
64
+ localImagePaths.push(`file://${imagePath}`);
65
+ } catch (imageError) {
66
+ console.error(`[Share] Failed to download image ${i} (${imageUrl}):`, imageError);
67
+ // Continue with other images
68
+ }
69
+ }
70
+ }
71
+
72
+ // Prepare share options
73
+ const shareOptions = {
74
+ title: 'Chia sẻ từ Chatbot AI',
75
+ message: truncatedText,
76
+ failOnCancel: false
77
+ };
78
+
79
+ // Add image URLs if available
80
+ if (localImagePaths.length === 1) {
81
+ shareOptions.url = localImagePaths[0];
82
+ } else if (localImagePaths.length > 1) {
83
+ shareOptions.urls = localImagePaths;
84
+ }
85
+
86
+ // Open share dialog
87
+ // Platform-specific sharing:
88
+ const result = await Share.open(shareOptions);
89
+
90
+ // Handle success
91
+ if (result) {
92
+ setShareState(messageId, ShareState.success);
93
+
94
+ // Clean up temporary image files
95
+ for (const localImagePath of localImagePaths) {
96
+ try {
97
+ const cleanPath = localImagePath.replace('file://', '');
98
+ await RNFetchBlob.fs.unlink(cleanPath);
99
+ } catch (cleanupError) {
100
+ console.warn('[Share] Failed to cleanup temp image:', cleanupError);
101
+ }
102
+ }
103
+ logGA(GAEvents.chatDetailShareMessBtnTap, {
104
+ conversation_id: useSessionStore.getState().sessionId,
105
+ message_id: messageId
106
+ });
107
+ } else {
108
+ setShareState(messageId, ShareState.idle);
109
+ }
110
+ } catch (error) {
111
+ console.error('Share error:', error);
112
+
113
+ // User cancelled share dialog
114
+ if (error?.message?.includes('User did not share')) {
115
+ setShareState(messageId, ShareState.idle);
116
+ return;
117
+ }
118
+ setShareState(messageId, ShareState.error);
119
+ UIUtils.toast.showError('Không thể chia sẻ. Vui lòng thử lại.');
120
+ }
121
+ }, [messageId, messageContent, productImages, setShareState, logGA]);
122
+ return {
123
+ shareState: currentState,
124
+ isLoading: currentState === ShareState.loading,
125
+ shareMessage
126
+ };
127
+ };
128
+ //# sourceMappingURL=useShareMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","Share","RNFetchBlob","useMessageActionsStore","ShareState","UIUtils","cleanMarkdown","truncateText","useChatContext","GAEvents","useSessionStore","MAX_SHARE_TEXT_LENGTH","useShareMessage","messageId","messageContent","productImages","logGA","shareState","state","getShareState","setShareState","currentState","idle","shareMessage","trim","length","toast","showError","loading","cleanText","truncatedText","localImagePaths","i","imageUrl","console","warn","timestamp","Date","now","imagePath","fs","dirs","CacheDir","config","path","fetch","fileExists","exists","fileInfo","stat","size","unlink","push","imageError","error","shareOptions","title","message","failOnCancel","url","urls","result","open","success","localImagePath","cleanPath","replace","cleanupError","chatDetailShareMessBtnTap","conversation_id","getState","sessionId","message_id","includes","isLoading"],"sourceRoot":"../../../../src","sources":["hooks/messageActions/useShareMessage.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ import { useMutation, useQueryClient } from '@tanstack/react-query';
4
+ import { QUERY_KEYS } from "../../constants/query.js";
5
+ import { apiInstance } from "../../services/apis.js";
6
+ import { ENDPOINTS } from "../../services/endpoints.js";
7
+ export const useDeleteSession = () => {
8
+ const queryClient = useQueryClient();
9
+ return useMutation({
10
+ mutationKey: [QUERY_KEYS.DELETE_SESSION],
11
+ mutationFn: async sessionId => {
12
+ const res = await apiInstance?.delete(ENDPOINTS.assistantService.deleteSession(sessionId));
13
+ return res?.data;
14
+ },
15
+ onSuccess: () => {
16
+ // Refetch sessions list after successful delete
17
+ queryClient.refetchQueries({
18
+ queryKey: [QUERY_KEYS.SEARCH_SESSIONS]
19
+ });
20
+ }
21
+ });
22
+ };
23
+ //# sourceMappingURL=useDeleteSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMutation","useQueryClient","QUERY_KEYS","apiInstance","ENDPOINTS","useDeleteSession","queryClient","mutationKey","DELETE_SESSION","mutationFn","sessionId","res","delete","assistantService","deleteSession","data","onSuccess","refetchQueries","queryKey","SEARCH_SESSIONS"],"sourceRoot":"../../../../src","sources":["hooks/session/useDeleteSession.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,cAAc,QAAQ,uBAAuB;AACnE,SAASC,UAAU,QAAQ,0BAAuB;AAClD,SAASC,WAAW,QAAQ,wBAAqB;AACjD,SAASC,SAAS,QAAQ,6BAA0B;AAGpD,OAAO,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;EACpC,MAAMC,WAAW,GAAGL,cAAc,CAAC,CAAC;EAEpC,OAAOD,WAAW,CAAC;IACjBO,WAAW,EAAE,CAACL,UAAU,CAACM,cAAc,CAAC;IACxCC,UAAU,EAAE,MAAOC,SAAiB,IAAK;MACvC,MAAMC,GAAG,GAAG,MAAMR,WAAW,EAAES,MAAM,CACnCR,SAAS,CAACS,gBAAgB,CAACC,aAAa,CAACJ,SAAS,CACpD,CAAC;MACD,OAAOC,GAAG,EAAEI,IAAI;IAClB,CAAC;IACDC,SAAS,EAAEA,CAAA,KAAM;MACf;MACAV,WAAW,CAACW,cAAc,CAAC;QACzBC,QAAQ,EAAE,CAAChB,UAAU,CAACiB,eAAe;MACvC,CAAC,CAAC;IACJ;EACF,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ import { useMutation, useQueryClient } from '@tanstack/react-query';
4
+ import { QUERY_KEYS } from "../../constants/query.js";
5
+ import { apiInstance } from "../../services/apis.js";
6
+ import { ENDPOINTS } from "../../services/endpoints.js";
7
+ export const useRenameSession = () => {
8
+ const queryClient = useQueryClient();
9
+ return useMutation({
10
+ mutationKey: [QUERY_KEYS.UPDATE_SESSION],
11
+ mutationFn: async ({
12
+ sessionId,
13
+ title
14
+ }) => {
15
+ const res = await apiInstance?.put(ENDPOINTS.assistantService.updateSession(sessionId), {
16
+ title
17
+ });
18
+ return res?.data?.data;
19
+ },
20
+ onSuccess: () => {
21
+ // Refetch sessions list after successful rename
22
+ queryClient.refetchQueries({
23
+ queryKey: [QUERY_KEYS.SEARCH_SESSIONS]
24
+ });
25
+ }
26
+ });
27
+ };
28
+ //# sourceMappingURL=useRenameSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMutation","useQueryClient","QUERY_KEYS","apiInstance","ENDPOINTS","useRenameSession","queryClient","mutationKey","UPDATE_SESSION","mutationFn","sessionId","title","res","put","assistantService","updateSession","data","onSuccess","refetchQueries","queryKey","SEARCH_SESSIONS"],"sourceRoot":"../../../../src","sources":["hooks/session/useRenameSession.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,cAAc,QAAQ,uBAAuB;AACnE,SAASC,UAAU,QAAQ,0BAAuB;AAClD,SAASC,WAAW,QAAQ,wBAAqB;AACjD,SAASC,SAAS,QAAQ,6BAA0B;AAQpD,OAAO,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;EACpC,MAAMC,WAAW,GAAGL,cAAc,CAAC,CAAC;EAEpC,OAAOD,WAAW,CAAC;IACjBO,WAAW,EAAE,CAACL,UAAU,CAACM,cAAc,CAAC;IACxCC,UAAU,EAAE,MAAAA,CAAO;MACjBC,SAAS;MACTC;IAIF,CAAC,KAAK;MACJ,MAAMC,GAAG,GAAG,MAAMT,WAAW,EAAEU,GAAG,CAChCT,SAAS,CAACU,gBAAgB,CAACC,aAAa,CAACL,SAAS,CAAC,EACnD;QAAEC;MAAM,CACV,CAAC;MACD,OAAOC,GAAG,EAAEI,IAAI,EAAEA,IAAI;IACxB,CAAC;IACDC,SAAS,EAAEA,CAAA,KAAM;MACf;MACAX,WAAW,CAACY,cAAc,CAAC;QACzBC,QAAQ,EAAE,CAACjB,UAAU,CAACkB,eAAe;MACvC,CAAC,CAAC;IACJ;EACF,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
@@ -6,7 +6,7 @@ import { QUERY_KEYS } from "../../constants/query.js";
6
6
  import { apiInstance } from "../../services/apis.js";
7
7
  import { ENDPOINTS } from "../../services/endpoints.js";
8
8
  const LIMIT = 20;
9
- export const useSearchSessions = (enabled = true, searchTerm) => {
9
+ export const useSearchSessions = (enabled = true, searchTerm, cb) => {
10
10
  const queryKey = [QUERY_KEYS.SEARCH_SESSIONS, searchTerm];
11
11
  const query = useInfiniteQuery({
12
12
  queryKey,
@@ -24,11 +24,13 @@ export const useSearchSessions = (enabled = true, searchTerm) => {
24
24
 
25
25
  // Validate response structure
26
26
  if (!response) {
27
+ cb?.(false);
27
28
  throw new Error('No response received from API');
28
29
  }
29
30
 
30
31
  // Check for successful response: HTTP status 200 and API statusCode 0
31
32
  if (res?.status !== 200 || response?.statusCode !== 0) {
33
+ cb?.(false);
32
34
  return {
33
35
  ...response,
34
36
  data: []
@@ -38,11 +40,13 @@ export const useSearchSessions = (enabled = true, searchTerm) => {
38
40
  // Ensure data is an array
39
41
  if (!Array.isArray(response?.data)) {
40
42
  // If data is not an array, return empty array to prevent crashes
43
+ cb?.(false);
41
44
  return {
42
45
  ...response,
43
46
  data: []
44
47
  };
45
48
  }
49
+ cb?.(true);
46
50
  return response;
47
51
  },
48
52
  getNextPageParam: (lastPage, allPages) => {
@@ -1 +1 @@
1
- {"version":3,"names":["useInfiniteQuery","useCallback","QUERY_KEYS","apiInstance","ENDPOINTS","LIMIT","useSearchSessions","enabled","searchTerm","queryKey","SEARCH_SESSIONS","query","queryFn","pageParam","res","post","assistantService","searchSessions","limit","offset","trim","search_term","response","data","Error","status","statusCode","Array","isArray","getNextPageParam","lastPage","allPages","undefined","currentData","length","initialPageParam","staleTime","refetchPageOne","refetch","refetchPage","_page","index"],"sourceRoot":"../../../../src","sources":["hooks/session/useSearchSessions.ts"],"mappings":";;AAAA,SAASA,gBAAgB,QAAQ,uBAAuB;AACxD,SAASC,WAAW,QAAQ,OAAO;AACnC,SAASC,UAAU,QAAQ,0BAAuB;AAClD,SAASC,WAAW,QAAQ,wBAAqB;AACjD,SAASC,SAAS,QAAQ,6BAA0B;AAIpD,MAAMC,KAAK,GAAG,EAAE;AAEhB,OAAO,MAAMC,iBAAiB,GAAGA,CAC/BC,OAAgB,GAAG,IAAI,EACvBC,UAAmB,KAChB;EACH,MAAMC,QAAQ,GAAG,CAACP,UAAU,CAACQ,eAAe,EAAEF,UAAU,CAAC;EAEzD,MAAMG,KAAK,GAAGX,gBAAgB,CAAC;IAC7BS,QAAQ;IACRG,OAAO,EAAE,MAAAA,CAAO;MAAEC,SAAS,GAAG;IAAyB,CAAC,KAAK;MAC3D,MAAMC,GAAG,GAAG,MAAMX,WAAW,EAAEY,IAAI,CACjCX,SAAS,CAACY,gBAAgB,CAACC,cAAc,EACzC;QACEC,KAAK,EAAEb,KAAK;QACZc,MAAM,EAAEN,SAAS;QACjB,IAAIL,UAAU,EAAEY,IAAI,CAAC,CAAC,IAAI;UAAEC,WAAW,EAAEb,UAAU,CAACY,IAAI,CAAC;QAAE,CAAC;MAC9D,CACF,CAAC;MAED,MAAME,QAAQ,GAAGR,GAAG,EAAES,IAAI;;MAE1B;MACA,IAAI,CAACD,QAAQ,EAAE;QACb,MAAM,IAAIE,KAAK,CAAC,+BAA+B,CAAC;MAClD;;MAEA;MACA,IAAIV,GAAG,EAAEW,MAAM,KAAK,GAAG,IAAIH,QAAQ,EAAEI,UAAU,KAAK,CAAC,EAAE;QACrD,OAAO;UACL,GAAGJ,QAAQ;UACXC,IAAI,EAAE;QACR,CAAC;MACH;;MAEA;MACA,IAAI,CAACI,KAAK,CAACC,OAAO,CAACN,QAAQ,EAAEC,IAAI,CAAC,EAAE;QAClC;QACA,OAAO;UACL,GAAGD,QAAQ;UACXC,IAAI,EAAE;QACR,CAAC;MACH;MAEA,OAAOD,QAAQ;IACjB,CAAC;IACDO,gBAAgB,EAAEA,CAChBC,QAA8C,EAC9CC,QAAgD,KAC7C;MACH;MACA,IAAI,CAACD,QAAQ,IAAI,CAACH,KAAK,CAACC,OAAO,CAACE,QAAQ,CAACP,IAAI,CAAC,EAAE;QAC9C,OAAOS,SAAS;MAClB;MAEA,MAAMC,WAAW,GAAGH,QAAQ,CAACP,IAAI;MACjC,IAAIU,WAAW,CAACC,MAAM,GAAG7B,KAAK,EAAE;QAC9B,OAAO2B,SAAS;MAClB;MACA,OAAOD,QAAQ,CAACG,MAAM,GAAG7B,KAAK;IAChC,CAAC;IACD8B,gBAAgB,EAAE,CAAC;IACnB5B,OAAO,EAAE,CAAC,CAACJ,WAAW,IAAII,OAAO;IACjC6B,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAE;EAC5B,CAAC,CAAC;;EAEF;EACA,MAAMC,cAAc,GAAGpC,WAAW,CAAC,YAAY;IAC7C;IACA;IACA;IACA,OAAOU,KAAK,CAAC2B,OAAO,CAAC;MACnBC,WAAW,EAAEA,CACXC,KAA2C,EAC3CC,KAAa,KACVA,KAAK,KAAK;IACjB,CAAC,CAAC;EACJ,CAAC,EAAE,CAAC9B,KAAK,CAAC,CAAC;EAEX,OAAO;IACL,GAAGA,KAAK;IACR2B,OAAO,EAAED;EACX,CAAC;AACH,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useInfiniteQuery","useCallback","QUERY_KEYS","apiInstance","ENDPOINTS","LIMIT","useSearchSessions","enabled","searchTerm","cb","queryKey","SEARCH_SESSIONS","query","queryFn","pageParam","res","post","assistantService","searchSessions","limit","offset","trim","search_term","response","data","Error","status","statusCode","Array","isArray","getNextPageParam","lastPage","allPages","undefined","currentData","length","initialPageParam","staleTime","refetchPageOne","refetch","refetchPage","_page","index"],"sourceRoot":"../../../../src","sources":["hooks/session/useSearchSessions.ts"],"mappings":";;AAAA,SAASA,gBAAgB,QAAQ,uBAAuB;AACxD,SAASC,WAAW,QAAQ,OAAO;AACnC,SAASC,UAAU,QAAQ,0BAAuB;AAClD,SAASC,WAAW,QAAQ,wBAAqB;AACjD,SAASC,SAAS,QAAQ,6BAA0B;AAIpD,MAAMC,KAAK,GAAG,EAAE;AAEhB,OAAO,MAAMC,iBAAiB,GAAGA,CAC/BC,OAAgB,GAAG,IAAI,EACvBC,UAAmB,EACnBC,EAAkC,KAC/B;EACH,MAAMC,QAAQ,GAAG,CAACR,UAAU,CAACS,eAAe,EAAEH,UAAU,CAAC;EAEzD,MAAMI,KAAK,GAAGZ,gBAAgB,CAAC;IAC7BU,QAAQ;IACRG,OAAO,EAAE,MAAAA,CAAO;MAAEC,SAAS,GAAG;IAAyB,CAAC,KAAK;MAC3D,MAAMC,GAAG,GAAG,MAAMZ,WAAW,EAAEa,IAAI,CACjCZ,SAAS,CAACa,gBAAgB,CAACC,cAAc,EACzC;QACEC,KAAK,EAAEd,KAAK;QACZe,MAAM,EAAEN,SAAS;QACjB,IAAIN,UAAU,EAAEa,IAAI,CAAC,CAAC,IAAI;UAAEC,WAAW,EAAEd,UAAU,CAACa,IAAI,CAAC;QAAE,CAAC;MAC9D,CACF,CAAC;MAED,MAAME,QAAQ,GAAGR,GAAG,EAAES,IAAI;;MAE1B;MACA,IAAI,CAACD,QAAQ,EAAE;QACbd,EAAE,GAAG,KAAK,CAAC;QACX,MAAM,IAAIgB,KAAK,CAAC,+BAA+B,CAAC;MAClD;;MAEA;MACA,IAAIV,GAAG,EAAEW,MAAM,KAAK,GAAG,IAAIH,QAAQ,EAAEI,UAAU,KAAK,CAAC,EAAE;QACrDlB,EAAE,GAAG,KAAK,CAAC;QACX,OAAO;UACL,GAAGc,QAAQ;UACXC,IAAI,EAAE;QACR,CAAC;MACH;;MAEA;MACA,IAAI,CAACI,KAAK,CAACC,OAAO,CAACN,QAAQ,EAAEC,IAAI,CAAC,EAAE;QAClC;QACAf,EAAE,GAAG,KAAK,CAAC;QACX,OAAO;UACL,GAAGc,QAAQ;UACXC,IAAI,EAAE;QACR,CAAC;MACH;MAEAf,EAAE,GAAG,IAAI,CAAC;MACV,OAAOc,QAAQ;IACjB,CAAC;IACDO,gBAAgB,EAAEA,CAChBC,QAA8C,EAC9CC,QAAgD,KAC7C;MACH;MACA,IAAI,CAACD,QAAQ,IAAI,CAACH,KAAK,CAACC,OAAO,CAACE,QAAQ,CAACP,IAAI,CAAC,EAAE;QAC9C,OAAOS,SAAS;MAClB;MAEA,MAAMC,WAAW,GAAGH,QAAQ,CAACP,IAAI;MACjC,IAAIU,WAAW,CAACC,MAAM,GAAG9B,KAAK,EAAE;QAC9B,OAAO4B,SAAS;MAClB;MACA,OAAOD,QAAQ,CAACG,MAAM,GAAG9B,KAAK;IAChC,CAAC;IACD+B,gBAAgB,EAAE,CAAC;IACnB7B,OAAO,EAAE,CAAC,CAACJ,WAAW,IAAII,OAAO;IACjC8B,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAE;EAC5B,CAAC,CAAC;;EAEF;EACA,MAAMC,cAAc,GAAGrC,WAAW,CAAC,YAAY;IAC7C;IACA;IACA;IACA,OAAOW,KAAK,CAAC2B,OAAO,CAAC;MACnBC,WAAW,EAAEA,CACXC,KAA2C,EAC3CC,KAAa,KACVA,KAAK,KAAK;IACjB,CAAC,CAAC;EACJ,CAAC,EAAE,CAAC9B,KAAK,CAAC,CAAC;EAEX,OAAO;IACL,GAAGA,KAAK;IACR2B,OAAO,EAAED;EACX,CAAC;AACH,CAAC","ignoreList":[]}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ import { useMutation } from '@tanstack/react-query';
4
+ import { QUERY_KEYS } from "../../constants/query.js";
5
+ import { apiInstance } from "../../services/apis.js";
6
+ import { ENDPOINTS } from "../../services/endpoints.js";
7
+ export const useShareSession = () => {
8
+ return useMutation({
9
+ mutationKey: [QUERY_KEYS.SHARE_SESSION],
10
+ mutationFn: async sessionId => {
11
+ const res = await apiInstance?.put(ENDPOINTS.assistantService.shareSession(sessionId), {});
12
+ return res?.data?.data;
13
+ }
14
+ });
15
+ };
16
+ //# sourceMappingURL=useShareSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMutation","QUERY_KEYS","apiInstance","ENDPOINTS","useShareSession","mutationKey","SHARE_SESSION","mutationFn","sessionId","res","put","assistantService","shareSession","data"],"sourceRoot":"../../../../src","sources":["hooks/session/useShareSession.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,uBAAuB;AACnD,SAASC,UAAU,QAAQ,0BAAuB;AAClD,SAASC,WAAW,QAAQ,wBAAqB;AACjD,SAASC,SAAS,QAAQ,6BAA0B;AAOpD,OAAO,MAAMC,eAAe,GAAGA,CAAA,KAAM;EACnC,OAAOJ,WAAW,CAAC;IACjBK,WAAW,EAAE,CAACJ,UAAU,CAACK,aAAa,CAAC;IACvCC,UAAU,EAAE,MAAOC,SAAiB,IAAK;MACvC,MAAMC,GAAG,GAAG,MAAMP,WAAW,EAAEQ,GAAG,CAChCP,SAAS,CAACQ,gBAAgB,CAACC,YAAY,CAACJ,SAAS,CAAC,EAClD,CAAC,CACH,CAAC;MACD,OAAOC,GAAG,EAAEI,IAAI,EAAEA,IAAI;IACxB;EACF,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
@@ -42,6 +42,7 @@ export const useImageUpload = ({
42
42
  'Authorization': `Bearer ${token}`
43
43
  }, formData);
44
44
  cancelRef.current = task;
45
+ const startUploadTime = Date.now();
45
46
  task.uploadProgress?.({
46
47
  interval: 300
47
48
  }, (written, total) => {
@@ -59,7 +60,7 @@ export const useImageUpload = ({
59
60
  setIsUploading(false);
60
61
  setProgress(100);
61
62
  setIsSuccess(true);
62
- onSuccess?.(response?.data);
63
+ onSuccess?.(response?.data, (Date.now() - startUploadTime) / 1000);
63
64
  }).catch(err => {
64
65
  if (!isMounted) return;
65
66
  setIsUploading(false);
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useRef","useState","ReactNativeBlobUtil","useChatContext","ENDPOINTS","useImageUpload","file","onSuccess","onError","apiAddress","progress","setProgress","isUploading","setIsUploading","isSuccess","setIsSuccess","isError","setIsError","cancelRef","isMounted","remoteUrl","doUpload","filePath","path","replace","Error","formData","name","filename","Date","now","type","mime","data","wrap","uploadUrl","uploaderService","upload","token","global","accessToken","task","fetch","current","uploadProgress","interval","written","total","Math","floor","then","res","response","JSON","parse","catch","err","cancel"],"sourceRoot":"../../../../src","sources":["hooks/upload/useImageUpload.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useRef","useState","ReactNativeBlobUtil","useChatContext","ENDPOINTS","useImageUpload","file","onSuccess","onError","apiAddress","progress","setProgress","isUploading","setIsUploading","isSuccess","setIsSuccess","isError","setIsError","cancelRef","isMounted","remoteUrl","doUpload","filePath","path","replace","Error","formData","name","filename","Date","now","type","mime","data","wrap","uploadUrl","uploaderService","upload","token","global","accessToken","task","fetch","current","startUploadTime","uploadProgress","interval","written","total","Math","floor","then","res","response","JSON","parse","catch","err","cancel"],"sourceRoot":"../../../../src","sources":["hooks/upload/useImageUpload.ts"],"mappings":"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","ignoreList":[]}
@@ -6,7 +6,12 @@ export const ENDPOINTS = {
6
6
  getSessionById: sessionId => `/assistant-service/v1/app/chat/sessions/${sessionId}`,
7
7
  getStreamMessage: sessionId => `/assistant-service/v1/app/chat/sessions/${sessionId}/stream`,
8
8
  createSession: '/assistant-service/v1/app/chat/sessions',
9
- searchSessions: '/assistant-service/v1/app/chat/sessions/search'
9
+ searchSessions: '/assistant-service/v1/app/chat/sessions/search',
10
+ updateSession: sessionId => `/assistant-service/v1/app/chat/sessions/${sessionId}`,
11
+ shareSession: sessionId => `/assistant-service/v1/app/chat/sessions/${sessionId}/share`,
12
+ deleteSession: sessionId => `/assistant-service/v1/app/chat/sessions/${sessionId}`,
13
+ sendFeedback: sessionId => `/assistant-service/v1/app/chat/sessions/${sessionId}/feedback`,
14
+ generateAudio: (sessionId, messageId) => `/assistant-service/v1/app/chat/sessions/${sessionId}/messages/${messageId}/speech`
10
15
  },
11
16
  uploaderService: {
12
17
  upload: '/uploader-service/v1/uploader/permanently'
@@ -1 +1 @@
1
- {"version":3,"names":["ENDPOINTS","assistantService","getSuggestions","getSessionById","sessionId","getStreamMessage","createSession","searchSessions","uploaderService","upload","productService","search"],"sourceRoot":"../../../src","sources":["services/endpoints.ts"],"mappings":";;AAAA,OAAO,MAAMA,SAAS,GAAG;EACvBC,gBAAgB,EAAE;IAChBC,cAAc,EAAE,mDAAmD;IACnEC,cAAc,EAAGC,SAAiB,IAChC,2CAA2CA,SAAS,EAAE;IACxDC,gBAAgB,EAAGD,SAAiB,IAClC,2CAA2CA,SAAS,SAAS;IAC/DE,aAAa,EAAE,yCAAyC;IACxDC,cAAc,EAAE;EAClB,CAAC;EACDC,eAAe,EAAE;IACfC,MAAM,EAAE;EACV,CAAC;EACDC,cAAc,EAAE;IACdC,MAAM,EAAE;EACV;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["ENDPOINTS","assistantService","getSuggestions","getSessionById","sessionId","getStreamMessage","createSession","searchSessions","updateSession","shareSession","deleteSession","sendFeedback","generateAudio","messageId","uploaderService","upload","productService","search"],"sourceRoot":"../../../src","sources":["services/endpoints.ts"],"mappings":";;AAAA,OAAO,MAAMA,SAAS,GAAG;EACvBC,gBAAgB,EAAE;IAChBC,cAAc,EAAE,mDAAmD;IACnEC,cAAc,EAAGC,SAAiB,IAChC,2CAA2CA,SAAS,EAAE;IACxDC,gBAAgB,EAAGD,SAAiB,IAClC,2CAA2CA,SAAS,SAAS;IAC/DE,aAAa,EAAE,yCAAyC;IACxDC,cAAc,EAAE,gDAAgD;IAChEC,aAAa,EAAGJ,SAAiB,IAC/B,2CAA2CA,SAAS,EAAE;IACxDK,YAAY,EAAGL,SAAiB,IAC9B,2CAA2CA,SAAS,QAAQ;IAC9DM,aAAa,EAAGN,SAAiB,IAC/B,2CAA2CA,SAAS,EAAE;IACxDO,YAAY,EAAGP,SAAiB,IAC9B,2CAA2CA,SAAS,WAAW;IACjEQ,aAAa,EAAEA,CAACR,SAAiB,EAAES,SAAiB,KAClD,2CAA2CT,SAAS,aAAaS,SAAS;EAC9E,CAAC;EACDC,eAAe,EAAE;IACfC,MAAM,EAAE;EACV,CAAC;EACDC,cAAc,EAAE;IACdC,MAAM,EAAE;EACV;AACF,CAAC","ignoreList":[]}
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
2
 
3
3
  export * from "./apis.js";
4
+ export { PlaybackService } from "./playbackService.js";
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../src","sources":["services/index.ts"],"mappings":";;AAAA,cAAc,WAAQ","ignoreList":[]}
1
+ {"version":3,"names":["PlaybackService"],"sourceRoot":"../../../src","sources":["services/index.ts"],"mappings":";;AAAA,cAAc,WAAQ;AACtB,SAASA,eAAe,QAAQ,sBAAmB","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Playback Service for react-native-track-player
5
+ * Handles remote control events from lock screen, control center, and headphones
6
+ */
7
+ import TrackPlayer, { Event } from 'react-native-track-player';
8
+ export async function PlaybackService() {
9
+ TrackPlayer.addEventListener(Event.RemotePlay, async () => {
10
+ console.log('[PlaybackService] RemotePlay event');
11
+ await TrackPlayer.play();
12
+ });
13
+ TrackPlayer.addEventListener(Event.RemotePause, async () => {
14
+ console.log('[PlaybackService] RemotePause event');
15
+ await TrackPlayer.pause();
16
+ });
17
+ TrackPlayer.addEventListener(Event.RemoteStop, async () => {
18
+ console.log('[PlaybackService] RemoteStop event');
19
+ await TrackPlayer.stop();
20
+ });
21
+ }
22
+ //# sourceMappingURL=playbackService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TrackPlayer","Event","PlaybackService","addEventListener","RemotePlay","console","log","play","RemotePause","pause","RemoteStop","stop"],"sourceRoot":"../../../src","sources":["services/playbackService.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA,OAAOA,WAAW,IAAIC,KAAK,QAAQ,2BAA2B;AAE9D,OAAO,eAAeC,eAAeA,CAAA,EAAG;EACtCF,WAAW,CAACG,gBAAgB,CAACF,KAAK,CAACG,UAAU,EAAE,YAAY;IACzDC,OAAO,CAACC,GAAG,CAAC,oCAAoC,CAAC;IACjD,MAAMN,WAAW,CAACO,IAAI,CAAC,CAAC;EAC1B,CAAC,CAAC;EAEFP,WAAW,CAACG,gBAAgB,CAACF,KAAK,CAACO,WAAW,EAAE,YAAY;IAC1DH,OAAO,CAACC,GAAG,CAAC,qCAAqC,CAAC;IAClD,MAAMN,WAAW,CAACS,KAAK,CAAC,CAAC;EAC3B,CAAC,CAAC;EAEFT,WAAW,CAACG,gBAAgB,CAACF,KAAK,CAACS,UAAU,EAAE,YAAY;IACzDL,OAAO,CAACC,GAAG,CAAC,oCAAoC,CAAC;IACjD,MAAMN,WAAW,CAACW,IAAI,CAAC,CAAC;EAC1B,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Audio Player Store
5
+ * Manages audio playback state across messages
6
+ * Handles play/pause/stop for each message and session cleanup
7
+ */
8
+
9
+ import { create } from 'zustand';
10
+ const useAudioPlayerStore = create((set, get) => ({
11
+ // Initial state
12
+ currentMessageId: null,
13
+ currentSessionId: null,
14
+ isPlaying: false,
15
+ isLoading: false,
16
+ audioCache: new Map(),
17
+ error: null,
18
+ // Actions
19
+ setCurrentMessage: (messageId, sessionId) => {
20
+ const state = get();
21
+
22
+ // If switching to a different session, clear the cache
23
+ if (state.currentSessionId && state.currentSessionId !== sessionId) {
24
+ set({
25
+ currentMessageId: messageId,
26
+ currentSessionId: sessionId,
27
+ audioCache: new Map(),
28
+ isPlaying: false,
29
+ error: null
30
+ });
31
+ } else {
32
+ set({
33
+ currentMessageId: messageId,
34
+ currentSessionId: sessionId,
35
+ error: null
36
+ });
37
+ }
38
+ },
39
+ setIsPlaying: isPlaying => set({
40
+ isPlaying
41
+ }),
42
+ setIsLoading: isLoading => set({
43
+ isLoading
44
+ }),
45
+ cacheAudioUrl: (messageId, audioUrl) => {
46
+ const state = get();
47
+ const newCache = new Map(state.audioCache);
48
+ newCache.set(messageId, audioUrl);
49
+ set({
50
+ audioCache: newCache
51
+ });
52
+ },
53
+ getCachedAudioUrl: messageId => {
54
+ const state = get();
55
+ return state.audioCache.get(messageId) || null;
56
+ },
57
+ setError: error => set({
58
+ error
59
+ }),
60
+ clearSession: () => set({
61
+ currentMessageId: null,
62
+ currentSessionId: null,
63
+ isPlaying: false,
64
+ isLoading: false,
65
+ audioCache: new Map(),
66
+ error: null
67
+ }),
68
+ stopPlayback: () => set({
69
+ currentMessageId: null,
70
+ isPlaying: false,
71
+ error: null
72
+ })
73
+ }));
74
+ export default useAudioPlayerStore;
75
+ //# sourceMappingURL=audioPlayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["create","useAudioPlayerStore","set","get","currentMessageId","currentSessionId","isPlaying","isLoading","audioCache","Map","error","setCurrentMessage","messageId","sessionId","state","setIsPlaying","setIsLoading","cacheAudioUrl","audioUrl","newCache","getCachedAudioUrl","setError","clearSession","stopPlayback"],"sourceRoot":"../../../src","sources":["store/audioPlayer.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA,SAASA,MAAM,QAAQ,SAAS;AAsChC,MAAMC,mBAAmB,GAAGD,MAAM,CAAmB,CAACE,GAAG,EAAEC,GAAG,MAAM;EAClE;EACAC,gBAAgB,EAAE,IAAI;EACtBC,gBAAgB,EAAE,IAAI;EACtBC,SAAS,EAAE,KAAK;EAChBC,SAAS,EAAE,KAAK;EAChBC,UAAU,EAAE,IAAIC,GAAG,CAAC,CAAC;EACrBC,KAAK,EAAE,IAAI;EAEX;EACAC,iBAAiB,EAAEA,CAACC,SAAS,EAAEC,SAAS,KAAK;IAC3C,MAAMC,KAAK,GAAGX,GAAG,CAAC,CAAC;;IAEnB;IACA,IAAIW,KAAK,CAACT,gBAAgB,IAAIS,KAAK,CAACT,gBAAgB,KAAKQ,SAAS,EAAE;MAClEX,GAAG,CAAC;QACFE,gBAAgB,EAAEQ,SAAS;QAC3BP,gBAAgB,EAAEQ,SAAS;QAC3BL,UAAU,EAAE,IAAIC,GAAG,CAAC,CAAC;QACrBH,SAAS,EAAE,KAAK;QAChBI,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,MAAM;MACLR,GAAG,CAAC;QACFE,gBAAgB,EAAEQ,SAAS;QAC3BP,gBAAgB,EAAEQ,SAAS;QAC3BH,KAAK,EAAE;MACT,CAAC,CAAC;IACJ;EACF,CAAC;EAEDK,YAAY,EAAGT,SAAS,IAAKJ,GAAG,CAAC;IAAEI;EAAU,CAAC,CAAC;EAE/CU,YAAY,EAAGT,SAAS,IAAKL,GAAG,CAAC;IAAEK;EAAU,CAAC,CAAC;EAE/CU,aAAa,EAAEA,CAACL,SAAS,EAAEM,QAAQ,KAAK;IACtC,MAAMJ,KAAK,GAAGX,GAAG,CAAC,CAAC;IACnB,MAAMgB,QAAQ,GAAG,IAAIV,GAAG,CAACK,KAAK,CAACN,UAAU,CAAC;IAC1CW,QAAQ,CAACjB,GAAG,CAACU,SAAS,EAAEM,QAAQ,CAAC;IACjChB,GAAG,CAAC;MAAEM,UAAU,EAAEW;IAAS,CAAC,CAAC;EAC/B,CAAC;EAEDC,iBAAiB,EAAGR,SAAS,IAAK;IAChC,MAAME,KAAK,GAAGX,GAAG,CAAC,CAAC;IACnB,OAAOW,KAAK,CAACN,UAAU,CAACL,GAAG,CAACS,SAAS,CAAC,IAAI,IAAI;EAChD,CAAC;EAEDS,QAAQ,EAAGX,KAAK,IAAKR,GAAG,CAAC;IAAEQ;EAAM,CAAC,CAAC;EAEnCY,YAAY,EAAEA,CAAA,KACZpB,GAAG,CAAC;IACFE,gBAAgB,EAAE,IAAI;IACtBC,gBAAgB,EAAE,IAAI;IACtBC,SAAS,EAAE,KAAK;IAChBC,SAAS,EAAE,KAAK;IAChBC,UAAU,EAAE,IAAIC,GAAG,CAAC,CAAC;IACrBC,KAAK,EAAE;EACT,CAAC,CAAC;EAEJa,YAAY,EAAEA,CAAA,KACZrB,GAAG,CAAC;IACFE,gBAAgB,EAAE,IAAI;IACtBE,SAAS,EAAE,KAAK;IAChBI,KAAK,EAAE;EACT,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,eAAeT,mBAAmB","ignoreList":[]}
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Message Actions Store
5
+ * Zustand store for managing message action states (feedback, audio, export, share)
6
+ */
7
+
8
+ import { create } from 'zustand';
9
+ import { AudioState } from "../types/messageActions.js";
10
+ const useMessageActionsStore = create((set, get) => ({
11
+ // Initial State
12
+ feedbacks: {},
13
+ activeFeedbackList: null,
14
+ audioPlaybacks: {},
15
+ activeAudioMessageId: null,
16
+ pdfExports: {},
17
+ shareStates: {},
18
+ // Feedback Actions
19
+ setFeedback: (messageId, feedbackType, reason) => {
20
+ set(state => ({
21
+ feedbacks: {
22
+ ...state.feedbacks,
23
+ [messageId]: {
24
+ messageId,
25
+ feedbackType,
26
+ reason,
27
+ timestamp: new Date().toISOString()
28
+ }
29
+ },
30
+ activeFeedbackList: null // Close list after selection
31
+ }));
32
+ },
33
+ setActiveFeedbackList: messageId => {
34
+ set({
35
+ activeFeedbackList: messageId
36
+ });
37
+ },
38
+ getFeedback: messageId => {
39
+ return get().feedbacks[messageId];
40
+ },
41
+ // Audio Actions
42
+ setAudioState: (messageId, state, audioUrl) => {
43
+ set(prevState => ({
44
+ audioPlaybacks: {
45
+ ...prevState.audioPlaybacks,
46
+ [messageId]: {
47
+ messageId,
48
+ state,
49
+ audioUrl
50
+ }
51
+ }
52
+ }));
53
+ },
54
+ setActiveAudio: messageId => {
55
+ const currentActive = get().activeAudioMessageId;
56
+
57
+ // Stop previous audio if different message
58
+ if (currentActive && currentActive !== messageId) {
59
+ get().setAudioState(currentActive, AudioState.idle);
60
+ }
61
+ set({
62
+ activeAudioMessageId: messageId
63
+ });
64
+ },
65
+ getAudioState: messageId => {
66
+ return get().audioPlaybacks[messageId];
67
+ },
68
+ stopAllAudio: () => {
69
+ const {
70
+ audioPlaybacks
71
+ } = get();
72
+ const updated = {
73
+ ...audioPlaybacks
74
+ };
75
+ Object.keys(updated).forEach(id => {
76
+ if (updated[id]?.state === AudioState.playing) {
77
+ updated[id] = {
78
+ ...updated[id],
79
+ state: AudioState.idle
80
+ };
81
+ }
82
+ });
83
+ set({
84
+ audioPlaybacks: updated,
85
+ activeAudioMessageId: null
86
+ });
87
+ },
88
+ // Export Actions
89
+ setPdfExportState: (messageId, state, pdfUrl, error) => {
90
+ set(prevState => ({
91
+ pdfExports: {
92
+ ...prevState.pdfExports,
93
+ [messageId]: {
94
+ messageId,
95
+ state,
96
+ pdfUrl,
97
+ error
98
+ }
99
+ }
100
+ }));
101
+ },
102
+ getPdfExport: messageId => {
103
+ return get().pdfExports[messageId];
104
+ },
105
+ // Share Actions
106
+ setShareState: (messageId, state) => {
107
+ set(prevState => ({
108
+ shareStates: {
109
+ ...prevState.shareStates,
110
+ [messageId]: {
111
+ messageId,
112
+ text: '',
113
+ state
114
+ }
115
+ }
116
+ }));
117
+ },
118
+ getShareState: messageId => {
119
+ return get().shareStates[messageId];
120
+ },
121
+ // Reset Actions
122
+ resetMessageActions: messageId => {
123
+ set(state => {
124
+ const feedbacks = {
125
+ ...state.feedbacks
126
+ };
127
+ const audioPlaybacks = {
128
+ ...state.audioPlaybacks
129
+ };
130
+ const pdfExports = {
131
+ ...state.pdfExports
132
+ };
133
+ const shareStates = {
134
+ ...state.shareStates
135
+ };
136
+ delete feedbacks[messageId];
137
+ delete audioPlaybacks[messageId];
138
+ delete pdfExports[messageId];
139
+ delete shareStates[messageId];
140
+ return {
141
+ feedbacks,
142
+ audioPlaybacks,
143
+ pdfExports,
144
+ shareStates
145
+ };
146
+ });
147
+ },
148
+ clearAllActions: () => {
149
+ set({
150
+ feedbacks: {},
151
+ activeFeedbackList: null,
152
+ audioPlaybacks: {},
153
+ activeAudioMessageId: null,
154
+ pdfExports: {},
155
+ shareStates: {}
156
+ });
157
+ }
158
+ }));
159
+ export default useMessageActionsStore;
160
+ //# sourceMappingURL=messageActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["create","AudioState","useMessageActionsStore","set","get","feedbacks","activeFeedbackList","audioPlaybacks","activeAudioMessageId","pdfExports","shareStates","setFeedback","messageId","feedbackType","reason","state","timestamp","Date","toISOString","setActiveFeedbackList","getFeedback","setAudioState","audioUrl","prevState","setActiveAudio","currentActive","idle","getAudioState","stopAllAudio","updated","Object","keys","forEach","id","playing","setPdfExportState","pdfUrl","error","getPdfExport","setShareState","text","getShareState","resetMessageActions","clearAllActions"],"sourceRoot":"../../../src","sources":["store/messageActions.ts"],"mappings":"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","ignoreList":[]}