feat: add baidu suggest

This commit is contained in:
Gabe Yuan
2024-03-19 11:48:30 +08:00
parent bc4b4a2171
commit fbc70e43e3
4 changed files with 54 additions and 1 deletions

View File

@@ -0,0 +1,17 @@
import Box from "@mui/material/Box";
import Typography from "@mui/material/Typography";
export default function SugCont({ sugs }) {
return (
<Box>
{sugs.map(({ k, v }) => (
<Typography component="div" key={k}>
<Typography>{k}</Typography>
<ul style={{ margin: "0" }}>
<li>{v}</li>
</ul>
</Typography>
))}
</Box>
);
}

View File

@@ -6,10 +6,11 @@ import Stack from "@mui/material/Stack";
import { useI18n } from "../../hooks/I18n";
import { DEFAULT_TRANS_APIS, OPT_TRANS_BAIDU } from "../../config";
import { useEffect, useState } from "react";
import { apiTranslate, apiBaiduLangdetect } from "../../apis";
import { apiTranslate, apiBaiduLangdetect, apiBaiduSuggest } from "../../apis";
import { isValidWord } from "../../libs/utils";
import CopyBtn from "./CopyBtn";
import DictCont from "./DictCont";
import SugCont from "./SugCont";
export default function TranCont({
text,
@@ -26,6 +27,7 @@ export default function TranCont({
const [loading, setLoading] = useState(false);
const [error, setError] = useState("");
const [dictResult, setDictResult] = useState(null);
const [sugs, setSugs] = useState([]);
useEffect(() => {
(async () => {
@@ -34,6 +36,7 @@ export default function TranCont({
setTrText("");
setError("");
setDictResult(null);
setSugs([]);
// 互译
if (toLang !== toLang2 && toLang2 !== "none") {
@@ -45,6 +48,7 @@ export default function TranCont({
}
}
// 翻译
const apiSetting =
transApis[translator] || DEFAULT_TRANS_APIS[translator];
const tranRes = await apiTranslate({
@@ -72,6 +76,11 @@ export default function TranCont({
setDictResult(JSON.parse(dictRes[2].result));
}
}
// 建议
if (text.length < 20) {
setSugs(await apiBaiduSuggest(text));
}
} catch (err) {
setError(err.message);
} finally {
@@ -119,6 +128,7 @@ export default function TranCont({
{loading && <CircularProgress size={24} />}
{error && <Alert severity="error">{error}</Alert>}
{dictResult && <DictCont dictResult={dictResult} />}
{sugs.length > 0 && <SugCont sugs={sugs} />}
</>
);
}