2024-11-12 08:01:37 +00:00
|
|
|
"use client";
|
|
|
|
|
2024-11-12 08:10:16 +00:00
|
|
|
import { useState } from "react";
|
2024-11-12 08:36:41 +00:00
|
|
|
import * as actions from "@/actions";
|
2024-11-12 08:01:37 +00:00
|
|
|
import { Snippet } from "@prisma/client";
|
2024-11-12 12:27:44 +00:00
|
|
|
import { DiffEditor, Editor } from "@monaco-editor/react";
|
2024-11-12 08:01:37 +00:00
|
|
|
|
|
|
|
interface SnippetEditFormProps {
|
|
|
|
snippet: Snippet;
|
|
|
|
}
|
|
|
|
|
|
|
|
export default function SnippetEditForm({ snippet }: SnippetEditFormProps) {
|
2024-11-12 08:10:16 +00:00
|
|
|
const [code, setCode] = useState(snippet.code);
|
2024-11-12 12:27:44 +00:00
|
|
|
const [originalCode, setOriginalCode] = useState(snippet.code);
|
|
|
|
const [modifiedCode, setModifiedCode] = useState(snippet.code);
|
2024-11-12 08:10:16 +00:00
|
|
|
|
|
|
|
const handleEditorChange = (value: string = "") => {
|
|
|
|
setCode(value);
|
|
|
|
};
|
|
|
|
|
2024-11-12 08:36:41 +00:00
|
|
|
const editSnippetAction = actions.editSnippet.bind(null, snippet.id, code);
|
|
|
|
|
2024-11-12 12:27:44 +00:00
|
|
|
const handleAskAI = () => {
|
|
|
|
setModifiedCode("AI generated code");
|
|
|
|
};
|
|
|
|
|
2024-11-12 08:06:43 +00:00
|
|
|
return (
|
2024-11-12 12:27:44 +00:00
|
|
|
<div className="flex flex-col">
|
|
|
|
{/* <Editor
|
2024-11-12 08:06:43 +00:00
|
|
|
height="40vh"
|
|
|
|
theme="vs-light"
|
|
|
|
language="c"
|
|
|
|
defaultValue={snippet.code}
|
|
|
|
options={{ minimap: { enabled: false } }}
|
2024-11-12 08:10:16 +00:00
|
|
|
onChange={handleEditorChange}
|
2024-11-12 12:27:44 +00:00
|
|
|
/> */}
|
|
|
|
<DiffEditor
|
|
|
|
height="40vh"
|
|
|
|
theme="vs-light"
|
|
|
|
language="c"
|
|
|
|
original={originalCode}
|
|
|
|
modified={modifiedCode}
|
|
|
|
options={{ minimap: { enabled: false } }}
|
2024-11-12 08:06:43 +00:00
|
|
|
/>
|
2024-11-12 12:27:44 +00:00
|
|
|
<div className="flex items-center justify-end gap-4">
|
|
|
|
<button
|
|
|
|
type="submit"
|
|
|
|
className="p-2 border rounded"
|
|
|
|
onClick={handleAskAI}
|
|
|
|
>
|
|
|
|
Ask AI
|
|
|
|
</button>
|
|
|
|
<button
|
|
|
|
type="submit"
|
|
|
|
className="p-2 border rounded"
|
|
|
|
onClick={editSnippetAction}
|
|
|
|
>
|
2024-11-12 08:36:41 +00:00
|
|
|
Save
|
|
|
|
</button>
|
2024-11-12 12:27:44 +00:00
|
|
|
</div>
|
2024-11-12 08:06:43 +00:00
|
|
|
</div>
|
|
|
|
);
|
2024-11-12 08:01:37 +00:00
|
|
|
}
|