Add messages and events platform/language info

This commit is contained in:
Luo Tim 2024-06-16 00:11:18 +08:00
parent 1f86b7d72e
commit 4db92bf296
3 changed files with 31 additions and 34 deletions

View File

@ -32,7 +32,6 @@ const CommitButton = ({ code }) => {
};
const CodeCopyButton = ({ code }) => {
const {config} = useMst();
return (
<CopyButton value={code} timeout={2000}>
{({ copied, copy }) => (
@ -47,15 +46,14 @@ const CodeCopyButton = ({ code }) => {
);
};
const DiffButton = ({ code }) => {
const {config} = useMst();
const DiffButton = ({ code, language, platform }) => {
const handleClick = () => {
const e = 'show_diff';
messageUtil.sendMessage({
command: e,
content: code
});
APIUtil.createEvent({name: e, value: e})
APIUtil.createEvent({name: e, value: e, language: language, ide: platform})
};
return (
<IconButton label='View Diff' onClick={handleClick}>
@ -64,15 +62,14 @@ const DiffButton = ({ code }) => {
);
};
const CodeApplyButton = ({ code }) => {
const {config} = useMst();
const CodeApplyButton = ({ code, language, platform }) => {
const handleClick = () => {
const e = 'code_apply';
messageUtil.sendMessage({
command: e,
content: code
});
APIUtil.createEvent({name: e, value: e})
APIUtil.createEvent({name: e, value: e, language: language, ide: platform})
};
return (
<IconButton label='Insert Code' onClick={handleClick}>
@ -81,15 +78,14 @@ const CodeApplyButton = ({ code }) => {
);
};
const FileApplyButton = ({ code }) => {
const {config} = useMst();
const FileApplyButton = ({ code, language, platform }) => {
const handleClick = () => {
const e = 'code_file_apply';
messageUtil.sendMessage({
command: e,
content: code
});
APIUtil.createEvent({name: e, value: e})
APIUtil.createEvent({name: e, value: e, language: language, ide: platform})
};
return (
<IconButton label='Replace File' onClick={handleClick}>
@ -99,8 +95,7 @@ const FileApplyButton = ({ code }) => {
};
// Add a new button to create new file
const NewFileButton = ({ language,code }) => {
const {config} = useMst();
const NewFileButton = ({ code, language, platform }) => {
const handleClick = () => {
const e = 'code_new_file';
messageUtil.sendMessage({
@ -108,7 +103,7 @@ const NewFileButton = ({ language,code }) => {
language: language,
content: code
});
APIUtil.createEvent({name: e, value: e})
APIUtil.createEvent({name: e, value: e, language: language, ide: platform})
};
return (
<IconButton label='Create New File' onClick={handleClick}>
@ -118,7 +113,7 @@ const NewFileButton = ({ language,code }) => {
};
// Similar changes can be made to DiffButton, CodeApplyButton, FileApplyButton, and CodeCopyButton
const CodeButtons = ({ language, code }) => (
const CodeButtons = ({ platform, language, code }) => (
<Flex
gap="5px"
justify="flex-start"
@ -132,10 +127,10 @@ const CodeButtons = ({ language, code }) => (
? <CommitButton code={code} />
: (
<>
<DiffButton code={code} />
<CodeApplyButton code={code} />
<FileApplyButton code={code} />
<NewFileButton code={code} language={language} />
<DiffButton code={code} language={language} platform={platform} />
<CodeApplyButton code={code} language={language} platform={platform} />
<FileApplyButton code={code} language={language} platform={platform} />
<NewFileButton code={code} language={language} platform={platform} />
</>
)}
</Flex>

View File

@ -108,11 +108,11 @@ const MessageMarkdown = observer((props: MessageMarkdownProps) => {
});
};
const handleCodeCopy = (event) => {
const handleCodeCopy = (platform, language) => {
const selection = window.getSelection()?.toString();
console.log("Copied: ", selection);
const e = 'manual_copy';
APIUtil.createEvent({name: e, value: selection})
APIUtil.createEvent({name: e, value: selection, language: language, ide: platform})
}
useEffect(() => {
@ -259,18 +259,18 @@ const MessageMarkdown = observer((props: MessageMarkdownProps) => {
code({ node, inline, className, children, index, ...props }) {
const match = /language-(\w+)/.exec(className || "");
const value = String(children).replace(/\n$/, "");
let lanugage = match && match[1];
let language = match && match[1];
if (!lanugage) {
lanugage = "plaintext";
if (!language) {
language = "plaintext";
}
let wrapLongLines = false;
if (lanugage === "markdown" || lanugage === "text") {
if (language === "markdown" || language === "text") {
wrapLongLines = true;
}
if (lanugage === "step" || lanugage === "Step") {
if (language === "step" || language === "Step") {
const status =
activeStep &&
Number(index) === codes.length &&
@ -278,13 +278,13 @@ const MessageMarkdown = observer((props: MessageMarkdownProps) => {
? "running"
: "done";
return (
<Step language={lanugage} status={status} index={index}>
<Step language={language} status={status} index={index}>
{value}
</Step>
);
}
if (lanugage === "chatmark" || lanugage === "ChatMark") {
if (language === "chatmark" || language === "ChatMark") {
const chatmarkValue = chatmarkProps[`chatmark-${index}`];
return (
<ChatMark messageDone={messageDone} {...chatmarkValue}>
@ -293,17 +293,19 @@ const MessageMarkdown = observer((props: MessageMarkdownProps) => {
);
}
if ((lanugage === "yaml" || lanugage === "YAML") && props.hidden) {
if ((language === "yaml" || language === "YAML") && props.hidden) {
return <></>;
}
return !inline && lanugage ? (
const platform = process.env.platform
return !inline && language ? (
<div
style={{ position: "relative" }}
className={classes.codeOverride}
>
<LanguageCorner language={lanugage} />
<CodeButtons language={lanugage} code={value} />
<LanguageCorner language={language} />
<CodeButtons platform={platform} language={language} code={value} />
{/* <SyntaxHighlighter
{...props}
language={lanugage}
@ -317,7 +319,7 @@ const MessageMarkdown = observer((props: MessageMarkdownProps) => {
<Highlight
code={value}
theme={themes.okaidia}
language={lanugage}
language={language}
>
{({
className,
@ -336,7 +338,7 @@ const MessageMarkdown = observer((props: MessageMarkdownProps) => {
whiteSpace: "pre",
...props.style,
}}
onCopy={handleCodeCopy}
onCopy={() => handleCodeCopy(platform, language)}
{...props}
>
{tokens.map((line, i) => (

View File

@ -180,7 +180,7 @@ export const ChatStore = types
parent_hash: lastNonEmptyHash(),
model: chatModel,
});
APIUtil.createMessage({content: text, model: chatModel});
APIUtil.createMessage({content: text, model: chatModel, ide: process.env.platform});
};
const helpMessage = (originalMessage = false) => {