import Stack from "@mui/material/Stack"; import TextField from "@mui/material/TextField"; import Button from "@mui/material/Button"; import CircularProgress from "@mui/material/CircularProgress"; import { OPT_TRANS_ALL, OPT_TRANS_MICROSOFT, OPT_TRANS_OPENAI, OPT_TRANS_CUSTOMIZE, URL_KISS_PROXY, } from "../../config"; import { useState } from "react"; import { useI18n } from "../../hooks/I18n"; import Typography from "@mui/material/Typography"; import Accordion from "@mui/material/Accordion"; import AccordionSummary from "@mui/material/AccordionSummary"; import AccordionDetails from "@mui/material/AccordionDetails"; import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; import Alert from "@mui/material/Alert"; import { useAlert } from "../../hooks/Alert"; import { useApi } from "../../hooks/Api"; import { apiTranslate } from "../../apis"; import Box from "@mui/material/Box"; import Link from "@mui/material/Link"; function TestButton({ translator, api }) { const i18n = useI18n(); const alert = useAlert(); const [loading, setLoading] = useState(false); const handleApiTest = async () => { try { setLoading(true); const [text] = await apiTranslate({ translator, text: "hello world", fromLang: "en", toLang: "zh-CN", apiSetting: { ...api, useCache: false }, }); if (!text) { throw new Error("empty reault"); } alert.success(i18n("test_success")); } catch (err) { alert.error(`${i18n("test_failed")}: ${err.message}`); } finally { setLoading(false); } }; if (loading) { return ; } return ( ); } function ApiFields({ translator }) { const i18n = useI18n(); const { api, updateApi, resetApi } = useApi(translator); const { url = "", key = "", model = "", prompt = "" } = api; const handleChange = (e) => { const { name, value } = e.target; updateApi({ [name]: value, }); }; return ( {translator !== OPT_TRANS_MICROSOFT && ( <> )} {translator === OPT_TRANS_OPENAI && ( <> )} {translator !== OPT_TRANS_MICROSOFT && ( )} {translator === OPT_TRANS_CUSTOMIZE && (
{i18n("custom_api_help")}
)}
); } function ApiAccordion({ translator }) { const [expanded, setExpanded] = useState(false); const handleChange = (e) => { setExpanded((pre) => !pre); }; return ( }> {translator} {expanded && } ); } export default function Apis() { const i18n = useI18n(); return ( {i18n("about_api_proxy")} {OPT_TRANS_ALL.map((translator) => ( ))} ); }