Prechádzať zdrojové kódy

feat: add restart core button

GyDi 2 rokov pred
rodič
commit
9a29c9abdd

+ 27 - 3
src/components/setting/mods/clash-core-viewer.tsx

@@ -5,8 +5,15 @@ import { useTranslation } from "react-i18next";
 import { useVerge } from "@/hooks/use-verge";
 import { useLockFn } from "ahooks";
 import { Lock } from "@mui/icons-material";
-import { IconButton, List, ListItemButton, ListItemText } from "@mui/material";
-import { changeClashCore } from "@/services/cmds";
+import {
+  Box,
+  Button,
+  IconButton,
+  List,
+  ListItemButton,
+  ListItemText,
+} from "@mui/material";
+import { changeClashCore, restartSidecar } from "@/services/cmds";
 import { closeAllConnections } from "@/services/api";
 import { grantPermission } from "@/services/cmds";
 import getSystem from "@/utils/get-system";
@@ -58,10 +65,27 @@ export const ClashCoreViewer = forwardRef<DialogRef>((props, ref) => {
     }
   });
 
+  const onRestart = useLockFn(async () => {
+    try {
+      await restartSidecar();
+      Notice.success(`Successfully restart core`, 1000);
+    } catch (err: any) {
+      Notice.error(err?.message || err.toString());
+    }
+  });
+
   return (
     <BaseDialog
       open={open}
-      title={t("Clash Core")}
+      title={
+        <Box display="flex" justifyContent="space-between">
+          {t("Clash Core")}
+
+          <Button variant="contained" size="small" onClick={onRestart}>
+            {t("Restart")}
+          </Button>
+        </Box>
+      }
       contentSx={{
         pb: 0,
         width: 320,

+ 1 - 0
src/locales/en.json

@@ -91,6 +91,7 @@
   "Clash Field": "Clash Field",
   "Runtime Config": "Runtime Config",
   "ReadOnly": "ReadOnly",
+  "Restart": "Restart",
 
   "Back": "Back",
   "Save": "Save",

+ 1 - 0
src/locales/zh.json

@@ -95,6 +95,7 @@
   "Clash Field": "Clash 字段",
   "Runtime Config": "运行配置",
   "ReadOnly": "只读",
+  "Restart": "重启内核",
 
   "Back": "返回",
   "Save": "保存",