refactor(language-selector): update to use useProblemEditor hook

This commit is contained in:
cfngc4594 2025-03-20 13:25:47 +08:00
parent a44826990c
commit 6bd3a44d8d

View File

@ -7,41 +7,14 @@ import {
SelectTrigger,
SelectValue,
} from "@/components/ui/select";
import { getPath } from "@/lib/utils";
import { Skeleton } from "@/components/ui/skeleton";
import { useCodeEditorStore } from "@/store/useCodeEditorStore";
import { useProblemEditor } from "@/hooks/use-problem-editor";
import { EditorLanguageIcons } from "@/config/editor-language-icons";
import { EditorLanguage, EditorLanguageConfig, LanguageServerConfig } from "@prisma/client";
interface LanguageSelectorProps {
editorLanguageConfigs: EditorLanguageConfig[];
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);
};
export default function LanguageSelector() {
const { currentLang, changeLang, editorLanguageConfigs } = useProblemEditor();
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">
<SelectValue placeholder="Select language" />
</SelectTrigger>