diff --git a/src/app/(app)/problems/[id]/@workspace/@editor/page.tsx b/src/app/(app)/problems/[id]/@workspace/@editor/page.tsx index a1ca844..b687044 100644 --- a/src/app/(app)/problems/[id]/@workspace/@editor/page.tsx +++ b/src/app/(app)/problems/[id]/@workspace/@editor/page.tsx @@ -4,7 +4,7 @@ import WorkspaceEditorHeader from "@/components/features/playground/workspace/ed import WorkspaceEditorFooter from "@/components/features/playground/workspace/editor/components/footer"; interface WorkspaceEditorProps { - params: Promise<{ id: string }> + params: Promise<{ id: string }>; } export default async function WorkspaceEditorPage({ @@ -19,20 +19,25 @@ export default async function WorkspaceEditorPage({ select: { language: true, template: true, - } - } - } + }, + }, + }, }); + const editorLanguageConfigs = await prisma.editorLanguageConfig.findMany(); + const templates = problem?.templates ?? []; return ( <> - +
- ) + ); } diff --git a/src/components/features/playground/workspace/editor/components/header.tsx b/src/components/features/playground/workspace/editor/components/header.tsx index 39e0396..d531e30 100644 --- a/src/components/features/playground/workspace/editor/components/header.tsx +++ b/src/components/features/playground/workspace/editor/components/header.tsx @@ -1,19 +1,21 @@ import { cn } from "@/lib/utils"; -import { EditorLanguage } from "@prisma/client"; import CopyButton from "./copy-button"; import RedoButton from "./redo-button"; import UndoButton from "./undo-button"; import ResetButton from "./reset-button"; import FormatButton from "./format-button"; import LanguageSelector from "./language-selector"; +import { EditorLanguage, EditorLanguageConfig } from "@prisma/client"; interface WorkspaceEditorHeaderProps { templates: { language: EditorLanguage; template: string }[]; + editorLanguageConfigs: EditorLanguageConfig[]; className?: string; } export default function WorkspaceEditorHeader({ templates, + editorLanguageConfigs, className, ...props }: WorkspaceEditorHeaderProps) { @@ -24,7 +26,7 @@ export default function WorkspaceEditorHeader({ >
- +
diff --git a/src/components/features/playground/workspace/editor/components/language-selector.tsx b/src/components/features/playground/workspace/editor/components/language-selector.tsx index aedf180..1a6861d 100644 --- a/src/components/features/playground/workspace/editor/components/language-selector.tsx +++ b/src/components/features/playground/workspace/editor/components/language-selector.tsx @@ -8,14 +8,19 @@ import { SelectValue, } from "@/components/ui/select"; import { getPath } from "@/lib/utils"; -import { EditorLanguage } from "@prisma/client"; import { Skeleton } from "@/components/ui/skeleton"; import LanguageServerConfig from "@/config/language-server"; -import { EditorLanguageConfig } from "@/config/editor-language"; import { useCodeEditorStore } from "@/store/useCodeEditorStore"; import { EditorLanguageIcons } from "@/config/editor-language-icons"; +import { EditorLanguage, EditorLanguageConfig } from "@prisma/client"; -export default function LanguageSelector() { +interface LanguageSelectorProps { + editorLanguageConfigs: EditorLanguageConfig[]; +} + +export default function LanguageSelector({ + editorLanguageConfigs, +}: LanguageSelectorProps) { const { hydrated, language, setLanguage, setPath, setLspConfig } = useCodeEditorStore(); @@ -35,13 +40,13 @@ export default function LanguageSelector() { - {Object.values(EditorLanguageConfig).map((langConfig) => { - const Icon = EditorLanguageIcons[langConfig.id]; + {editorLanguageConfigs.map((config) => { + const Icon = EditorLanguageIcons[config.language]; return ( - + );