Handle code copy events

This commit is contained in:
Luo Tim 2024-06-07 01:56:08 +08:00
parent 6df56742b4
commit 2395c6ad82

View File

@ -17,6 +17,7 @@ import { useSetState } from "@mantine/hooks";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { useRouter } from "@/views/router"; import { useRouter } from "@/views/router";
import remarkGfm from "remark-gfm"; import remarkGfm from "remark-gfm";
import APIUtil from "@/util/APIUtil";
(typeof global !== "undefined" ? global : window).Prism = Prism; (typeof global !== "undefined" ? global : window).Prism = Prism;
require("prismjs/components/prism-java"); require("prismjs/components/prism-java");
@ -70,7 +71,7 @@ function parseMetaData(string) {
const MessageMarkdown = observer((props: MessageMarkdownProps) => { const MessageMarkdown = observer((props: MessageMarkdownProps) => {
const { children, activeStep = false, messageDone } = props; const { children, activeStep = false, messageDone } = props;
const { chat } = useMst(); const { config, chat } = useMst();
const router = useRouter(); const router = useRouter();
const [steps, setSteps] = useState<Step[]>([]); const [steps, setSteps] = useState<Step[]>([]);
const tree = fromMarkdown(children); const tree = fromMarkdown(children);
@ -107,6 +108,13 @@ const MessageMarkdown = observer((props: MessageMarkdownProps) => {
}); });
}; };
const handleCodeCopy = (event) => {
const selection = window.getSelection()?.toString();
console.log("Copied: ", selection);
const e = 'manual_copy';
APIUtil.createEvent(config.getAppURL(), config.getUserKey(), {name: e, value: selection})
}
useEffect(() => { useEffect(() => {
let previousNode: any = null; let previousNode: any = null;
let chatmarkCount = 0; let chatmarkCount = 0;
@ -328,6 +336,7 @@ const MessageMarkdown = observer((props: MessageMarkdownProps) => {
whiteSpace: "pre", whiteSpace: "pre",
...props.style, ...props.style,
}} }}
onCopy={handleCodeCopy}
{...props} {...props}
> >
{tokens.map((line, i) => ( {tokens.map((line, i) => (