2023-08-05 20:11:02 +08:00
|
|
|
import { Routes, Route, HashRouter } from "react-router-dom";
|
2023-07-20 13:45:41 +08:00
|
|
|
import About from "./About";
|
|
|
|
|
import Rules from "./Rules";
|
|
|
|
|
import Setting from "./Setting";
|
|
|
|
|
import Layout from "./Layout";
|
2023-07-31 15:08:51 +08:00
|
|
|
import SyncSetting from "./SyncSetting";
|
2023-08-30 18:05:37 +08:00
|
|
|
import { SettingProvider } from "../../hooks/Setting";
|
2023-08-05 20:11:02 +08:00
|
|
|
import ThemeProvider from "../../hooks/Theme";
|
2023-08-09 17:33:51 +08:00
|
|
|
import { useEffect, useState } from "react";
|
2023-08-30 18:05:37 +08:00
|
|
|
import { isGm } from "../../libs/client";
|
2023-08-09 17:33:51 +08:00
|
|
|
import { sleep } from "../../libs/utils";
|
2023-08-09 20:51:43 +08:00
|
|
|
import CircularProgress from "@mui/material/CircularProgress";
|
2023-08-26 14:31:13 +08:00
|
|
|
import { trySyncAll } from "../../libs/sync";
|
2023-08-20 23:30:08 +08:00
|
|
|
import { AlertProvider } from "../../hooks/Alert";
|
2023-08-29 11:53:02 +08:00
|
|
|
import Link from "@mui/material/Link";
|
|
|
|
|
import Divider from "@mui/material/Divider";
|
|
|
|
|
import Stack from "@mui/material/Stack";
|
2023-07-20 13:45:41 +08:00
|
|
|
|
|
|
|
|
export default function Options() {
|
2023-08-09 17:33:51 +08:00
|
|
|
const [error, setError] = useState(false);
|
|
|
|
|
const [ready, setReady] = useState(false);
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
(async () => {
|
2023-08-17 13:27:22 +08:00
|
|
|
if (isGm) {
|
|
|
|
|
// 等待GM注入
|
|
|
|
|
let i = 0;
|
|
|
|
|
for (;;) {
|
|
|
|
|
if (window.APP_NAME === process.env.REACT_APP_NAME) {
|
|
|
|
|
setReady(true);
|
|
|
|
|
break;
|
|
|
|
|
}
|
2023-08-09 17:33:51 +08:00
|
|
|
|
2023-08-17 13:27:22 +08:00
|
|
|
if (++i > 8) {
|
|
|
|
|
setError(true);
|
|
|
|
|
break;
|
|
|
|
|
}
|
2023-08-09 20:53:37 +08:00
|
|
|
|
2023-08-17 13:27:22 +08:00
|
|
|
await sleep(1000);
|
|
|
|
|
}
|
2023-08-09 17:33:51 +08:00
|
|
|
}
|
2023-08-17 13:27:22 +08:00
|
|
|
|
|
|
|
|
// 同步数据
|
2023-08-26 14:31:13 +08:00
|
|
|
trySyncAll();
|
2023-08-09 17:33:51 +08:00
|
|
|
})();
|
|
|
|
|
}, []);
|
|
|
|
|
|
|
|
|
|
if (error) {
|
|
|
|
|
return (
|
|
|
|
|
<center>
|
2023-08-29 11:53:02 +08:00
|
|
|
<Divider>
|
|
|
|
|
<Link
|
|
|
|
|
href={process.env.REACT_APP_HOMEPAGE}
|
|
|
|
|
>{`KISS Translator v${process.env.REACT_APP_VERSION}`}</Link>
|
|
|
|
|
</Divider>
|
2023-08-09 17:33:51 +08:00
|
|
|
<h2>
|
2023-08-29 11:53:02 +08:00
|
|
|
Please confirm whether to install or enable KISS Translator
|
2023-08-09 17:33:51 +08:00
|
|
|
GreaseMonkey script?
|
|
|
|
|
</h2>
|
2023-08-29 11:53:02 +08:00
|
|
|
<Stack spacing={2}>
|
|
|
|
|
<Link href={process.env.REACT_APP_USERSCRIPT_DOWNLOADURL}>
|
|
|
|
|
Install Userscript 1
|
|
|
|
|
</Link>
|
|
|
|
|
<Link href={process.env.REACT_APP_USERSCRIPT_DOWNLOADURL2}>
|
|
|
|
|
Install Userscript 2
|
|
|
|
|
</Link>
|
|
|
|
|
<Link href={process.env.REACT_APP_OPTIONSPAGE}>
|
|
|
|
|
Open Options Page 1
|
|
|
|
|
</Link>
|
|
|
|
|
<Link href={process.env.REACT_APP_OPTIONSPAGE2}>
|
|
|
|
|
Open Options Page 2
|
|
|
|
|
</Link>
|
|
|
|
|
</Stack>
|
2023-08-09 17:33:51 +08:00
|
|
|
</center>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isGm && !ready) {
|
|
|
|
|
return (
|
|
|
|
|
<center>
|
2023-08-29 11:53:02 +08:00
|
|
|
<Divider>
|
|
|
|
|
<Link
|
|
|
|
|
href={process.env.REACT_APP_HOMEPAGE}
|
|
|
|
|
>{`KISS Translator v${process.env.REACT_APP_VERSION}`}</Link>
|
|
|
|
|
</Divider>
|
2023-08-09 20:51:43 +08:00
|
|
|
<CircularProgress />
|
2023-08-09 17:33:51 +08:00
|
|
|
</center>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
2023-07-20 13:45:41 +08:00
|
|
|
return (
|
2023-08-30 18:05:37 +08:00
|
|
|
<SettingProvider>
|
2023-08-05 20:11:02 +08:00
|
|
|
<ThemeProvider>
|
2023-08-20 23:30:08 +08:00
|
|
|
<AlertProvider>
|
|
|
|
|
<HashRouter>
|
|
|
|
|
<Routes>
|
|
|
|
|
<Route path="/" element={<Layout />}>
|
|
|
|
|
<Route index element={<Setting />} />
|
|
|
|
|
<Route path="rules" element={<Rules />} />
|
|
|
|
|
<Route path="sync" element={<SyncSetting />} />
|
|
|
|
|
<Route path="about" element={<About />} />
|
|
|
|
|
</Route>
|
|
|
|
|
</Routes>
|
|
|
|
|
</HashRouter>
|
|
|
|
|
</AlertProvider>
|
2023-08-05 20:11:02 +08:00
|
|
|
</ThemeProvider>
|
2023-08-30 18:05:37 +08:00
|
|
|
</SettingProvider>
|
2023-07-20 13:45:41 +08:00
|
|
|
);
|
|
|
|
|
}
|