react-native-chatbot-ai 0.1.0 → 0.1.2
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/assets/svgIcon/IconChatArrow.js +0 -1
- package/lib/module/assets/svgIcon/IconChatArrow.js.map +1 -1
- package/lib/module/assets/svgIcon/IconPdf.js +27 -0
- package/lib/module/assets/svgIcon/IconPdf.js.map +1 -0
- package/lib/module/assets/svgIcon/IconThinkingStep.js +0 -1
- package/lib/module/assets/svgIcon/IconThinkingStep.js.map +1 -1
- package/lib/module/components/chat/ChatEmpty.js +6 -1
- package/lib/module/components/chat/ChatEmpty.js.map +1 -1
- package/lib/module/components/chat/ChatMessageList.js +33 -6
- package/lib/module/components/chat/ChatMessageList.js.map +1 -1
- package/lib/module/components/chat/footer/index.js +328 -0
- package/lib/module/components/chat/footer/index.js.map +1 -0
- package/lib/module/components/chat/footer/item/UploadFileItem.js +163 -0
- package/lib/module/components/chat/footer/item/UploadFileItem.js.map +1 -0
- package/lib/module/components/chat/footer/item/UploadImageItem.js +94 -0
- package/lib/module/components/chat/footer/item/UploadImageItem.js.map +1 -0
- package/lib/module/components/chat/index.js +1 -1
- package/lib/module/components/chat/index.js.map +1 -1
- package/lib/module/components/chat/item/ChatAIAnswerMessageItem.js +114 -32
- package/lib/module/components/chat/item/ChatAIAnswerMessageItem.js.map +1 -1
- package/lib/module/components/chat/item/ChatAIThinkingMessageItem.js +18 -7
- package/lib/module/components/chat/item/ChatAIThinkingMessageItem.js.map +1 -1
- package/lib/module/components/chat/item/ChatUserMessageItem.js +122 -15
- package/lib/module/components/chat/item/ChatUserMessageItem.js.map +1 -1
- package/lib/module/components/portal/Toast.js +193 -0
- package/lib/module/components/portal/Toast.js.map +1 -0
- package/lib/module/components/portal/index.js +15 -0
- package/lib/module/components/portal/index.js.map +1 -0
- package/lib/module/constants/events.js +2 -1
- package/lib/module/constants/events.js.map +1 -1
- package/lib/module/constants/index.js +9 -0
- package/lib/module/constants/index.js.map +1 -0
- package/lib/module/context/ChatContext.js +8 -5
- package/lib/module/context/ChatContext.js.map +1 -1
- package/lib/module/hooks/message/useMessage.js +0 -1
- package/lib/module/hooks/message/useMessage.js.map +1 -1
- package/lib/module/hooks/message/useSendMessage.js +3 -3
- package/lib/module/hooks/message/useSendMessage.js.map +1 -1
- package/lib/module/hooks/upload/useFileUpload.js +94 -0
- package/lib/module/hooks/upload/useFileUpload.js.map +1 -0
- package/lib/module/hooks/upload/useImageUpload.js +92 -0
- package/lib/module/hooks/upload/useImageUpload.js.map +1 -0
- package/lib/module/hooks/useAndroidBackHandler.js +20 -0
- package/lib/module/hooks/useAndroidBackHandler.js.map +1 -0
- package/lib/module/services/endpoints.js +3 -0
- package/lib/module/services/endpoints.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/ui.js +4 -0
- package/lib/module/types/ui.js.map +1 -0
- package/lib/module/utils/common.js +31 -0
- package/lib/module/utils/common.js.map +1 -0
- package/lib/module/utils/device.js +137 -0
- package/lib/module/utils/device.js.map +1 -0
- package/lib/module/utils/ui.js +28 -0
- package/lib/module/utils/ui.js.map +1 -0
- package/lib/typescript/src/assets/icons/index.d.ts.map +1 -1
- package/lib/typescript/src/assets/svgIcon/IconChatArrow.d.ts.map +1 -1
- package/lib/typescript/src/assets/svgIcon/IconPdf.d.ts +7 -0
- package/lib/typescript/src/assets/svgIcon/IconPdf.d.ts.map +1 -0
- package/lib/typescript/src/assets/svgIcon/IconThinkingStep.d.ts.map +1 -1
- package/lib/typescript/src/components/chat/ChatEmpty.d.ts.map +1 -1
- package/lib/typescript/src/components/chat/ChatMessageList.d.ts.map +1 -1
- package/lib/typescript/src/components/chat/footer/index.d.ts +16 -0
- package/lib/typescript/src/components/chat/footer/index.d.ts.map +1 -0
- package/lib/typescript/src/components/chat/footer/item/UploadFileItem.d.ts +9 -0
- package/lib/typescript/src/components/chat/footer/item/UploadFileItem.d.ts.map +1 -0
- package/lib/typescript/src/components/chat/footer/item/UploadImageItem.d.ts +9 -0
- package/lib/typescript/src/components/chat/footer/item/UploadImageItem.d.ts.map +1 -0
- package/lib/typescript/src/components/chat/item/ChatAIAnswerMessageItem.d.ts +9 -0
- package/lib/typescript/src/components/chat/item/ChatAIAnswerMessageItem.d.ts.map +1 -1
- package/lib/typescript/src/components/chat/item/ChatAIThinkingMessageItem.d.ts.map +1 -1
- package/lib/typescript/src/components/chat/item/ChatUserMessageItem.d.ts.map +1 -1
- package/lib/typescript/src/components/portal/Toast.d.ts +4 -0
- package/lib/typescript/src/components/portal/Toast.d.ts.map +1 -0
- package/lib/typescript/src/components/portal/index.d.ts +3 -0
- package/lib/typescript/src/components/portal/index.d.ts.map +1 -0
- package/lib/typescript/src/constants/events.d.ts +1 -0
- package/lib/typescript/src/constants/events.d.ts.map +1 -1
- package/lib/typescript/src/constants/index.d.ts +6 -0
- package/lib/typescript/src/constants/index.d.ts.map +1 -0
- package/lib/typescript/src/context/ChatContext.d.ts.map +1 -1
- package/lib/typescript/src/hooks/message/useMessage.d.ts.map +1 -1
- package/lib/typescript/src/hooks/message/useSendMessage.d.ts +2 -1
- package/lib/typescript/src/hooks/message/useSendMessage.d.ts.map +1 -1
- package/lib/typescript/src/hooks/upload/useFileUpload.d.ts +15 -0
- package/lib/typescript/src/hooks/upload/useFileUpload.d.ts.map +1 -0
- package/lib/typescript/src/hooks/upload/useImageUpload.d.ts +15 -0
- package/lib/typescript/src/hooks/upload/useImageUpload.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useAndroidBackHandler.d.ts +4 -0
- package/lib/typescript/src/hooks/useAndroidBackHandler.d.ts.map +1 -0
- package/lib/typescript/src/services/endpoints.d.ts +3 -0
- package/lib/typescript/src/services/endpoints.d.ts.map +1 -1
- package/lib/typescript/src/types/chat.d.ts +6 -0
- package/lib/typescript/src/types/chat.d.ts.map +1 -1
- package/lib/typescript/src/types/dto.d.ts +10 -1
- 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/ui.d.ts +7 -0
- package/lib/typescript/src/types/ui.d.ts.map +1 -0
- package/lib/typescript/src/utils/common.d.ts +10 -0
- package/lib/typescript/src/utils/common.d.ts.map +1 -0
- package/lib/typescript/src/utils/device.d.ts +11 -0
- package/lib/typescript/src/utils/device.d.ts.map +1 -0
- package/lib/typescript/src/utils/ui.d.ts +12 -0
- package/lib/typescript/src/utils/ui.d.ts.map +1 -0
- package/package.json +11 -6
- package/src/assets/icons/index.ts +1 -1
- package/src/assets/svgIcon/IconChatArrow.tsx +1 -7
- package/src/assets/svgIcon/IconPdf.tsx +26 -0
- package/src/assets/svgIcon/IconThinkingStep.tsx +1 -7
- package/src/components/chat/ChatEmpty.tsx +5 -2
- package/src/components/chat/ChatMessageList.tsx +39 -5
- package/src/components/chat/footer/index.tsx +410 -0
- package/src/components/chat/footer/item/UploadFileItem.tsx +181 -0
- package/src/components/chat/footer/item/UploadImageItem.tsx +91 -0
- package/src/components/chat/index.tsx +1 -1
- package/src/components/chat/item/ChatAIAnswerMessageItem.tsx +152 -54
- package/src/components/chat/item/ChatAIThinkingMessageItem.tsx +37 -31
- package/src/components/chat/item/ChatUserMessageItem.tsx +145 -13
- package/src/components/portal/Toast.tsx +315 -0
- package/src/components/portal/index.tsx +13 -0
- package/src/constants/events.ts +1 -0
- package/src/constants/index.ts +9 -0
- package/src/context/ChatContext.tsx +6 -2
- package/src/hooks/message/useMessage.ts +0 -1
- package/src/hooks/message/useSendMessage.ts +4 -4
- package/src/hooks/upload/useFileUpload.ts +126 -0
- package/src/hooks/upload/useImageUpload.ts +123 -0
- package/src/hooks/useAndroidBackHandler.ts +29 -0
- package/src/services/endpoints.ts +3 -0
- package/src/types/chat.ts +2 -0
- package/src/types/dto.ts +16 -1
- package/src/types/index.ts +1 -0
- package/src/types/ui.ts +12 -0
- package/src/utils/common.ts +40 -0
- package/src/utils/device.ts +170 -0
- package/src/utils/ui.tsx +32 -0
- package/lib/module/components/chat/ChatFooter.js +0 -91
- package/lib/module/components/chat/ChatFooter.js.map +0 -1
- package/lib/typescript/src/components/chat/ChatFooter.d.ts +0 -3
- package/lib/typescript/src/components/chat/ChatFooter.d.ts.map +0 -1
- package/src/components/chat/ChatFooter.tsx +0 -99
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Svg","Path","jsx","_jsx","IconChatArrow","props","width","height","fill","opacity","viewBox","children","d","fillOpacity"],"sourceRoot":"../../../../src","sources":["assets/svgIcon/IconChatArrow.tsx"],"mappings":";;AAAA,OAAOA,GAAG,IAAIC,IAAI,QAAQ,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAS7C,OAAO,MAAMC,aAAa,GAAIC,KAAY,IAAK;EAC7C,MAAM;IAAEC,KAAK,GAAG,CAAC;IAAEC,MAAM,GAAG,EAAE;IAAEC,IAAI,GAAG,MAAM;IAAEC,OAAO,GAAG;EAAI,CAAC,GAAGJ,KAAK,IAAI,CAAC,CAAC;EAC5E,oBACEF,IAAA,CAACH,GAAG;
|
|
1
|
+
{"version":3,"names":["Svg","Path","jsx","_jsx","IconChatArrow","props","width","height","fill","opacity","viewBox","children","d","fillOpacity"],"sourceRoot":"../../../../src","sources":["assets/svgIcon/IconChatArrow.tsx"],"mappings":";;AAAA,OAAOA,GAAG,IAAIC,IAAI,QAAQ,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAS7C,OAAO,MAAMC,aAAa,GAAIC,KAAY,IAAK;EAC7C,MAAM;IAAEC,KAAK,GAAG,CAAC;IAAEC,MAAM,GAAG,EAAE;IAAEC,IAAI,GAAG,MAAM;IAAEC,OAAO,GAAG;EAAI,CAAC,GAAGJ,KAAK,IAAI,CAAC,CAAC;EAC5E,oBACEF,IAAA,CAACH,GAAG;IAACM,KAAK,EAAEA,KAAM;IAACC,MAAM,EAAEA,MAAO;IAACG,OAAO,EAAC,UAAU;IAACF,IAAI,EAAC,MAAM;IAAAG,QAAA,eAC/DR,IAAA,CAACF,IAAI;MACHW,CAAC,EAAC,uEAAuE;MACzEJ,IAAI,EAAEA,IAAK;MACXK,WAAW,EAAEJ;IAAQ,CACtB;EAAC,CACC,CAAC;AAEV,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import Svg, { Path } from 'react-native-svg';
|
|
4
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
|
+
export const IconPdf = props => {
|
|
6
|
+
const {
|
|
7
|
+
width = 20,
|
|
8
|
+
height = 20
|
|
9
|
+
} = props || {};
|
|
10
|
+
return /*#__PURE__*/_jsxs(Svg, {
|
|
11
|
+
width: width,
|
|
12
|
+
height: height,
|
|
13
|
+
viewBox: "0 0 20 20",
|
|
14
|
+
fill: "none",
|
|
15
|
+
children: [/*#__PURE__*/_jsx(Path, {
|
|
16
|
+
d: "M2.5 0h10.62l5.63 5.608V18.75c0 .69-.56 1.25-1.25 1.25h-15c-.69 0-1.25-.56-1.25-1.25V1.25C1.25.56 1.81 0 2.5 0z",
|
|
17
|
+
fill: "#E2574C"
|
|
18
|
+
}), /*#__PURE__*/_jsx(Path, {
|
|
19
|
+
d: "M18.732 5.625h-4.357c-.69 0-1.25-.56-1.25-1.25V.013l5.607 5.612z",
|
|
20
|
+
fill: "#B53629"
|
|
21
|
+
}), /*#__PURE__*/_jsx(Path, {
|
|
22
|
+
d: "M12.314 9.642c.012-.19.09-.392.234-.607.147-.218.336-.386.566-.505.23-.12.45-.181.664-.185h1.513c.296-.004.476.123.542.38v.168c-.066.257-.246.384-.542.38h-1.267a.498.498 0 00-.32.15.448.448 0 00-.148.327v.618h1.625c.295-.004.475.123.541.381v.179c-.066.258-.246.385-.541.38h-1.624v1.548a.468.468 0 01-.148.334.512.512 0 01-.32.142h-.314a.506.506 0 01-.314-.143.468.468 0 01-.147-.333V9.642zM10.516 9.75a.448.448 0 00-.148-.328.499.499 0 00-.32-.149h-.344c-.143-.004-.221.048-.234.155v2.821c.013.107.09.159.234.155h.345a.512.512 0 00.32-.143.468.468 0 00.147-.333V9.75zM8.24 9.047c.004-.21.107-.38.308-.512.2-.134.447-.198.738-.19h.941c.258.004.502.065.732.184.23.12.416.288.56.506.147.215.227.417.24.607v2.393c-.013.19-.093.395-.24.613-.144.214-.33.38-.56.5-.23.119-.474.18-.732.184h-.941c-.291.008-.538-.053-.738-.184-.201-.135-.304-.308-.308-.518V9.047zM4.627 13.332a.506.506 0 01-.313-.143.468.468 0 01-.148-.333V9.63c.012-.19.09-.392.234-.607.147-.218.336-.386.566-.505.23-.12.45-.181.664-.185h.523c.258.004.502.065.732.184.23.12.416.288.56.506.148.215.228.417.24.607v.381c-.012.19-.092.395-.24.613-.144.215-.33.381-.56.5-.23.12-.47.18-.72.185h-.769v1.547a.468.468 0 01-.147.333.512.512 0 01-.32.143h-.302zm1.815-3.594a.448.448 0 00-.147-.328.499.499 0 00-.32-.149h-.111a.499.499 0 00-.32.15.448.448 0 00-.148.327v.63h.579a.51.51 0 00.32-.142.468.468 0 00.147-.334v-.154z",
|
|
23
|
+
fill: "#fff"
|
|
24
|
+
})]
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=IconPdf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Svg","Path","jsx","_jsx","jsxs","_jsxs","IconPdf","props","width","height","viewBox","fill","children","d"],"sourceRoot":"../../../../src","sources":["assets/svgIcon/IconPdf.tsx"],"mappings":";;AAAA,OAAOA,GAAG,IAAIC,IAAI,QAAQ,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAO7C,OAAO,MAAMC,OAAO,GAAIC,KAAY,IAAK;EACvC,MAAM;IAAEC,KAAK,GAAG,EAAE;IAAEC,MAAM,GAAG;EAAG,CAAC,GAAGF,KAAK,IAAI,CAAC,CAAC;EAC/C,oBACEF,KAAA,CAACL,GAAG;IAACQ,KAAK,EAAEA,KAAM;IAACC,MAAM,EAAEA,MAAO;IAACC,OAAO,EAAC,WAAW;IAACC,IAAI,EAAC,MAAM;IAAAC,QAAA,gBAChET,IAAA,CAACF,IAAI;MACHY,CAAC,EAAC,iHAAiH;MACnHF,IAAI,EAAC;IAAS,CACf,CAAC,eACFR,IAAA,CAACF,IAAI;MACHY,CAAC,EAAC,kEAAkE;MACpEF,IAAI,EAAC;IAAS,CACf,CAAC,eACFR,IAAA,CAACF,IAAI;MACHY,CAAC,EAAC,g2CAAg2C;MACl2CF,IAAI,EAAC;IAAM,CACZ,CAAC;EAAA,CACC,CAAC;AAEV,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Svg","G","Mask","Path","jsx","_jsx","jsxs","_jsxs","IconThinkingStep","props","width","height","viewBox","fill","children","id","maskUnits","x","y","d","mask"],"sourceRoot":"../../../../src","sources":["assets/svgIcon/IconThinkingStep.tsx"],"mappings":";;AAAA,OAAOA,GAAG,IAAIC,CAAC,EAAEC,IAAI,EAAEC,IAAI,QAAQ,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAOtD,OAAO,MAAMC,gBAAgB,GAAIC,KAAY,IAAK;EAChD,MAAM;IAAEC,KAAK,GAAG,EAAE;IAAEC,MAAM,GAAG;EAAG,CAAC,GAAGF,KAAK,IAAI,CAAC,CAAC;EAC/C,oBACEF,KAAA,CAACP,GAAG;
|
|
1
|
+
{"version":3,"names":["Svg","G","Mask","Path","jsx","_jsx","jsxs","_jsxs","IconThinkingStep","props","width","height","viewBox","fill","children","id","maskUnits","x","y","d","mask"],"sourceRoot":"../../../../src","sources":["assets/svgIcon/IconThinkingStep.tsx"],"mappings":";;AAAA,OAAOA,GAAG,IAAIC,CAAC,EAAEC,IAAI,EAAEC,IAAI,QAAQ,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAOtD,OAAO,MAAMC,gBAAgB,GAAIC,KAAY,IAAK;EAChD,MAAM;IAAEC,KAAK,GAAG,EAAE;IAAEC,MAAM,GAAG;EAAG,CAAC,GAAGF,KAAK,IAAI,CAAC,CAAC;EAC/C,oBACEF,KAAA,CAACP,GAAG;IAACU,KAAK,EAAEA,KAAM;IAACC,MAAM,EAAEA,MAAO;IAACC,OAAO,EAAC,WAAW;IAACC,IAAI,EAAC,MAAM;IAAAC,QAAA,gBAChET,IAAA,CAACH,IAAI;MACHa,EAAE,EAAC,GAAG;MACNC,SAAS,EAAC,gBAAgB;MAC1BC,CAAC,EAAE,CAAC,CAAE;MACNC,CAAC,EAAE,CAAC,CAAE;MACNR,KAAK,EAAE,EAAG;MACVC,MAAM,EAAE,EAAG;MAAAG,QAAA,eAEXT,IAAA,CAACF,IAAI;QAACgB,CAAC,EAAC,oBAAoB;QAACN,IAAI,EAAC;MAAM,CAAE;IAAC,CACvC,CAAC,eACPN,KAAA,CAACN,CAAC;MAACmB,IAAI,EAAC,SAAS;MAAAN,QAAA,gBACfT,IAAA,CAACF,IAAI;QACHgB,CAAC,EAAC,kPAAkP;QACpPN,IAAI,EAAC;MAAS,CACf,CAAC,eACFR,IAAA,CAACF,IAAI;QACHgB,CAAC,EAAC,0MAA0M;QAC5MN,IAAI,EAAC;MAAM,CACZ,CAAC,eACFR,IAAA,CAACF,IAAI;QACHgB,CAAC,EAAC,gQAAgQ;QAClQN,IAAI,EAAC;MAAS,CACf,CAAC,eACFR,IAAA,CAACF,IAAI;QACHgB,CAAC,EAAC,iNAAiN;QACnNN,IAAI,EAAC;MAAM,CACZ,CAAC;IAAA,CACD,CAAC;EAAA,CACD,CAAC;AAEV,CAAC","ignoreList":[]}
|
|
@@ -19,6 +19,11 @@ const ChatEmpty = () => {
|
|
|
19
19
|
}, 200);
|
|
20
20
|
return /*#__PURE__*/_jsxs(KContainer.ScrollView, {
|
|
21
21
|
contentContainerStyle: styles.container,
|
|
22
|
+
style: {
|
|
23
|
+
transform: [{
|
|
24
|
+
scaleY: -1
|
|
25
|
+
}]
|
|
26
|
+
},
|
|
22
27
|
children: [/*#__PURE__*/_jsx(KLabel.Text, {
|
|
23
28
|
typo: "TextXLgMedium",
|
|
24
29
|
center: true,
|
|
@@ -34,7 +39,7 @@ const ChatEmpty = () => {
|
|
|
34
39
|
typo: "TextMdNormal",
|
|
35
40
|
center: true,
|
|
36
41
|
color: KColors.gray.normal,
|
|
37
|
-
children: '
|
|
42
|
+
children: 'Những gợi ý dành cho bạn:'
|
|
38
43
|
})]
|
|
39
44
|
}), data?.suggestions?.map(item => /*#__PURE__*/_jsx(SuggestionItem, {
|
|
40
45
|
item: item,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["KColors","KContainer","KLabel","KSpacingValue","StyleSheet","useFetchSuggestions","SuggestionItem","useSendMessage","debounce","jsx","_jsx","jsxs","_jsxs","ChatEmpty","data","onSendMessage","onPress","item","content","ScrollView","contentContainerStyle","styles","container","children","Text","typo","center","View","color","gray","normal","suggestions","map","onPressItem","suggestion_id","light","textAlign","create","flexGrow","justifyContent","alignItems","padding","gap"],"sourceRoot":"../../../../src","sources":["components/chat/ChatEmpty.tsx"],"mappings":";;AAAA,SAASA,OAAO,EAAEC,UAAU,EAAEC,MAAM,EAAEC,aAAa,QAAQ,eAAe;AAC1E,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,mBAAmB,QAAQ,gDAA6C;AACjF,OAAOC,cAAc,MAAM,qBAAkB;AAC7C,SAASC,cAAc,QAAQ,uCAAoC;AACnE,OAAOC,QAAQ,MAAM,iBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGvC,MAAMC,SAAS,GAAGA,CAAA,KAAM;EACtB,MAAM;IAAEC;EAAK,CAAC,GAAGT,mBAAmB,CAAC,CAAC;EACtC,MAAM;IAAEU;EAAc,CAAC,GAAGR,cAAc,CAAC,CAAC;EAE1C,MAAMS,OAAO,GAAGR,QAAQ,CAAES,IAAqB,IAAK;IAClDF,aAAa,CAACE,IAAI,CAACC,OAAO,CAAC;EAC7B,CAAC,EAAE,GAAG,CAAC;EAEP,oBACEN,KAAA,CAACX,UAAU,CAACkB,UAAU;
|
|
1
|
+
{"version":3,"names":["KColors","KContainer","KLabel","KSpacingValue","StyleSheet","useFetchSuggestions","SuggestionItem","useSendMessage","debounce","jsx","_jsx","jsxs","_jsxs","ChatEmpty","data","onSendMessage","onPress","item","content","ScrollView","contentContainerStyle","styles","container","style","transform","scaleY","children","Text","typo","center","View","color","gray","normal","suggestions","map","onPressItem","suggestion_id","light","textAlign","create","flexGrow","justifyContent","alignItems","padding","gap"],"sourceRoot":"../../../../src","sources":["components/chat/ChatEmpty.tsx"],"mappings":";;AAAA,SAASA,OAAO,EAAEC,UAAU,EAAEC,MAAM,EAAEC,aAAa,QAAQ,eAAe;AAC1E,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,mBAAmB,QAAQ,gDAA6C;AACjF,OAAOC,cAAc,MAAM,qBAAkB;AAC7C,SAASC,cAAc,QAAQ,uCAAoC;AACnE,OAAOC,QAAQ,MAAM,iBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGvC,MAAMC,SAAS,GAAGA,CAAA,KAAM;EACtB,MAAM;IAAEC;EAAK,CAAC,GAAGT,mBAAmB,CAAC,CAAC;EACtC,MAAM;IAAEU;EAAc,CAAC,GAAGR,cAAc,CAAC,CAAC;EAE1C,MAAMS,OAAO,GAAGR,QAAQ,CAAES,IAAqB,IAAK;IAClDF,aAAa,CAACE,IAAI,CAACC,OAAO,CAAC;EAC7B,CAAC,EAAE,GAAG,CAAC;EAEP,oBACEN,KAAA,CAACX,UAAU,CAACkB,UAAU;IACpBC,qBAAqB,EAAEC,MAAM,CAACC,SAAU;IACxCC,KAAK,EAAE;MAAEC,SAAS,EAAE,CAAC;QAAEC,MAAM,EAAE,CAAC;MAAE,CAAC;IAAE,CAAE;IAAAC,QAAA,gBAEvChB,IAAA,CAACR,MAAM,CAACyB,IAAI;MAACC,IAAI,EAAC,eAAe;MAACC,MAAM;MAAAH,QAAA,EACrC;IAA4B,CAClB,CAAC,eACdd,KAAA,CAACX,UAAU,CAAC6B,IAAI;MAACD,MAAM;MAAAH,QAAA,gBACrBhB,IAAA,CAACR,MAAM,CAACyB,IAAI;QAACC,IAAI,EAAC,cAAc;QAACC,MAAM;QAACE,KAAK,EAAE/B,OAAO,CAACgC,IAAI,CAACC,MAAO;QAAAP,QAAA,EAChE;MAA8C,CACpC,CAAC,eACdhB,IAAA,CAACR,MAAM,CAACyB,IAAI;QAACC,IAAI,EAAC,cAAc;QAACC,MAAM;QAACE,KAAK,EAAE/B,OAAO,CAACgC,IAAI,CAACC,MAAO;QAAAP,QAAA,EAChE;MAA2B,CACjB,CAAC;IAAA,CACC,CAAC,EACjBZ,IAAI,EAAEoB,WAAW,EAAEC,GAAG,CAAElB,IAAqB,iBAC5CP,IAAA,CAACJ,cAAc;MAEbW,IAAI,EAAEA,IAAK;MACXmB,WAAW,EAAEpB;IAAQ,GAFhBC,IAAI,CAACoB,aAGX,CACF,CAAC,eACF3B,IAAA,CAACR,MAAM,CAACyB,IAAI;MACVC,IAAI,EAAC,cAAc;MACnBG,KAAK,EAAE/B,OAAO,CAACgC,IAAI,CAACM,KAAM;MAC1BC,SAAS,EAAC,QAAQ;MAAAb,QAAA,EAGhB;IAAgG,CAEvF,CAAC;EAAA,CACO,CAAC;AAE5B,CAAC;AAED,eAAeb,SAAS;AAExB,MAAMQ,MAAM,GAAGjB,UAAU,CAACoC,MAAM,CAAC;EAC/BlB,SAAS,EAAE;IACTmB,QAAQ,EAAE,CAAC;IACXC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,OAAO,EAAEzC,aAAa,CAAC,SAAS,CAAC;IACjC0C,GAAG,EAAE1C,aAAa,CAAC,QAAQ;EAC7B;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,19 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { FlatList, StyleSheet } from 'react-native';
|
|
3
|
+
import { FlatList, StyleSheet, DeviceEventEmitter } from 'react-native';
|
|
4
4
|
import ChatEmpty from "./ChatEmpty.js";
|
|
5
5
|
import { useMessage } from "../../hooks/message/useMessage.js";
|
|
6
6
|
import ChatItem from "./item/index.js";
|
|
7
7
|
import { KSpacingValue } from '@droppii/libs';
|
|
8
|
+
import { useCallback, useRef } from 'react';
|
|
9
|
+
import { useEffect } from 'react';
|
|
10
|
+
import { events } from "../../constants/events.js";
|
|
8
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
12
|
const ChatMessageList = () => {
|
|
10
13
|
const {
|
|
11
14
|
messageState
|
|
12
15
|
} = useMessage();
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
const flatListRef = useRef(null);
|
|
17
|
+
const scrollOffsetRef = useRef(0);
|
|
18
|
+
const onScroll = useCallback(event => {
|
|
19
|
+
scrollOffsetRef.current = event?.nativeEvent?.contentOffset?.y;
|
|
20
|
+
}, []);
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
const subExpandThinkingStep = DeviceEventEmitter.addListener(events.expandThinkingStep, isExpand => {
|
|
23
|
+
try {
|
|
24
|
+
const scrollToOffset = flatListRef.current?.scrollToOffset({
|
|
25
|
+
offset: scrollOffsetRef.current + (isExpand ? 60 : -60),
|
|
26
|
+
animated: true
|
|
27
|
+
});
|
|
28
|
+
setTimeout(() => {
|
|
29
|
+
scrollToOffset?.();
|
|
30
|
+
}, 100);
|
|
31
|
+
} catch (error) {
|
|
32
|
+
console.error(error);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
return () => {
|
|
36
|
+
subExpandThinkingStep.remove();
|
|
37
|
+
};
|
|
38
|
+
}, []);
|
|
16
39
|
return /*#__PURE__*/_jsx(FlatList, {
|
|
40
|
+
ref: flatListRef,
|
|
17
41
|
data: messageState?.messages || [],
|
|
18
42
|
renderItem: ({
|
|
19
43
|
item,
|
|
@@ -24,7 +48,9 @@ const ChatMessageList = () => {
|
|
|
24
48
|
}),
|
|
25
49
|
keyExtractor: item => item.id,
|
|
26
50
|
contentContainerStyle: styles.container,
|
|
27
|
-
inverted: true
|
|
51
|
+
inverted: true,
|
|
52
|
+
ListEmptyComponent: /*#__PURE__*/_jsx(ChatEmpty, {}),
|
|
53
|
+
onScroll: onScroll
|
|
28
54
|
});
|
|
29
55
|
};
|
|
30
56
|
export default ChatMessageList;
|
|
@@ -32,7 +58,8 @@ const styles = StyleSheet.create({
|
|
|
32
58
|
container: {
|
|
33
59
|
flexGrow: 1,
|
|
34
60
|
gap: KSpacingValue['0.5rem'],
|
|
35
|
-
paddingVertical: KSpacingValue['1rem']
|
|
61
|
+
paddingVertical: KSpacingValue['1rem'],
|
|
62
|
+
justifyContent: 'flex-end'
|
|
36
63
|
}
|
|
37
64
|
});
|
|
38
65
|
//# sourceMappingURL=ChatMessageList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["FlatList","StyleSheet","ChatEmpty","useMessage","ChatItem","KSpacingValue","jsx","_jsx","ChatMessageList","messageState","
|
|
1
|
+
{"version":3,"names":["FlatList","StyleSheet","DeviceEventEmitter","ChatEmpty","useMessage","ChatItem","KSpacingValue","useCallback","useRef","useEffect","events","jsx","_jsx","ChatMessageList","messageState","flatListRef","scrollOffsetRef","onScroll","event","current","nativeEvent","contentOffset","y","subExpandThinkingStep","addListener","expandThinkingStep","isExpand","scrollToOffset","offset","animated","setTimeout","error","console","remove","ref","data","messages","renderItem","item","index","keyExtractor","id","contentContainerStyle","styles","container","inverted","ListEmptyComponent","create","flexGrow","gap","paddingVertical","justifyContent"],"sourceRoot":"../../../../src","sources":["components/chat/ChatMessageList.tsx"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,UAAU,EAAEC,kBAAkB,QAAQ,cAAc;AACvE,OAAOC,SAAS,MAAM,gBAAa;AACnC,SAASC,UAAU,QAAQ,mCAAgC;AAC3D,OAAOC,QAAQ,MAAM,iBAAQ;AAC7B,SAASC,aAAa,QAAQ,eAAe;AAE7C,SAASC,WAAW,EAAEC,MAAM,QAAQ,OAAO;AAC3C,SAASC,SAAS,QAAQ,OAAO;AACjC,SAASC,MAAM,QAAQ,2BAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEhD,MAAMC,eAAe,GAAGA,CAAA,KAAM;EAC5B,MAAM;IAAEC;EAAa,CAAC,GAAGV,UAAU,CAAC,CAAC;EAErC,MAAMW,WAAW,GAAGP,MAAM,CAAM,IAAI,CAAC;EACrC,MAAMQ,eAAe,GAAGR,MAAM,CAAC,CAAC,CAAC;EAEjC,MAAMS,QAAQ,GAAGV,WAAW,CAAEW,KAAU,IAAK;IAC3CF,eAAe,CAACG,OAAO,GAAGD,KAAK,EAAEE,WAAW,EAAEC,aAAa,EAAEC,CAAC;EAChE,CAAC,EAAE,EAAE,CAAC;EAENb,SAAS,CAAC,MAAM;IACd,MAAMc,qBAAqB,GAAGrB,kBAAkB,CAACsB,WAAW,CAC1Dd,MAAM,CAACe,kBAAkB,EACxBC,QAAiB,IAAK;MACrB,IAAI;QACF,MAAMC,cAAc,GAAGZ,WAAW,CAACI,OAAO,EAAEQ,cAAc,CAAC;UACzDC,MAAM,EAAEZ,eAAe,CAACG,OAAO,IAAIO,QAAQ,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;UACvDG,QAAQ,EAAE;QACZ,CAAC,CAAC;QACFC,UAAU,CAAC,MAAM;UACfH,cAAc,GAAG,CAAC;QACpB,CAAC,EAAE,GAAG,CAAC;MACT,CAAC,CAAC,OAAOI,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAACA,KAAK,CAAC;MACtB;IACF,CACF,CAAC;IAED,OAAO,MAAM;MACXR,qBAAqB,CAACU,MAAM,CAAC,CAAC;IAChC,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,oBACErB,IAAA,CAACZ,QAAQ;IACPkC,GAAG,EAAEnB,WAAY;IACjBoB,IAAI,EAAErB,YAAY,EAAEsB,QAAQ,IAAI,EAAG;IACnCC,UAAU,EAAEA,CAAC;MAAEC,IAAI;MAAEC;IAA6C,CAAC,kBACjE3B,IAAA,CAACP,QAAQ;MAACiC,IAAI,EAAEA,IAAK;MAACC,KAAK,EAAEA;IAAM,CAAE,CACrC;IACFC,YAAY,EAAGF,IAAkB,IAAKA,IAAI,CAACG,EAAG;IAC9CC,qBAAqB,EAAEC,MAAM,CAACC,SAAU;IACxCC,QAAQ;IACRC,kBAAkB,eAAElC,IAAA,CAACT,SAAS,IAAE,CAAE;IAClCc,QAAQ,EAAEA;EAAS,CACpB,CAAC;AAEN,CAAC;AAED,eAAeJ,eAAe;AAE9B,MAAM8B,MAAM,GAAG1C,UAAU,CAAC8C,MAAM,CAAC;EAC/BH,SAAS,EAAE;IACTI,QAAQ,EAAE,CAAC;IACXC,GAAG,EAAE3C,aAAa,CAAC,QAAQ,CAAC;IAC5B4C,eAAe,EAAE5C,aAAa,CAAC,MAAM,CAAC;IACtC6C,cAAc,EAAE;EAClB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { KButton, KColors, KContainer, KImage, KInput, KLabel, KRadiusValue, KSpacingValue } from '@droppii/libs';
|
|
4
|
+
import { useCallback, useState, useRef, useMemo } from 'react';
|
|
5
|
+
import { FlatList, StyleSheet, TouchableWithoutFeedback } from 'react-native';
|
|
6
|
+
import debounce from 'lodash/debounce';
|
|
7
|
+
import { useSendMessage } from "../../../hooks/message/useSendMessage.js";
|
|
8
|
+
import useStreamMessageStore from "../../../store/streamMessage.js";
|
|
9
|
+
import { Menu, MenuTrigger, MenuOption, MenuOptions, renderers } from 'react-native-popup-menu';
|
|
10
|
+
import { openCameraPicker, openDocumentPicker, openImageMultiplePicker } from "../../../utils/device.js";
|
|
11
|
+
import UploadImageItem from "./item/UploadImageItem.js";
|
|
12
|
+
import { isSameFile, shortenFileName } from "../../../utils/common.js";
|
|
13
|
+
import { types } from '@react-native-documents/picker';
|
|
14
|
+
import UploadFileItem from "./item/UploadFileItem.js";
|
|
15
|
+
import UIUtils from "../../../utils/ui.js";
|
|
16
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
|
+
const {
|
|
18
|
+
Popover
|
|
19
|
+
} = renderers;
|
|
20
|
+
const MAX_FILE_UPLOAD = 3;
|
|
21
|
+
const MAX_FILE_SIZE = 30 * 1024 * 1024;
|
|
22
|
+
const MAX_IMAGE_SIZE = 7 * 1024 * 1024;
|
|
23
|
+
const ChatFooter = () => {
|
|
24
|
+
const menuRef = useRef(null);
|
|
25
|
+
const {
|
|
26
|
+
onSendMessage,
|
|
27
|
+
stopStream
|
|
28
|
+
} = useSendMessage();
|
|
29
|
+
const [message, setMessage] = useState('');
|
|
30
|
+
const isStreaming = useStreamMessageStore(state => state.isStreaming);
|
|
31
|
+
const [fileUpload, setFileUpload] = useState([]);
|
|
32
|
+
const debouncedMessage = debounce(message => {
|
|
33
|
+
setMessage(message);
|
|
34
|
+
}, 200);
|
|
35
|
+
const isDisabledSend = useMemo(() => {
|
|
36
|
+
return isStreaming || message.trim() === '' || fileUpload.length > 0 && fileUpload.some(i => !i.remoteUrl);
|
|
37
|
+
}, [isStreaming, message, fileUpload]);
|
|
38
|
+
const onPressImagePicker = useCallback(async () => {
|
|
39
|
+
if (fileUpload.filter(i => i.uploadType === 'image').length >= MAX_FILE_UPLOAD) {
|
|
40
|
+
UIUtils.toast.open({
|
|
41
|
+
title: `Chỉ được gửi tối đa ${MAX_FILE_UPLOAD} hình ảnh`
|
|
42
|
+
});
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const newImages = (await openImageMultiplePicker({
|
|
46
|
+
maxFiles: MAX_FILE_UPLOAD - fileUpload.length > 0 ? MAX_FILE_UPLOAD - fileUpload.length : 1
|
|
47
|
+
})) || [];
|
|
48
|
+
const uniqueImages = newImages.filter(img => !fileUpload.some(sel => isSameFile(sel, img))).map(i => ({
|
|
49
|
+
...i,
|
|
50
|
+
uploadType: 'image'
|
|
51
|
+
})).slice(0, MAX_FILE_UPLOAD - fileUpload.length);
|
|
52
|
+
if (uniqueImages?.length > 0) {
|
|
53
|
+
setFileUpload(prev => {
|
|
54
|
+
const totalImages = prev.filter(i => i.uploadType === 'image');
|
|
55
|
+
const totalPrevSize = totalImages.reduce((acc, item) => acc + (item.size || 0), 0);
|
|
56
|
+
const totalNewSize = uniqueImages.reduce((acc, item) => acc + (item.size || 0), 0);
|
|
57
|
+
if (totalPrevSize + totalNewSize > MAX_IMAGE_SIZE) {
|
|
58
|
+
UIUtils.toast.open({
|
|
59
|
+
title: `Tổng dung lượng ảnh tải lên có kích thước quá lớn:\n ${uniqueImages.map(i => shortenFileName(i.filename || '')).join(',\n')}, \nVui lòng nén ảnh hoặc tải lên nhiều lần để tiếp tục.`,
|
|
60
|
+
theme: 'danger'
|
|
61
|
+
});
|
|
62
|
+
return prev;
|
|
63
|
+
}
|
|
64
|
+
return [...prev, ...uniqueImages];
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}, [fileUpload]);
|
|
68
|
+
const onPressCameraPicker = useCallback(async () => {
|
|
69
|
+
if (fileUpload.filter(i => i.uploadType === 'image').length >= MAX_FILE_UPLOAD) {
|
|
70
|
+
UIUtils.toast.open({
|
|
71
|
+
title: `Chỉ được gửi tối đa ${MAX_FILE_UPLOAD} hình ảnh`
|
|
72
|
+
});
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const newImage = await openCameraPicker();
|
|
76
|
+
if (newImage) {
|
|
77
|
+
setFileUpload(prev => {
|
|
78
|
+
const totalImages = prev.filter(i => i.uploadType === 'image');
|
|
79
|
+
const totalPrevSize = totalImages.reduce((acc, item) => acc + (item.size || 0), 0);
|
|
80
|
+
const totalNewSize = newImage.size || 0;
|
|
81
|
+
if (totalPrevSize + totalNewSize > MAX_IMAGE_SIZE) {
|
|
82
|
+
UIUtils.toast.open({
|
|
83
|
+
title: `Tổng dung lượng ảnh tải lên có kích thước quá lớn:\n ${shortenFileName(newImage.filename || '')},\n Vui lòng nén ảnh hoặc tải lên nhiều lần để tiếp tục.`,
|
|
84
|
+
theme: 'danger'
|
|
85
|
+
});
|
|
86
|
+
return prev;
|
|
87
|
+
}
|
|
88
|
+
return [...prev, {
|
|
89
|
+
...newImage,
|
|
90
|
+
uploadType: 'image'
|
|
91
|
+
}];
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}, [fileUpload]);
|
|
95
|
+
const menuItems = useMemo(() => {
|
|
96
|
+
return [{
|
|
97
|
+
icon: 'image-o',
|
|
98
|
+
onPress: onPressImagePicker,
|
|
99
|
+
label: 'Thư viện ảnh'
|
|
100
|
+
}, {
|
|
101
|
+
icon: 'camera-o',
|
|
102
|
+
onPress: onPressCameraPicker,
|
|
103
|
+
label: 'Chụp ảnh'
|
|
104
|
+
}];
|
|
105
|
+
}, [onPressImagePicker, onPressCameraPicker]);
|
|
106
|
+
const onPressSend = useCallback(() => {
|
|
107
|
+
if (isStreaming) {
|
|
108
|
+
stopStream();
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const attachments = fileUpload.map(i => ({
|
|
112
|
+
type: i.uploadType,
|
|
113
|
+
source_type: 'url',
|
|
114
|
+
data: i.remoteUrl || '',
|
|
115
|
+
name: i.uploadType === 'image' ? i.filename : i.name,
|
|
116
|
+
size: i.size || null,
|
|
117
|
+
mime_type: i.uploadType === 'image' ? i.mime : i.type
|
|
118
|
+
}));
|
|
119
|
+
onSendMessage(message?.trim(), attachments);
|
|
120
|
+
setMessage('');
|
|
121
|
+
setFileUpload([]);
|
|
122
|
+
}, [message, isStreaming, onSendMessage, stopStream, fileUpload]);
|
|
123
|
+
const handleUploadSuccess = useCallback(item => {
|
|
124
|
+
if (item.uploadType === 'image') {
|
|
125
|
+
setFileUpload(prev => {
|
|
126
|
+
const next = [...prev];
|
|
127
|
+
const fileIndex = next.findIndex(i => i.uploadType === 'image' && i?.path === item?.path);
|
|
128
|
+
if (fileIndex > -1) {
|
|
129
|
+
next[fileIndex] = {
|
|
130
|
+
...next[fileIndex],
|
|
131
|
+
...item
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
return next;
|
|
135
|
+
});
|
|
136
|
+
} else {
|
|
137
|
+
setFileUpload(prev => {
|
|
138
|
+
const next = [...prev];
|
|
139
|
+
const fileIndex = next.findIndex(i => i.uploadType === 'file' && i?.uri === item?.uri);
|
|
140
|
+
if (fileIndex > -1) {
|
|
141
|
+
next[fileIndex] = {
|
|
142
|
+
...next[fileIndex],
|
|
143
|
+
...item
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
return next;
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}, []);
|
|
150
|
+
const handleRemoveUploadItem = useCallback(item => {
|
|
151
|
+
if (item.uploadType === 'image') {
|
|
152
|
+
setFileUpload(prev => prev.filter(i => i.uploadType !== 'image' || i.path !== item.path));
|
|
153
|
+
} else {
|
|
154
|
+
setFileUpload(prev => prev.filter(i => i.uploadType !== 'file' || i.uri !== item.uri));
|
|
155
|
+
}
|
|
156
|
+
}, []);
|
|
157
|
+
const renderUploadItem = useCallback(item => {
|
|
158
|
+
switch (item.uploadType) {
|
|
159
|
+
case 'image':
|
|
160
|
+
return /*#__PURE__*/_jsx(UploadImageItem, {
|
|
161
|
+
item: item,
|
|
162
|
+
onRemove: handleRemoveUploadItem,
|
|
163
|
+
onSuccess: handleUploadSuccess
|
|
164
|
+
});
|
|
165
|
+
case 'file':
|
|
166
|
+
return /*#__PURE__*/_jsx(UploadFileItem, {
|
|
167
|
+
item: item,
|
|
168
|
+
onRemove: handleRemoveUploadItem,
|
|
169
|
+
onSuccess: handleUploadSuccess
|
|
170
|
+
});
|
|
171
|
+
default:
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
}, [handleRemoveUploadItem, handleUploadSuccess]);
|
|
175
|
+
const handlePressDocumentPicker = useCallback(async () => {
|
|
176
|
+
const listFiles = fileUpload.filter(i => i.uploadType === 'file');
|
|
177
|
+
if (listFiles.length >= MAX_FILE_UPLOAD) {
|
|
178
|
+
UIUtils.toast.open({
|
|
179
|
+
title: `Chỉ được gửi tối đa ${MAX_FILE_UPLOAD} tệp`
|
|
180
|
+
});
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
const newDocument = await openDocumentPicker({
|
|
184
|
+
type: types.pdf
|
|
185
|
+
});
|
|
186
|
+
const isUnique = listFiles.some(doc => doc.uploadType === 'file' && doc.uri !== newDocument?.uri);
|
|
187
|
+
if (!!newDocument && isUnique) {
|
|
188
|
+
setFileUpload(prev => {
|
|
189
|
+
const totalPrevSize = prev.reduce((acc, item) => acc + (item.size || 0), 0);
|
|
190
|
+
const totalNewSize = newDocument.size || 0;
|
|
191
|
+
if (totalPrevSize + totalNewSize > MAX_FILE_SIZE) {
|
|
192
|
+
UIUtils.toast.open({
|
|
193
|
+
title: `Tổng dung lượng tệp tải lên có kích thước quá lớn:\n ${shortenFileName(newDocument.name || '')},\n Vui lòng nén tệp hoặc tải lên nhiều lần để tiếp tục.`,
|
|
194
|
+
theme: 'danger'
|
|
195
|
+
});
|
|
196
|
+
return prev;
|
|
197
|
+
}
|
|
198
|
+
return [...prev, {
|
|
199
|
+
...newDocument,
|
|
200
|
+
uploadType: 'file'
|
|
201
|
+
}];
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
}, [fileUpload]);
|
|
205
|
+
return /*#__PURE__*/_jsxs(KContainer.View, {
|
|
206
|
+
style: styles.container,
|
|
207
|
+
children: [/*#__PURE__*/_jsx(KContainer.VisibleView, {
|
|
208
|
+
visible: fileUpload.length > 0,
|
|
209
|
+
children: /*#__PURE__*/_jsx(FlatList, {
|
|
210
|
+
data: fileUpload,
|
|
211
|
+
renderItem: ({
|
|
212
|
+
item
|
|
213
|
+
}) => renderUploadItem(item),
|
|
214
|
+
horizontal: true,
|
|
215
|
+
keyExtractor: item => item.uploadType === 'image' ? item.path : item.uri,
|
|
216
|
+
contentContainerStyle: styles.listUploadItem
|
|
217
|
+
})
|
|
218
|
+
}), /*#__PURE__*/_jsx(KInput.TextArea, {
|
|
219
|
+
paddingV: '0.25rem',
|
|
220
|
+
paddingH: '0.25rem',
|
|
221
|
+
placeholder: "B\u1EA1n mu\u1ED1n h\u1ECFi g\xEC h\xF4m nay?",
|
|
222
|
+
clearButtonMode: "hidden",
|
|
223
|
+
onChangeText: debouncedMessage,
|
|
224
|
+
value: message,
|
|
225
|
+
multiline: true,
|
|
226
|
+
style: styles.input,
|
|
227
|
+
blurOnSubmit: false,
|
|
228
|
+
textAlignVertical: "top"
|
|
229
|
+
}), /*#__PURE__*/_jsxs(KContainer.View, {
|
|
230
|
+
style: styles.actions,
|
|
231
|
+
children: [/*#__PURE__*/_jsxs(Menu, {
|
|
232
|
+
ref: menuRef,
|
|
233
|
+
renderer: Popover,
|
|
234
|
+
rendererProps: {
|
|
235
|
+
placement: 'top',
|
|
236
|
+
anchorStyle: {
|
|
237
|
+
display: 'none'
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
children: [/*#__PURE__*/_jsx(MenuTrigger, {
|
|
241
|
+
customStyles: {
|
|
242
|
+
TriggerTouchableComponent: TouchableWithoutFeedback
|
|
243
|
+
},
|
|
244
|
+
children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
245
|
+
name: "image-o",
|
|
246
|
+
size: 24,
|
|
247
|
+
color: KColors.gray.dark
|
|
248
|
+
})
|
|
249
|
+
}), /*#__PURE__*/_jsx(MenuOptions, {
|
|
250
|
+
optionsContainerStyle: styles.popover,
|
|
251
|
+
children: menuItems.map(i => /*#__PURE__*/_jsxs(MenuOption, {
|
|
252
|
+
onSelect: i.onPress,
|
|
253
|
+
style: styles.menuItem,
|
|
254
|
+
children: [/*#__PURE__*/_jsx(KLabel.Text, {
|
|
255
|
+
typo: "TextMdMedium",
|
|
256
|
+
children: i.label
|
|
257
|
+
}), /*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
258
|
+
name: i.icon
|
|
259
|
+
})]
|
|
260
|
+
}, i.icon))
|
|
261
|
+
})]
|
|
262
|
+
}), /*#__PURE__*/_jsx(KContainer.Touchable, {
|
|
263
|
+
onPress: handlePressDocumentPicker,
|
|
264
|
+
children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
|
|
265
|
+
name: "paperclip-o",
|
|
266
|
+
size: 24,
|
|
267
|
+
color: KColors.gray.dark
|
|
268
|
+
})
|
|
269
|
+
}), /*#__PURE__*/_jsx(KContainer.View, {
|
|
270
|
+
flex: true
|
|
271
|
+
}), /*#__PURE__*/_jsx(KButton.Solid, {
|
|
272
|
+
kind: "primary",
|
|
273
|
+
icon: {
|
|
274
|
+
vectorName: isStreaming ? 'square-b' : 'send-b',
|
|
275
|
+
size: 20,
|
|
276
|
+
tintColor: KColors.white
|
|
277
|
+
},
|
|
278
|
+
onPress: onPressSend,
|
|
279
|
+
br: "round",
|
|
280
|
+
disabled: isDisabledSend
|
|
281
|
+
})]
|
|
282
|
+
})]
|
|
283
|
+
});
|
|
284
|
+
};
|
|
285
|
+
export default ChatFooter;
|
|
286
|
+
const styles = StyleSheet.create({
|
|
287
|
+
container: {
|
|
288
|
+
paddingHorizontal: KSpacingValue['0.75rem'],
|
|
289
|
+
paddingVertical: KSpacingValue['0.5rem'],
|
|
290
|
+
gap: KSpacingValue['0.5rem'],
|
|
291
|
+
borderWidth: 1,
|
|
292
|
+
borderColor: KColors.hexToRgba(KColors.black, 0.15),
|
|
293
|
+
borderBottomWidth: 0,
|
|
294
|
+
borderTopLeftRadius: KSpacingValue['1.25rem'],
|
|
295
|
+
borderTopRightRadius: KSpacingValue['1.25rem']
|
|
296
|
+
},
|
|
297
|
+
actions: {
|
|
298
|
+
flexDirection: 'row',
|
|
299
|
+
alignItems: 'center',
|
|
300
|
+
gap: KSpacingValue['1rem']
|
|
301
|
+
},
|
|
302
|
+
sendButton: {
|
|
303
|
+
alignSelf: 'flex-end'
|
|
304
|
+
},
|
|
305
|
+
input: {
|
|
306
|
+
maxHeight: 100
|
|
307
|
+
},
|
|
308
|
+
popover: {
|
|
309
|
+
borderRadius: KRadiusValue['4x'],
|
|
310
|
+
backgroundColor: KColors.white,
|
|
311
|
+
width: 200
|
|
312
|
+
},
|
|
313
|
+
menuItem: {
|
|
314
|
+
paddingHorizontal: KSpacingValue['1rem'],
|
|
315
|
+
flexDirection: 'row',
|
|
316
|
+
alignItems: 'center',
|
|
317
|
+
paddingVertical: KSpacingValue['0.75rem'],
|
|
318
|
+
borderBottomWidth: 1,
|
|
319
|
+
borderBottomColor: KColors.border.normal,
|
|
320
|
+
gap: KSpacingValue['0.5rem'],
|
|
321
|
+
justifyContent: 'space-between'
|
|
322
|
+
},
|
|
323
|
+
listUploadItem: {
|
|
324
|
+
gap: KSpacingValue['0.75rem'],
|
|
325
|
+
paddingTop: 6
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["KButton","KColors","KContainer","KImage","KInput","KLabel","KRadiusValue","KSpacingValue","useCallback","useState","useRef","useMemo","FlatList","StyleSheet","TouchableWithoutFeedback","debounce","useSendMessage","useStreamMessageStore","Menu","MenuTrigger","MenuOption","MenuOptions","renderers","openCameraPicker","openDocumentPicker","openImageMultiplePicker","UploadImageItem","isSameFile","shortenFileName","types","UploadFileItem","UIUtils","jsx","_jsx","jsxs","_jsxs","Popover","MAX_FILE_UPLOAD","MAX_FILE_SIZE","MAX_IMAGE_SIZE","ChatFooter","menuRef","onSendMessage","stopStream","message","setMessage","isStreaming","state","fileUpload","setFileUpload","debouncedMessage","isDisabledSend","trim","length","some","i","remoteUrl","onPressImagePicker","filter","uploadType","toast","open","title","newImages","maxFiles","uniqueImages","img","sel","map","slice","prev","totalImages","totalPrevSize","reduce","acc","item","size","totalNewSize","filename","join","theme","onPressCameraPicker","newImage","menuItems","icon","onPress","label","onPressSend","attachments","type","source_type","data","name","mime_type","mime","handleUploadSuccess","next","fileIndex","findIndex","path","uri","handleRemoveUploadItem","renderUploadItem","onRemove","onSuccess","handlePressDocumentPicker","listFiles","newDocument","pdf","isUnique","doc","View","style","styles","container","children","VisibleView","visible","renderItem","horizontal","keyExtractor","contentContainerStyle","listUploadItem","TextArea","paddingV","paddingH","placeholder","clearButtonMode","onChangeText","value","multiline","input","blurOnSubmit","textAlignVertical","actions","ref","renderer","rendererProps","placement","anchorStyle","display","customStyles","TriggerTouchableComponent","VectorIcons","color","gray","dark","optionsContainerStyle","popover","onSelect","menuItem","Text","typo","Touchable","flex","Solid","kind","vectorName","tintColor","white","br","disabled","create","paddingHorizontal","paddingVertical","gap","borderWidth","borderColor","hexToRgba","black","borderBottomWidth","borderTopLeftRadius","borderTopRightRadius","flexDirection","alignItems","sendButton","alignSelf","maxHeight","borderRadius","backgroundColor","width","borderBottomColor","border","normal","justifyContent","paddingTop"],"sourceRoot":"../../../../../src","sources":["components/chat/footer/index.tsx"],"mappings":"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","ignoreList":[]}
|