import Box from "@mui/material/Box"; import Stack from "@mui/material/Stack"; import InputLabel from "@mui/material/InputLabel"; import TextField from "@mui/material/TextField"; import MenuItem from "@mui/material/MenuItem"; import FormControl from "@mui/material/FormControl"; import Select from "@mui/material/Select"; import { useSetting } from "../../hooks/Setting"; import { limitNumber, debounce } from "../../libs/utils"; import { useI18n } from "../../hooks/I18n"; import { UI_LANGS } from "../../config"; import { useMemo } from "react"; export default function Settings() { const i18n = useI18n(); const { setting, updateSetting } = useSetting(); const handleChange = useMemo( () => debounce((e) => { e.preventDefault(); let { name, value } = e.target; switch (name) { case "fetchLimit": value = limitNumber(value, 1, 100); break; case "fetchInterval": value = limitNumber(value, 0, 5000); break; case "minLength": value = limitNumber(value, 1, 100); break; case "maxLength": value = limitNumber(value, 100, 10000); break; default: } updateSetting({ [name]: value, }); }, 500), [updateSetting] ); if (!setting) { return; } const { uiLang, googleUrl, fetchLimit, fetchInterval, minLength, maxLength, openaiUrl, openaiKey, openaiModel, openaiPrompt, clearCache, } = setting; return ( {i18n("ui_lang")} {i18n("clear_cache")} ); }