refactor(header, reset-button, useCodeEditorStore): remove unnecessary value prop and refactor related components

This commit is contained in:
cfngc4594 2025-03-05 10:18:06 +08:00
parent 3336a9f1d0
commit 353aff9b4d
3 changed files with 7 additions and 18 deletions

View File

@ -1,5 +1,3 @@
"use client";
import { cn } from "@/lib/utils";
import CopyButton from "./copy-button";
import RedoButton from "./redo-button";
@ -7,8 +5,6 @@ import UndoButton from "./undo-button";
import ResetButton from "./reset-button";
import FormatButton from "./format-button";
import LanguageSelector from "./language-selector";
import { useCodeEditorStore } from "@/store/useCodeEditorStore";
import { TEMP_DEFAULT_EDITOR_VALUE } from "@/config/problem/value";
interface WorkspaceEditorHeaderProps {
className?: string;
@ -18,8 +14,6 @@ export default function WorkspaceEditorHeader({
className,
...props
}: WorkspaceEditorHeaderProps) {
const { language } = useCodeEditorStore();
return (
<header
{...props}
@ -30,7 +24,7 @@ export default function WorkspaceEditorHeader({
<LanguageSelector />
</div>
<div className="flex items-center gap-x-2">
<ResetButton value={TEMP_DEFAULT_EDITOR_VALUE[language]} />
<ResetButton />
<UndoButton />
<RedoButton />
<FormatButton />

View File

@ -9,16 +9,10 @@ import {
import { RotateCcw } from "lucide-react";
import { Button } from "@/components/ui/button";
import { useCodeEditorStore } from "@/store/useCodeEditorStore";
import { TEMP_DEFAULT_EDITOR_VALUE } from "@/config/problem/value";
interface ResetButtonProps {
value: string;
}
export default function ResetButton({
value
}: ResetButtonProps) {
export default function ResetButton() {
const { editor, language } = useCodeEditorStore();
return (
<TooltipProvider delayDuration={0}>
<Tooltip>
@ -29,6 +23,7 @@ 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();

View File

@ -1,7 +1,7 @@
import { create } from "zustand";
import { getPath } from "@/lib/utils";
import type { editor } from "monaco-editor";
import { JudgeResult } from "@/config/judge";
import { JudgeResultMetadata } from "@/types/judge";
import { EditorLanguage } from "@/types/editor-language";
import LanguageServerConfig from "@/config/language-server";
import { createJSONStorage, persist } from "zustand/middleware";
@ -18,7 +18,7 @@ interface CodeEditorState {
isLspEnabled: boolean;
editorConfig: editor.IEditorConstructionOptions;
editor: editor.IStandaloneCodeEditor | null;
result: JudgeResult | null;
result: JudgeResultMetadata | null;
setHydrated: (value: boolean) => void;
setLanguage: (language: EditorLanguage) => void;
setPath: (path: string) => void;
@ -27,7 +27,7 @@ interface CodeEditorState {
setIsLspEnabled: (enabled: boolean) => void;
setEditorConfig: (editorConfig: editor.IEditorConstructionOptions) => void;
setEditor: (editor: editor.IStandaloneCodeEditor) => void;
setResult: (result: JudgeResult) => void;
setResult: (result: JudgeResultMetadata) => void;
}
export const useCodeEditorStore = create<CodeEditorState>()(