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.
- package/lib/module/components/Drawer/DeleteSessionPopup.js +113 -0
- package/lib/module/components/Drawer/DeleteSessionPopup.js.map +1 -0
- package/lib/module/components/Drawer/DrawerContent.js +21 -8
- package/lib/module/components/Drawer/DrawerContent.js.map +1 -1
- package/lib/module/components/Drawer/RenameSessionPopup.js +121 -0
- package/lib/module/components/Drawer/RenameSessionPopup.js.map +1 -0
- package/lib/module/components/Drawer/SearchInput.js +10 -3
- package/lib/module/components/Drawer/SearchInput.js.map +1 -1
- package/lib/module/components/Drawer/SessionItem.js +36 -20
- package/lib/module/components/Drawer/SessionItem.js.map +1 -1
- package/lib/module/components/Drawer/SessionList.js +2 -5
- package/lib/module/components/Drawer/SessionList.js.map +1 -1
- package/lib/module/components/Drawer/SessionOptionsBottomSheet.js +129 -0
- package/lib/module/components/Drawer/SessionOptionsBottomSheet.js.map +1 -0
- package/lib/module/components/Drawer/ShareSessionPopup.js +132 -0
- package/lib/module/components/Drawer/ShareSessionPopup.js.map +1 -0
- package/lib/module/components/chat/ChatEmpty.js +15 -4
- package/lib/module/components/chat/ChatEmpty.js.map +1 -1
- package/lib/module/components/chat/ChatHeader.js +10 -4
- package/lib/module/components/chat/ChatHeader.js.map +1 -1
- package/lib/module/components/chat/ChatMessageList.js +75 -24
- package/lib/module/components/chat/ChatMessageList.js.map +1 -1
- package/lib/module/components/chat/SuggestionItem.js +2 -1
- package/lib/module/components/chat/SuggestionItem.js.map +1 -1
- package/lib/module/components/chat/footer/index.js +77 -15
- package/lib/module/components/chat/footer/index.js.map +1 -1
- package/lib/module/components/chat/footer/item/UploadImageItem.js +21 -1
- package/lib/module/components/chat/footer/item/UploadImageItem.js.map +1 -1
- package/lib/module/components/chat/index.js +7 -6
- package/lib/module/components/chat/index.js.map +1 -1
- package/lib/module/components/chat/item/ChatAIAnswerMessageItem.js +36 -5
- package/lib/module/components/chat/item/ChatAIAnswerMessageItem.js.map +1 -1
- package/lib/module/components/chat/item/DeeplinkItem.js +30 -2
- package/lib/module/components/chat/item/DeeplinkItem.js.map +1 -1
- package/lib/module/components/chat/item/MessageActionsBar.js +243 -0
- package/lib/module/components/chat/item/MessageActionsBar.js.map +1 -0
- package/lib/module/components/chat/item/actions/ActionButton.js +56 -0
- package/lib/module/components/chat/item/actions/ActionButton.js.map +1 -0
- package/lib/module/components/portal/BottomSheet.js +245 -0
- package/lib/module/components/portal/BottomSheet.js.map +1 -0
- package/lib/module/components/portal/Popup.js +278 -0
- package/lib/module/components/portal/Popup.js.map +1 -0
- package/lib/module/components/portal/index.js +11 -5
- package/lib/module/components/portal/index.js.map +1 -1
- package/lib/module/components/product/CardHorizontal.js +44 -7
- package/lib/module/components/product/CardHorizontal.js.map +1 -1
- package/lib/module/constants/events.js +33 -0
- package/lib/module/constants/events.js.map +1 -1
- package/lib/module/constants/index.js +5 -1
- package/lib/module/constants/index.js.map +1 -1
- package/lib/module/constants/query.js +5 -1
- package/lib/module/constants/query.js.map +1 -1
- package/lib/module/context/ChatContext.js +9 -3
- package/lib/module/context/ChatContext.js.map +1 -1
- package/lib/module/hooks/message/useSendMessage.js +21 -3
- package/lib/module/hooks/message/useSendMessage.js.map +1 -1
- package/lib/module/hooks/message/useStreamMessage.js +10 -3
- package/lib/module/hooks/message/useStreamMessage.js.map +1 -1
- package/lib/module/hooks/messageActions/index.js +13 -0
- package/lib/module/hooks/messageActions/index.js.map +1 -0
- package/lib/module/hooks/messageActions/useAudioPlayer.js +269 -0
- package/lib/module/hooks/messageActions/useAudioPlayer.js.map +1 -0
- package/lib/module/hooks/messageActions/useCopyToClipboard.js +38 -0
- package/lib/module/hooks/messageActions/useCopyToClipboard.js.map +1 -0
- package/lib/module/hooks/messageActions/useFeedback.js +93 -0
- package/lib/module/hooks/messageActions/useFeedback.js.map +1 -0
- package/lib/module/hooks/messageActions/useSendFeedback.js +24 -0
- package/lib/module/hooks/messageActions/useSendFeedback.js.map +1 -0
- package/lib/module/hooks/messageActions/useShareMessage.js +128 -0
- package/lib/module/hooks/messageActions/useShareMessage.js.map +1 -0
- package/lib/module/hooks/session/useDeleteSession.js +23 -0
- package/lib/module/hooks/session/useDeleteSession.js.map +1 -0
- package/lib/module/hooks/session/useRenameSession.js +28 -0
- package/lib/module/hooks/session/useRenameSession.js.map +1 -0
- package/lib/module/hooks/session/useSearchSessions.js +5 -1
- package/lib/module/hooks/session/useSearchSessions.js.map +1 -1
- package/lib/module/hooks/session/useShareSession.js +16 -0
- package/lib/module/hooks/session/useShareSession.js.map +1 -0
- package/lib/module/hooks/upload/useImageUpload.js +2 -1
- package/lib/module/hooks/upload/useImageUpload.js.map +1 -1
- package/lib/module/services/endpoints.js +6 -1
- package/lib/module/services/endpoints.js.map +1 -1
- package/lib/module/services/index.js +1 -0
- package/lib/module/services/index.js.map +1 -1
- package/lib/module/services/playbackService.js +22 -0
- package/lib/module/services/playbackService.js.map +1 -0
- package/lib/module/store/audioPlayer.js +75 -0
- package/lib/module/store/audioPlayer.js.map +1 -0
- package/lib/module/store/messageActions.js +160 -0
- package/lib/module/store/messageActions.js.map +1 -0
- package/lib/module/store/session.js +6 -3
- package/lib/module/store/session.js.map +1 -1
- package/lib/module/translation/index.js +21 -25
- package/lib/module/translation/index.js.map +1 -1
- package/lib/module/translation/resources/i18n.js +39 -0
- package/lib/module/translation/resources/i18n.js.map +1 -0
- package/lib/module/types/chat.js +12 -1
- package/lib/module/types/chat.js.map +1 -1
- package/lib/module/types/index.js +1 -0
- package/lib/module/types/index.js.map +1 -1
- package/lib/module/types/messageActions.js +56 -0
- package/lib/module/types/messageActions.js.map +1 -0
- package/lib/module/utils/textCleaner.js +67 -0
- package/lib/module/utils/textCleaner.js.map +1 -0
- package/lib/module/utils/ui.js +27 -1
- package/lib/module/utils/ui.js.map +1 -1
- package/lib/typescript/src/components/Drawer/DeleteSessionPopup.d.ts +3 -0
- package/lib/typescript/src/components/Drawer/DeleteSessionPopup.d.ts.map +1 -0
- package/lib/typescript/src/components/Drawer/DrawerContent.d.ts.map +1 -1
- package/lib/typescript/src/components/Drawer/RenameSessionPopup.d.ts +3 -0
- package/lib/typescript/src/components/Drawer/RenameSessionPopup.d.ts.map +1 -0
- package/lib/typescript/src/components/Drawer/SearchInput.d.ts.map +1 -1
- package/lib/typescript/src/components/Drawer/SessionItem.d.ts.map +1 -1
- package/lib/typescript/src/components/Drawer/SessionList.d.ts.map +1 -1
- package/lib/typescript/src/components/Drawer/SessionOptionsBottomSheet.d.ts +3 -0
- package/lib/typescript/src/components/Drawer/SessionOptionsBottomSheet.d.ts.map +1 -0
- package/lib/typescript/src/components/Drawer/ShareSessionPopup.d.ts +3 -0
- package/lib/typescript/src/components/Drawer/ShareSessionPopup.d.ts.map +1 -0
- package/lib/typescript/src/components/chat/ChatEmpty.d.ts.map +1 -1
- package/lib/typescript/src/components/chat/ChatHeader.d.ts.map +1 -1
- package/lib/typescript/src/components/chat/ChatMessageList.d.ts.map +1 -1
- package/lib/typescript/src/components/chat/SuggestionItem.d.ts +3 -2
- package/lib/typescript/src/components/chat/SuggestionItem.d.ts.map +1 -1
- package/lib/typescript/src/components/chat/footer/index.d.ts.map +1 -1
- package/lib/typescript/src/components/chat/footer/item/UploadImageItem.d.ts.map +1 -1
- package/lib/typescript/src/components/chat/index.d.ts.map +1 -1
- package/lib/typescript/src/components/chat/item/ChatAIAnswerMessageItem.d.ts.map +1 -1
- package/lib/typescript/src/components/chat/item/DeeplinkItem.d.ts +2 -1
- package/lib/typescript/src/components/chat/item/DeeplinkItem.d.ts.map +1 -1
- package/lib/typescript/src/components/chat/item/MessageActionsBar.d.ts +16 -0
- package/lib/typescript/src/components/chat/item/MessageActionsBar.d.ts.map +1 -0
- package/lib/typescript/src/components/chat/item/actions/ActionButton.d.ts +19 -0
- package/lib/typescript/src/components/chat/item/actions/ActionButton.d.ts.map +1 -0
- package/lib/typescript/src/components/portal/BottomSheet.d.ts +8 -0
- package/lib/typescript/src/components/portal/BottomSheet.d.ts.map +1 -0
- package/lib/typescript/src/components/portal/Popup.d.ts +4 -0
- package/lib/typescript/src/components/portal/Popup.d.ts.map +1 -0
- package/lib/typescript/src/components/portal/index.d.ts.map +1 -1
- package/lib/typescript/src/components/product/CardHorizontal.d.ts +3 -2
- package/lib/typescript/src/components/product/CardHorizontal.d.ts.map +1 -1
- package/lib/typescript/src/constants/events.d.ts +33 -0
- package/lib/typescript/src/constants/events.d.ts.map +1 -1
- package/lib/typescript/src/constants/index.d.ts +5 -1
- package/lib/typescript/src/constants/index.d.ts.map +1 -1
- package/lib/typescript/src/constants/query.d.ts +4 -0
- package/lib/typescript/src/constants/query.d.ts.map +1 -1
- package/lib/typescript/src/context/ChatContext.d.ts.map +1 -1
- package/lib/typescript/src/hooks/message/useSendMessage.d.ts +2 -2
- package/lib/typescript/src/hooks/message/useSendMessage.d.ts.map +1 -1
- package/lib/typescript/src/hooks/message/useStreamMessage.d.ts.map +1 -1
- package/lib/typescript/src/hooks/messageActions/index.d.ts +10 -0
- package/lib/typescript/src/hooks/messageActions/index.d.ts.map +1 -0
- package/lib/typescript/src/hooks/messageActions/useAudioPlayer.d.ts +14 -0
- package/lib/typescript/src/hooks/messageActions/useAudioPlayer.d.ts.map +1 -0
- package/lib/typescript/src/hooks/messageActions/useCopyToClipboard.d.ts +9 -0
- package/lib/typescript/src/hooks/messageActions/useCopyToClipboard.d.ts.map +1 -0
- package/lib/typescript/src/hooks/messageActions/useFeedback.d.ts +18 -0
- package/lib/typescript/src/hooks/messageActions/useFeedback.d.ts.map +1 -0
- package/lib/typescript/src/hooks/messageActions/useSendFeedback.d.ts +6 -0
- package/lib/typescript/src/hooks/messageActions/useSendFeedback.d.ts.map +1 -0
- package/lib/typescript/src/hooks/messageActions/useShareMessage.d.ts +12 -0
- package/lib/typescript/src/hooks/messageActions/useShareMessage.d.ts.map +1 -0
- package/lib/typescript/src/hooks/session/useDeleteSession.d.ts +2 -0
- package/lib/typescript/src/hooks/session/useDeleteSession.d.ts.map +1 -0
- package/lib/typescript/src/hooks/session/useRenameSession.d.ts +2 -0
- package/lib/typescript/src/hooks/session/useRenameSession.d.ts.map +1 -0
- package/lib/typescript/src/hooks/session/useSearchSessions.d.ts +1 -1
- package/lib/typescript/src/hooks/session/useSearchSessions.d.ts.map +1 -1
- package/lib/typescript/src/hooks/session/useShareSession.d.ts +2 -0
- package/lib/typescript/src/hooks/session/useShareSession.d.ts.map +1 -0
- package/lib/typescript/src/hooks/upload/useImageUpload.d.ts +1 -1
- package/lib/typescript/src/hooks/upload/useImageUpload.d.ts.map +1 -1
- package/lib/typescript/src/services/endpoints.d.ts +5 -0
- package/lib/typescript/src/services/endpoints.d.ts.map +1 -1
- package/lib/typescript/src/services/index.d.ts +1 -0
- package/lib/typescript/src/services/index.d.ts.map +1 -1
- package/lib/typescript/src/services/playbackService.d.ts +2 -0
- package/lib/typescript/src/services/playbackService.d.ts.map +1 -0
- package/lib/typescript/src/store/audioPlayer.d.ts +27 -0
- package/lib/typescript/src/store/audioPlayer.d.ts.map +1 -0
- package/lib/typescript/src/store/messageActions.d.ts +9 -0
- package/lib/typescript/src/store/messageActions.d.ts.map +1 -0
- package/lib/typescript/src/store/session.d.ts.map +1 -1
- package/lib/typescript/src/translation/index.d.ts +3 -4
- package/lib/typescript/src/translation/index.d.ts.map +1 -1
- package/lib/typescript/src/translation/resources/i18n.d.ts +5 -0
- package/lib/typescript/src/translation/resources/i18n.d.ts.map +1 -0
- package/lib/typescript/src/types/chat.d.ts +16 -1
- package/lib/typescript/src/types/chat.d.ts.map +1 -1
- package/lib/typescript/src/types/dto.d.ts +11 -0
- package/lib/typescript/src/types/dto.d.ts.map +1 -1
- package/lib/typescript/src/types/index.d.ts +1 -0
- package/lib/typescript/src/types/index.d.ts.map +1 -1
- package/lib/typescript/src/types/messageActions.d.ts +85 -0
- package/lib/typescript/src/types/messageActions.d.ts.map +1 -0
- package/lib/typescript/src/types/ui.d.ts +16 -1
- package/lib/typescript/src/types/ui.d.ts.map +1 -1
- package/lib/typescript/src/utils/textCleaner.d.ts +30 -0
- package/lib/typescript/src/utils/textCleaner.d.ts.map +1 -0
- package/lib/typescript/src/utils/ui.d.ts +12 -1
- package/lib/typescript/src/utils/ui.d.ts.map +1 -1
- package/package.json +6 -6
- package/src/components/Drawer/DeleteSessionPopup.tsx +121 -0
- package/src/components/Drawer/DrawerContent.tsx +23 -7
- package/src/components/Drawer/RenameSessionPopup.tsx +145 -0
- package/src/components/Drawer/SearchInput.tsx +11 -2
- package/src/components/Drawer/SessionItem.tsx +22 -8
- package/src/components/Drawer/SessionList.tsx +0 -2
- package/src/components/Drawer/SessionOptionsBottomSheet.tsx +138 -0
- package/src/components/Drawer/ShareSessionPopup.tsx +145 -0
- package/src/components/chat/ChatEmpty.tsx +15 -5
- package/src/components/chat/ChatHeader.tsx +9 -4
- package/src/components/chat/ChatMessageList.tsx +78 -18
- package/src/components/chat/SuggestionItem.tsx +4 -3
- package/src/components/chat/footer/index.tsx +95 -14
- package/src/components/chat/footer/item/UploadImageItem.tsx +21 -1
- package/src/components/chat/index.tsx +8 -11
- package/src/components/chat/item/ChatAIAnswerMessageItem.tsx +55 -6
- package/src/components/chat/item/DeeplinkItem.tsx +30 -2
- package/src/components/chat/item/MessageActionsBar.tsx +326 -0
- package/src/components/chat/item/actions/ActionButton.tsx +65 -0
- package/src/components/portal/BottomSheet.tsx +307 -0
- package/src/components/portal/Popup.tsx +345 -0
- package/src/components/portal/index.tsx +5 -1
- package/src/components/product/CardHorizontal.tsx +45 -10
- package/src/constants/events.ts +34 -0
- package/src/constants/index.ts +6 -1
- package/src/constants/query.ts +4 -0
- package/src/context/ChatContext.tsx +6 -0
- package/src/hooks/message/useSendMessage.ts +47 -4
- package/src/hooks/message/useStreamMessage.ts +15 -4
- package/src/hooks/messageActions/index.ts +10 -0
- package/src/hooks/messageActions/useAudioPlayer.ts +346 -0
- package/src/hooks/messageActions/useCopyToClipboard.ts +38 -0
- package/src/hooks/messageActions/useFeedback.ts +114 -0
- package/src/hooks/messageActions/useSendFeedback.ts +31 -0
- package/src/hooks/messageActions/useShareMessage.ts +146 -0
- package/src/hooks/session/useDeleteSession.ts +25 -0
- package/src/hooks/session/useRenameSession.ts +37 -0
- package/src/hooks/session/useSearchSessions.ts +6 -1
- package/src/hooks/session/useShareSession.ts +22 -0
- package/src/hooks/upload/useImageUpload.ts +6 -2
- package/src/ignore.d.ts +20 -1
- package/src/services/endpoints.ts +10 -0
- package/src/services/index.ts +1 -0
- package/src/services/playbackService.ts +22 -0
- package/src/store/audioPlayer.ts +112 -0
- package/src/store/messageActions.ts +161 -0
- package/src/store/session.ts +4 -2
- package/src/translation/index.ts +27 -19
- package/src/translation/resources/i18n.ts +45 -0
- package/src/types/chat.ts +21 -1
- package/src/types/dto.ts +14 -0
- package/src/types/index.ts +1 -0
- package/src/types/messageActions.ts +131 -0
- package/src/types/ui.ts +19 -1
- package/src/utils/textCleaner.ts +65 -0
- package/src/utils/ui.tsx +29 -2
- package/lib/module/translation/resources/vi.js +0 -12
- package/lib/module/translation/resources/vi.js.map +0 -1
- package/lib/typescript/src/translation/resources/vi.d.ts +0 -11
- package/lib/typescript/src/translation/resources/vi.d.ts.map +0 -1
- 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,
|
|
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":";;AAAA,SAASA,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACnD,OAAOC,mBAAmB,MAAM,wBAAwB;AAExD,SAASC,cAAc,QAAQ,8BAA2B;AAC1D,SAASC,SAAS,QAAQ,6BAA0B;AAkBpD,OAAO,MAAMC,cAAc,GAAGA,CAAC;EAC7BC,IAAI;EACJC,SAAS;EACTC;AACmB,CAAC,KAAK;EACzB,MAAM;IAAEC;EAAW,CAAC,GAAGN,cAAc,CAAC,CAAC;EACvC,MAAM,CAACO,QAAQ,EAAEC,WAAW,CAAC,GAAGV,QAAQ,CAAC,CAAC,CAAC;EAC3C,MAAM,CAACW,WAAW,EAAEC,cAAc,CAAC,GAAGZ,QAAQ,CAAC,KAAK,CAAC;EACrD,MAAM,CAACa,SAAS,EAAEC,YAAY,CAAC,GAAGd,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAM,CAACe,OAAO,EAAEC,UAAU,CAAC,GAAGhB,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAMiB,SAAS,GAAGlB,MAAM,CAAoB,IAAI,CAAC;EAEjDD,SAAS,CAAC,MAAM;IACd,IAAIoB,SAAS,GAAG,KAAK;IACrB,IAAIb,IAAI,IAAI,CAACA,IAAI,CAACc,SAAS,EAAE;MAC3BD,SAAS,GAAG,IAAI;MAChB,MAAME,QAAQ,GAAG,MAAAA,CAAA,KAAY;QAC3B,IAAI;UACFR,cAAc,CAAC,IAAI,CAAC;UACpBI,UAAU,CAAC,KAAK,CAAC;UACjBF,YAAY,CAAC,KAAK,CAAC;UACnBJ,WAAW,CAAC,CAAC,CAAC;UAEd,MAAMW,QAAQ,GAAGhB,IAAI,CAACiB,IAAI,EAAEC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;UAClD,IAAI,CAACF,QAAQ,EAAE,MAAM,IAAIG,KAAK,CAAC,qBAAqB,CAAC;UAErD,MAAMC,QAAQ,GAAG,CACf;YACEC,IAAI,EAAE,OAAO;YACbC,QAAQ,EAAEtB,IAAI,CAACsB,QAAQ,IAAI,YAAYC,IAAI,CAACC,GAAG,CAAC,CAAC,MAAM;YACvDC,IAAI,EAAEzB,IAAI,CAAC0B,IAAI,IAAI,YAAY;YAC/BC,IAAI,EAAE/B,mBAAmB,CAACgC,IAAI,CAACZ,QAAQ;UACzC,CAAC,CACF;UAED,MAAMa,SAAS,GAAG,GAAG1B,UAAU,GAAGL,SAAS,CAACgC,eAAe,CAACC,MAAM,gCAAgC;UAElG,MAAMC,KAAK,GAAIC,MAAM,EAAUC,WAAW;UAC1C,MAAMC,IAAI,GAAGvC,mBAAmB,CAACwC,KAAK,CACpC,MAAM,EACNP,SAAS,EACT;YACE,cAAc,EAAE,qBAAqB;YACrC,eAAe,EAAE,UAAUG,KAAK;UAClC,CAAC,EACDZ,QACF,CAA0B;UAE1BR,SAAS,CAACyB,OAAO,GAAGF,IAAI;
|
|
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;
|
|
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 +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":[]}
|