some minor modifications

This commit is contained in:
Gabe Yuan
2023-08-23 10:39:01 +08:00
parent 523b81090d
commit 4a3bf7e96c
3 changed files with 42 additions and 17 deletions

View File

@@ -1,18 +1,31 @@
import React from "react";
import React, { useState } from "react";
import ReactDOM from "react-dom/client";
import CircularProgress from "@mui/material/CircularProgress";
import Divider from "@mui/material/Divider";
import ReactMarkdown from "react-markdown";
import Paper from "@mui/material/Paper";
import Stack from "@mui/material/Stack";
import Button from "@mui/material/Button";
import { useFetch } from "./hooks/Fetch";
import { I18N, URL_RAW_PREFIX } from "./config";
function App() {
const [lang, setLang] = useState("zh");
const [data, loading, error] = useFetch(
`${URL_RAW_PREFIX}/${I18N?.["about_md"]?.["zh"]}`
`${URL_RAW_PREFIX}/${I18N?.["about_md"]?.[lang]}`
);
return (
<Paper sx={{ padding: 2, margin: 2 }}>
<Stack spacing={2} direction="row" justifyContent="flex-end">
<Button
variant="text"
onClick={() => {
setLang((pre) => (pre === "zh" ? "en" : "zh"));
}}
>
{lang === "zh" ? "ENGLISH" : "中文"}
</Button>
</Stack>
<Divider>{`KISS Translator v${process.env.REACT_APP_VERSION}`}</Divider>
{loading ? (
<center>

View File

@@ -6,6 +6,7 @@ import { CacheProvider } from "@emotion/react";
import { getSetting, getRules, matchRule, getFab } from "./libs";
import { Translator } from "./libs/translator";
import { trySyncAllSubRules } from "./libs/rules";
import { isGm } from "./libs/browser";
/**
* 入口函数
@@ -57,6 +58,7 @@ import { trySyncAllSubRules } from "./libs/rules";
);
// 注册菜单
if (isGm) {
GM.registerMenuCommand(
"Toggle Translate",
(event) => {
@@ -71,6 +73,7 @@ import { trySyncAllSubRules } from "./libs/rules";
},
"C"
);
}
// 同步订阅规则
trySyncAllSubRules(setting);

View File

@@ -638,6 +638,7 @@ function SubRulesEdit({ subrules }) {
const [inputText, setInputText] = useState("");
const [inputError, setInputError] = useState("");
const [showInput, setShowInput] = useState(false);
const [loading, setLoading] = useState(false);
const handleCancel = (e) => {
e.preventDefault();
@@ -661,6 +662,7 @@ function SubRulesEdit({ subrules }) {
}
try {
setLoading(true);
const rules = await syncSubRules(url);
if (rules.length === 0) {
throw new Error("empty rules");
@@ -671,6 +673,8 @@ function SubRulesEdit({ subrules }) {
} catch (err) {
console.log("[fetch rules]", err);
setInputError(i18n("error_fetch_url"));
} finally {
setLoading(false);
}
};
@@ -713,7 +717,12 @@ function SubRulesEdit({ subrules }) {
/>
<Stack direction="row" alignItems="center" spacing={2}>
<Button size="small" variant="contained" onClick={handleSave}>
<Button
size="small"
variant="contained"
onClick={handleSave}
disabled={loading}
>
{i18n("save")}
</Button>
<Button size="small" variant="outlined" onClick={handleCancel}>