From 556fde65462a73e27dbd3d863b7c1606078953ad Mon Sep 17 00:00:00 2001 From: cfngc4594 Date: Sun, 9 Mar 2025 11:09:14 +0800 Subject: [PATCH] feat(editor): use problem templates in ResetButton and disable when empty --- .../editor/components/reset-button.tsx | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/features/playground/workspace/editor/components/reset-button.tsx b/src/features/playground/workspace/editor/components/reset-button.tsx index 9c09037..0f754dd 100644 --- a/src/features/playground/workspace/editor/components/reset-button.tsx +++ b/src/features/playground/workspace/editor/components/reset-button.tsx @@ -8,11 +8,20 @@ import { } from "@/components/ui/tooltip"; import { RotateCcw } from "lucide-react"; import { Button } from "@/components/ui/button"; +import { EditorLanguage } from "@prisma/client"; import { useCodeEditorStore } from "@/store/useCodeEditorStore"; -import { TEMP_DEFAULT_EDITOR_VALUE } from "@/config/problem/value"; -export default function ResetButton() { +interface ResetButtonProps { + templates: { language: EditorLanguage; template: string }[]; +} + +export default function ResetButton({ + templates, +}: ResetButtonProps) { const { editor, language } = useCodeEditorStore(); + + const currentTemplate = templates.find((t) => t.language === language)?.template ?? ""; + return ( @@ -23,20 +32,20 @@ export default function ResetButton() { aria-label="Reset Code" onClick={() => { if (editor) { - const value = TEMP_DEFAULT_EDITOR_VALUE[language]; const model = editor.getModel(); if (model) { const fullRange = model.getFullModelRange(); editor.executeEdits("reset-code", [ { range: fullRange, - text: value, + text: currentTemplate, forceMoveMarkers: true, }, ]); } } }} + disabled={templates.length === 0} className="h-6 w-6 px-1.5 py-0.5 border-none hover:bg-muted" >