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 (
-
+
- {langConfig.label}
+ {config.label}
);