mirror of
https://github.com/massbug/judge4c.git
synced 2025-05-18 07:16:34 +00:00
refactor(language-selector): update to use useProblemEditor hook
This commit is contained in:
parent
a44826990c
commit
6bd3a44d8d
@ -7,41 +7,14 @@ import {
|
|||||||
SelectTrigger,
|
SelectTrigger,
|
||||||
SelectValue,
|
SelectValue,
|
||||||
} from "@/components/ui/select";
|
} from "@/components/ui/select";
|
||||||
import { getPath } from "@/lib/utils";
|
import { useProblemEditor } from "@/hooks/use-problem-editor";
|
||||||
import { Skeleton } from "@/components/ui/skeleton";
|
|
||||||
import { useCodeEditorStore } from "@/store/useCodeEditorStore";
|
|
||||||
import { EditorLanguageIcons } from "@/config/editor-language-icons";
|
import { EditorLanguageIcons } from "@/config/editor-language-icons";
|
||||||
import { EditorLanguage, EditorLanguageConfig, LanguageServerConfig } from "@prisma/client";
|
|
||||||
|
|
||||||
interface LanguageSelectorProps {
|
export default function LanguageSelector() {
|
||||||
editorLanguageConfigs: EditorLanguageConfig[];
|
const { currentLang, changeLang, editorLanguageConfigs } = useProblemEditor();
|
||||||
languageServerConfigs: LanguageServerConfig[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export default function LanguageSelector({
|
|
||||||
editorLanguageConfigs,
|
|
||||||
languageServerConfigs,
|
|
||||||
}: LanguageSelectorProps) {
|
|
||||||
const { hydrated, language, setLanguage, setPath, setLspConfig } = useCodeEditorStore();
|
|
||||||
|
|
||||||
if (!hydrated) {
|
|
||||||
return <Skeleton className="h-6 w-16 rounded-2xl" />;
|
|
||||||
}
|
|
||||||
|
|
||||||
const handleValueChange = (lang: EditorLanguage) => {
|
|
||||||
setLanguage(lang);
|
|
||||||
const selectedEditorLanguageConfig = editorLanguageConfigs.find(
|
|
||||||
(config) => config.language === lang
|
|
||||||
);
|
|
||||||
const selectedLanguageServerConfig = languageServerConfigs.find(
|
|
||||||
(config) => config.language === lang
|
|
||||||
);
|
|
||||||
setPath(selectedEditorLanguageConfig ? getPath(selectedEditorLanguageConfig) : "");
|
|
||||||
setLspConfig(selectedLanguageServerConfig || null);
|
|
||||||
};
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Select value={language} onValueChange={handleValueChange}>
|
<Select value={currentLang} onValueChange={changeLang}>
|
||||||
<SelectTrigger className="h-6 px-1.5 py-0.5 border-none shadow-none focus:ring-0 hover:bg-muted [&>span]:flex [&>span]:items-center [&>span]:gap-2 [&>span_svg]:shrink-0 [&>span_svg]:text-muted-foreground/80">
|
<SelectTrigger className="h-6 px-1.5 py-0.5 border-none shadow-none focus:ring-0 hover:bg-muted [&>span]:flex [&>span]:items-center [&>span]:gap-2 [&>span_svg]:shrink-0 [&>span_svg]:text-muted-foreground/80">
|
||||||
<SelectValue placeholder="Select language" />
|
<SelectValue placeholder="Select language" />
|
||||||
</SelectTrigger>
|
</SelectTrigger>
|
||||||
|
Loading…
Reference in New Issue
Block a user