diff --git a/src/util/APIUtil.ts b/src/util/APIUtil.ts index 770fa9d..75f61e4 100644 --- a/src/util/APIUtil.ts +++ b/src/util/APIUtil.ts @@ -85,6 +85,15 @@ class APIUtil { }) } + updateCurrentMessageId() { + this.currentMessageId = `msg-${uuidv4()}`; + return this.currentMessageId; + } + + getCurrentMessageId() { + return this.currentMessageId; + } + async createMessage(message: MessageData, messageId?: string) { // 如果 messageId 为空,则使用 uuid 生成新的 ID var newMessageId = messageId || `msg-${uuidv4()}`; diff --git a/src/views/components/ChatMark/index.tsx b/src/views/components/ChatMark/index.tsx index 916585e..8694b53 100644 --- a/src/views/components/ChatMark/index.tsx +++ b/src/views/components/ChatMark/index.tsx @@ -101,7 +101,7 @@ const ChatMark = ({ value: JSON.stringify(formData), ide: platform, language: info?.extension || info?.path?.split('.').pop() - })) + })); }; const handleCancel = () => { @@ -112,7 +112,7 @@ const ChatMark = ({ name: "cancel", ide: platform, language: info?.extension || info?.path?.split('.').pop() - })) + })); }; const handleButtonClick = ({ event, index }) => { diff --git a/src/views/components/MessageMarkdown/CodeButtons.tsx b/src/views/components/MessageMarkdown/CodeButtons.tsx index b8f4c18..f72d2db 100644 --- a/src/views/components/MessageMarkdown/CodeButtons.tsx +++ b/src/views/components/MessageMarkdown/CodeButtons.tsx @@ -21,7 +21,10 @@ const CodeCopyButton = ({ code, language, platform }) => { {({ copied, copy }) => ( { copy(); - APIUtil.createEvent({name: 'copy', value: 'copy', language: language, ide: platform}) + APIUtil.createEvent( + {name: 'copy', value: code, language: language, ide: platform}, + APIUtil.getCurrentMessageId() + ); }}> {copied ? : } @@ -48,7 +51,10 @@ const DiffButton = ({ code, language, platform }) => { command: e, content: selectedCode }); - APIUtil.createEvent({name: e, value: e, language: language, ide: platform}); + APIUtil.createEvent( + {name: e, value: selectedCode, language: language, ide: platform}, + APIUtil.getCurrentMessageId() + ); }; return ( @@ -65,7 +71,10 @@ const EditApplyButton = ({ code, language, platform }) => { content: code, autoedit: true }); - APIUtil.createEvent({name: "edit_apply", value: "edit_apply", language: language, ide: platform}); + APIUtil.createEvent( + {name: "edit_apply", value: code, language: language, ide: platform}, + APIUtil.getCurrentMessageId() + ); }; return ( @@ -81,7 +90,10 @@ const CodeApplyButton = ({ code, language, platform }) => { command: e, content: code }); - APIUtil.createEvent({name: e, value: e, language: language, ide: platform}); + APIUtil.createEvent( + {name: e, value: code, language: language, ide: platform}, + APIUtil.getCurrentMessageId() + ); }; return ( @@ -97,7 +109,10 @@ const FileApplyButton = ({ code, language, platform }) => { command: e, content: code }); - APIUtil.createEvent({name: e, value: e, language: language, ide: platform}); + APIUtil.createEvent( + {name: e, value: code, language: language, ide: platform}, + APIUtil.getCurrentMessageId() + ); }; return ( @@ -115,7 +130,10 @@ const NewFileButton = ({ code, language, platform }) => { language: language, content: code }); - APIUtil.createEvent({name: e, value: e, language: language, ide: platform}); + APIUtil.createEvent( + {name: e, value: code, language: language, ide: platform}, + APIUtil.getCurrentMessageId() + ); }; return ( diff --git a/src/views/components/MessageMarkdown/index.tsx b/src/views/components/MessageMarkdown/index.tsx index ad621a4..67e4c1a 100644 --- a/src/views/components/MessageMarkdown/index.tsx +++ b/src/views/components/MessageMarkdown/index.tsx @@ -113,8 +113,11 @@ const MessageMarkdown = observer((props: MessageMarkdownProps) => { const selection = window.getSelection()?.toString(); console.log("Copied: ", selection); const e = 'manual_copy'; - APIUtil.createEvent({name: e, value: selection, language: language, ide: platform}) - } + APIUtil.createEvent( + {name: e, value: selection, language: language, ide: platform}, + APIUtil.getCurrentMessageId() + ); + }; useEffect(() => { let previousNode: any = null; diff --git a/src/views/stores/ChatStore.ts b/src/views/stores/ChatStore.ts index 75ec526..09af7dd 100644 --- a/src/views/stores/ChatStore.ts +++ b/src/views/stores/ChatStore.ts @@ -7,6 +7,7 @@ import i18next from "i18next"; import APIUtil from "@/util/APIUtil"; import IDEServiceUtil from "@/util/IDEServiceUtil"; import { ASSISTANT_DISPLAY_NAME } from "@/util/constants"; +import { v4 as uuidv4 } from 'uuid'; interface Context { content: string; @@ -186,13 +187,14 @@ export const ChatStore = types const supportedCommands = new Set(rootStore.input.commandMenus.map(x => x.name)); let command = text.startsWith("/") ? text.split(" ", 1)[0] : null; command = command && supportedCommands.has(command.slice(1)) ? command : null; + IDEServiceUtil.getCurrentFileInfo().then(info => APIUtil.createMessage({ content: text, command: command, model: chatModel, language: info?.extension || info?.path?.split(".").pop(), ide: platform === "idea" ? "intellij" : platform - })); + }, APIUtil.updateCurrentMessageId())); }; const helpMessage = (originalMessage = false) => { @@ -392,6 +394,13 @@ Thinking... } else { self.messages[messagesLength - 1].message = message; } + + // send event to server + const platform = process.env.platform === "idea" ? "intellij" : process.env.platform; + APIUtil.createEvent( + {name: 'stopGenerating', value: message, language: "unknow", ide: platform}, + APIUtil.getCurrentMessageId() + ); }, newMessage: (message: IMessage) => {