diff --git a/src-ui/logics/configs/config_page_setter/useSettingsLogics.js b/src-ui/logics/configs/config_page_setter/useSettingsLogics.js index 58702b06..35fe4152 100644 --- a/src-ui/logics/configs/config_page_setter/useSettingsLogics.js +++ b/src-ui/logics/configs/config_page_setter/useSettingsLogics.js @@ -309,6 +309,39 @@ export const useSliderLogic = ({ }; }; + +export const useSaveButtonLogic = ({ + variable, + state, + setFunction, + deleteFunction +}) => { + const [input_value, setInputValue] = useState(variable); + + const onChangeFunction = (value) => { + setInputValue(value); + }; + + const saveFunction = () => { + if (input_value === "" || input_value === null) { + return deleteFunction(); + } + setFunction(input_value); + }; + + useEffect(() => { + if (state === "pending") return; + setInputValue(variable); + + }, [variable]); + + return { + variable: input_value, + onChangeFunction: onChangeFunction, + saveFunction: saveFunction, + }; +}; + const createMarks = (min, max, marks_step = 1, labelFormatter = (value) => value) => { const marks = []; let variable = min; diff --git a/src-ui/logics/configs/index.js b/src-ui/logics/configs/index.js index 1b20c3c6..42676fdd 100644 --- a/src-ui/logics/configs/index.js +++ b/src-ui/logics/configs/index.js @@ -18,4 +18,5 @@ export { useSettingBoxScrollPosition } from "./config_page_setter/_aux/useSettin export { useSliderLogic, + useSaveButtonLogic, } from "./config_page_setter/useSettingsLogics.js"; \ No newline at end of file diff --git a/src-ui/views/app/config_page/setting_section/setting_box/translation/Translation.jsx b/src-ui/views/app/config_page/setting_section/setting_box/translation/Translation.jsx index 28b0f9f2..b7bdf99f 100644 --- a/src-ui/views/app/config_page/setting_section/setting_box/translation/Translation.jsx +++ b/src-ui/views/app/config_page/setting_section/setting_box/translation/Translation.jsx @@ -6,6 +6,8 @@ import { useStore_IsBreakPoint } from "@store"; import { useTranslation, + + useSaveButtonLogic, } from "@logics_configs"; import { @@ -32,7 +34,7 @@ export const Translation = () => { - + @@ -217,26 +219,16 @@ const TranslationComputeDevice_Box = () => { ); }; -const DeeplAuthKey_Box = () => { +const DeepLAuthKey_Box = () => { const { t } = useI18n(); const { currentDeepLAuthKey, setDeepLAuthKey, deleteDeepLAuthKey } = useTranslation(); - const [input_value, seInputValue] = useState(currentDeepLAuthKey.data); - const onChangeFunction = (value) => { - seInputValue(value); - }; - - const saveFunction = () => { - if (input_value === "" || input_value === null) { - return deleteDeepLAuthKey(); - }; - setDeepLAuthKey(input_value); - }; - - useEffect(() => { - if (currentDeepLAuthKey.state === "pending") return; - seInputValue(currentDeepLAuthKey.data); - }, [currentDeepLAuthKey]); + const { variable, onChangeFunction, saveFunction } = useSaveButtonLogic({ + variable: currentDeepLAuthKey.data, + state: currentDeepLAuthKey.state, + setFunction: setDeepLAuthKey, + deleteFunction: deleteDeepLAuthKey, + }); return ( <> @@ -248,7 +240,7 @@ const DeeplAuthKey_Box = () => { )} webpage_url={deepl_auth_key_url} open_webpage_label={t("config_page.translation.deepl_auth_key.open_auth_key_webpage")} - variable={input_value} + variable={variable} state={currentDeepLAuthKey.state} onChangeFunction={onChangeFunction} saveFunction={saveFunction} @@ -260,37 +252,22 @@ const DeeplAuthKey_Box = () => { const PlamoAuthKey_Box = () => { const { t } = useI18n(); const { currentPlamoAuthKey, setPlamoAuthKey, deletePlamoAuthKey } = useTranslation(); - const [input_value, seInputValue] = useState(currentPlamoAuthKey.data); - const onChangeFunction = (value) => { - seInputValue(value); - }; - - const saveFunction = () => { - if (input_value === "" || input_value === null) { - return deletePlamoAuthKey(); - }; - setPlamoAuthKey(input_value); - }; - - useEffect(() => { - if (currentPlamoAuthKey.state === "pending") return; - seInputValue(currentPlamoAuthKey.data); - }, [currentPlamoAuthKey]); + const { variable, onChangeFunction, saveFunction } = useSaveButtonLogic({ + variable: currentPlamoAuthKey.data, + state: currentPlamoAuthKey.state, + setFunction: setPlamoAuthKey, + deleteFunction: deletePlamoAuthKey, + }); return ( <> { { const GeminiAuthKey_Box = () => { const { t } = useI18n(); const { currentGeminiAuthKey, setGeminiAuthKey, deleteGeminiAuthKey } = useTranslation(); - const [input_value, seInputValue] = useState(currentGeminiAuthKey.data); - const onChangeFunction = (value) => { - seInputValue(value); - }; - - const saveFunction = () => { - if (input_value === "" || input_value === null) { - return deleteGeminiAuthKey(); - }; - setGeminiAuthKey(input_value); - }; - - useEffect(() => { - if (currentGeminiAuthKey.state === "pending") return; - seInputValue(currentGeminiAuthKey.data); - }, [currentGeminiAuthKey]); + const { variable, onChangeFunction, saveFunction } = useSaveButtonLogic({ + variable: currentGeminiAuthKey.data, + state: currentGeminiAuthKey.state, + setFunction: setGeminiAuthKey, + deleteFunction: deleteGeminiAuthKey, + }); return ( <> { { const OpenAIAuthKey_Box = () => { const { t } = useI18n(); const { currentOpenAIAuthKey, setOpenAIAuthKey, deleteOpenAIAuthKey } = useTranslation(); - const [input_value, seInputValue] = useState(currentOpenAIAuthKey.data); - const onChangeFunction = (value) => { - seInputValue(value); - }; - - const saveFunction = () => { - if (input_value === "" || input_value === null) { - return deleteOpenAIAuthKey(); - }; - setOpenAIAuthKey(input_value); - }; - - useEffect(() => { - if (currentOpenAIAuthKey.state === "pending") return; - seInputValue(currentOpenAIAuthKey.data); - }, [currentOpenAIAuthKey]); + const { variable, onChangeFunction, saveFunction } = useSaveButtonLogic({ + variable: currentOpenAIAuthKey.data, + state: currentOpenAIAuthKey.state, + setFunction: setOpenAIAuthKey, + deleteFunction: deleteOpenAIAuthKey, + }); return ( <> {