refactor(editor): integrate ProblemEditorProvider for workspace editor

This commit is contained in:
cfngc4594 2025-03-20 14:44:17 +08:00
parent fae504b35d
commit 783b8415ea

View File

@ -1,6 +1,7 @@
import prisma from "@/lib/prisma"; import prisma from "@/lib/prisma";
import { notFound } from "next/navigation"; import { notFound } from "next/navigation";
import CodeEditor from "@/components/code-editor"; import { CodeEditor } from "@/components/problem-editor";
import { ProblemEditorProvider } from "@/providers/problem-editor-provider";
import WorkspaceEditorHeader from "@/components/features/playground/workspace/editor/components/header"; import WorkspaceEditorHeader from "@/components/features/playground/workspace/editor/components/header";
import WorkspaceEditorFooter from "@/components/features/playground/workspace/editor/components/footer"; import WorkspaceEditorFooter from "@/components/features/playground/workspace/editor/components/footer";
@ -13,17 +14,14 @@ export default async function WorkspaceEditorPage({
}: WorkspaceEditorProps) { }: WorkspaceEditorProps) {
const { id } = await params; const { id } = await params;
const [problem, editorLanguageConfigs, languageServerConfigs] = await Promise.all([ const [
problem,
editorLanguageConfigs,
languageServerConfigs,
] = await Promise.all([
prisma.problem.findUnique({ prisma.problem.findUnique({
where: { id }, where: { id },
select: { select: { templates: true },
templates: {
select: {
language: true,
template: true,
},
},
},
}), }),
prisma.editorLanguageConfig.findMany(), prisma.editorLanguageConfig.findMany(),
prisma.languageServerConfig.findMany(), prisma.languageServerConfig.findMany(),
@ -33,19 +31,20 @@ export default async function WorkspaceEditorPage({
return notFound(); return notFound();
} }
const commonProps = {
templates: problem.templates ?? [],
editorLanguageConfigs,
languageServerConfigs,
};
return ( return (
<> <ProblemEditorProvider
<WorkspaceEditorHeader {...commonProps} /> problemId={id}
<div className="flex-1"> templates={problem.templates ?? []}
<CodeEditor problemId={id} {...commonProps} /> editorLanguageConfigs={editorLanguageConfigs}
</div> languageServerConfigs={languageServerConfigs}
<WorkspaceEditorFooter /> >
</> <>
<WorkspaceEditorHeader />
<div className="flex-1">
<CodeEditor />
</div>
<WorkspaceEditorFooter />
</>
</ProblemEditorProvider>
); );
} }