diff --git a/src/components/settings/LanguageSelector.tsx b/src/components/settings/LanguageSelector.tsx index 0cd6c01..ae93b4e 100644 --- a/src/components/settings/LanguageSelector.tsx +++ b/src/components/settings/LanguageSelector.tsx @@ -61,15 +61,17 @@ export const LanguageSelector: React.FC = ({ }, [isOpen]); const filteredLanguages = useMemo( - () => LANGUAGES.filter((language) => - language.label.toLowerCase().includes(searchQuery.toLowerCase()), - ), - [searchQuery] + () => + LANGUAGES.filter((language) => + language.label.toLowerCase().includes(searchQuery.toLowerCase()), + ), + [searchQuery], ); - const selectedLanguageName = isParakeetModel - ? "Auto" - : LANGUAGES.find((lang) => lang.value === selectedLanguage)?.label || "Auto"; + const selectedLanguageName = isParakeetModel + ? "Auto" + : LANGUAGES.find((lang) => lang.value === selectedLanguage)?.label || + "Auto"; const handleLanguageSelect = async (languageCode: string) => { await updateSetting("selected_language", languageCode); @@ -103,12 +105,14 @@ export const LanguageSelector: React.FC = ({ return (
@@ -120,7 +124,9 @@ export const LanguageSelector: React.FC = ({ : "hover:bg-logo-primary/10 cursor-pointer hover:border-logo-primary" }`} onClick={handleToggle} - disabled={isUpdating("selected_language") || isLanguageSelectionDisabled} + disabled={ + isUpdating("selected_language") || isLanguageSelectionDisabled + } > {selectedLanguageName} = ({ - {isOpen && !isUpdating("selected_language") && !isLanguageSelectionDisabled && ( -
- {/* Search input */} -
- -
+ {isOpen && + !isUpdating("selected_language") && + !isLanguageSelectionDisabled && ( +
+ {/* Search input */} +
+ +
-
- {filteredLanguages.length === 0 ? ( -
- No languages found -
- ) : ( - filteredLanguages.map((language) => ( - - )) - )} +
+ {filteredLanguages.length === 0 ? ( +
+ No languages found +
+ ) : ( + filteredLanguages.map((language) => ( + + )) + )} +
-
- )} + )}
{isUpdating("selected_language") && ( diff --git a/src/components/settings/TranslateToEnglish.tsx b/src/components/settings/TranslateToEnglish.tsx index 00f4599..06e894e 100644 --- a/src/components/settings/TranslateToEnglish.tsx +++ b/src/components/settings/TranslateToEnglish.tsx @@ -1,29 +1,48 @@ -import React from "react"; +import React, { useEffect } from "react"; +import { listen } from "@tauri-apps/api/event"; import { ToggleSwitch } from "../ui/ToggleSwitch"; import { useSettings } from "../../hooks/useSettings"; +import { useModels } from "../../hooks/useModels"; interface TranslateToEnglishProps { descriptionMode?: "inline" | "tooltip"; grouped?: boolean; } -export const TranslateToEnglish: React.FC = React.memo(({ - descriptionMode = "tooltip", - grouped = false, -}) => { - const { getSetting, updateSetting, isUpdating } = useSettings(); +export const TranslateToEnglish: React.FC = React.memo( + ({ descriptionMode = "tooltip", grouped = false }) => { + const { getSetting, updateSetting, isUpdating } = useSettings(); + const { currentModel, loadCurrentModel } = useModels(); - const translateToEnglish = getSetting("translate_to_english") || false; + const translateToEnglish = getSetting("translate_to_english") || false; + const isParakeetModel = currentModel === "parakeet-tdt-0.6b-v3"; - return ( - updateSetting("translate_to_english", enabled)} - isUpdating={isUpdating("translate_to_english")} - label="Translate to English" - description="Automatically translate speech from other languages to English during transcription." - descriptionMode={descriptionMode} - grouped={grouped} - /> - ); -}); + // Listen for model state changes to update UI reactively + useEffect(() => { + const modelStateUnlisten = listen("model-state-changed", () => { + loadCurrentModel(); + }); + + return () => { + modelStateUnlisten.then((fn) => fn()); + }; + }, [loadCurrentModel]); + + return ( + updateSetting("translate_to_english", enabled)} + isUpdating={isUpdating("translate_to_english")} + disabled={isParakeetModel} + label="Translate to English" + description={ + isParakeetModel + ? "Translation is not supported by the Parakeet model." + : "Automatically translate speech from other languages to English during transcription." + } + descriptionMode={descriptionMode} + grouped={grouped} + /> + ); + }, +); diff --git a/src/components/ui/ToggleSwitch.tsx b/src/components/ui/ToggleSwitch.tsx index 95311ef..b40c6d1 100644 --- a/src/components/ui/ToggleSwitch.tsx +++ b/src/components/ui/ToggleSwitch.tsx @@ -28,8 +28,11 @@ export const ToggleSwitch: React.FC = ({ description={description} descriptionMode={descriptionMode} grouped={grouped} + disabled={disabled} > -