mirror of
https://github.com/clash-verge-rev/clash-verge-rev
synced 2025-05-05 07:03:45 +08:00
feat: Support Custom Start Page
This commit is contained in:
parent
4bb88d8e44
commit
c72479c4d6
@ -25,6 +25,8 @@ pub struct IVerge {
|
|||||||
/// copy env type
|
/// copy env type
|
||||||
pub env_type: Option<String>,
|
pub env_type: Option<String>,
|
||||||
|
|
||||||
|
/// start page
|
||||||
|
pub start_page: Option<String>,
|
||||||
/// startup script path
|
/// startup script path
|
||||||
pub startup_script: Option<String>,
|
pub startup_script: Option<String>,
|
||||||
|
|
||||||
@ -153,6 +155,7 @@ impl IVerge {
|
|||||||
env_type: Some("bash".into()),
|
env_type: Some("bash".into()),
|
||||||
#[cfg(target_os = "windows")]
|
#[cfg(target_os = "windows")]
|
||||||
env_type: Some("powershell".into()),
|
env_type: Some("powershell".into()),
|
||||||
|
start_page: Some("/".into()),
|
||||||
traffic_graph: Some(true),
|
traffic_graph: Some(true),
|
||||||
enable_memory_usage: Some(true),
|
enable_memory_usage: Some(true),
|
||||||
enable_auto_launch: Some(false),
|
enable_auto_launch: Some(false),
|
||||||
@ -192,6 +195,7 @@ impl IVerge {
|
|||||||
patch!(theme_mode);
|
patch!(theme_mode);
|
||||||
patch!(tray_event);
|
patch!(tray_event);
|
||||||
patch!(env_type);
|
patch!(env_type);
|
||||||
|
patch!(start_page);
|
||||||
patch!(startup_script);
|
patch!(startup_script);
|
||||||
patch!(traffic_graph);
|
patch!(traffic_graph);
|
||||||
patch!(enable_memory_usage);
|
patch!(enable_memory_usage);
|
||||||
|
@ -27,7 +27,7 @@ import { LayoutViewer } from "./mods/layout-viewer";
|
|||||||
import { UpdateViewer } from "./mods/update-viewer";
|
import { UpdateViewer } from "./mods/update-viewer";
|
||||||
import getSystem from "@/utils/get-system";
|
import getSystem from "@/utils/get-system";
|
||||||
import { portableFlag } from "@/pages/_layout";
|
import { portableFlag } from "@/pages/_layout";
|
||||||
|
import { routers } from "@/pages/_routers";
|
||||||
interface Props {
|
interface Props {
|
||||||
onError?: (err: Error) => void;
|
onError?: (err: Error) => void;
|
||||||
}
|
}
|
||||||
@ -38,8 +38,14 @@ const SettingVerge = ({ onError }: Props) => {
|
|||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
const { verge, patchVerge, mutateVerge } = useVerge();
|
const { verge, patchVerge, mutateVerge } = useVerge();
|
||||||
const { theme_mode, language, tray_event, env_type, startup_script } =
|
const {
|
||||||
verge ?? {};
|
theme_mode,
|
||||||
|
language,
|
||||||
|
tray_event,
|
||||||
|
env_type,
|
||||||
|
startup_script,
|
||||||
|
start_page,
|
||||||
|
} = verge ?? {};
|
||||||
const configRef = useRef<DialogRef>(null);
|
const configRef = useRef<DialogRef>(null);
|
||||||
const hotkeyRef = useRef<DialogRef>(null);
|
const hotkeyRef = useRef<DialogRef>(null);
|
||||||
const miscRef = useRef<DialogRef>(null);
|
const miscRef = useRef<DialogRef>(null);
|
||||||
@ -134,6 +140,23 @@ const SettingVerge = ({ onError }: Props) => {
|
|||||||
</Select>
|
</Select>
|
||||||
</GuardState>
|
</GuardState>
|
||||||
</SettingItem>
|
</SettingItem>
|
||||||
|
|
||||||
|
<SettingItem label={t("Start Page")}>
|
||||||
|
<GuardState
|
||||||
|
value={start_page ?? "/"}
|
||||||
|
onCatch={onError}
|
||||||
|
onFormat={(e: any) => e.target.value}
|
||||||
|
onChange={(e) => onChangeData({ start_page: e })}
|
||||||
|
onGuard={(e) => patchVerge({ start_page: e })}
|
||||||
|
>
|
||||||
|
<Select size="small" sx={{ width: 140, "> div": { py: "7.5px" } }}>
|
||||||
|
{routers.map((page: { label: string; link: string }) => {
|
||||||
|
return <MenuItem value={page.link}>{t(page.label)}</MenuItem>;
|
||||||
|
})}
|
||||||
|
</Select>
|
||||||
|
</GuardState>
|
||||||
|
</SettingItem>
|
||||||
|
|
||||||
<SettingItem label={t("Startup Script")}>
|
<SettingItem label={t("Startup Script")}>
|
||||||
<GuardState
|
<GuardState
|
||||||
value={startup_script ?? ""}
|
value={startup_script ?? ""}
|
||||||
|
@ -101,6 +101,7 @@
|
|||||||
"Theme Mode": "Theme Mode",
|
"Theme Mode": "Theme Mode",
|
||||||
"Tray Click Event": "Tray Click Event",
|
"Tray Click Event": "Tray Click Event",
|
||||||
"Copy Env Type": "Copy Env Type",
|
"Copy Env Type": "Copy Env Type",
|
||||||
|
"Start Page": "Start Page",
|
||||||
"Startup Script": "Startup Script",
|
"Startup Script": "Startup Script",
|
||||||
"Browse": "Browse",
|
"Browse": "Browse",
|
||||||
"Show Main Window": "Show Main Window",
|
"Show Main Window": "Show Main Window",
|
||||||
|
@ -92,6 +92,7 @@
|
|||||||
"Current System Proxy": "Текущий системный прокси",
|
"Current System Proxy": "Текущий системный прокси",
|
||||||
"Theme Mode": "Режим темы",
|
"Theme Mode": "Режим темы",
|
||||||
"Tray Click Event": "Событие щелчка в лотке",
|
"Tray Click Event": "Событие щелчка в лотке",
|
||||||
|
"Start Page": "Главная страница",
|
||||||
"Copy Env Type": "Скопировать тип Env",
|
"Copy Env Type": "Скопировать тип Env",
|
||||||
"Startup Script": "Скрипт запуска",
|
"Startup Script": "Скрипт запуска",
|
||||||
"Browse": "Просмотреть",
|
"Browse": "Просмотреть",
|
||||||
|
@ -101,6 +101,7 @@
|
|||||||
"Theme Mode": "主题模式",
|
"Theme Mode": "主题模式",
|
||||||
"Tray Click Event": "托盘点击事件",
|
"Tray Click Event": "托盘点击事件",
|
||||||
"Copy Env Type": "复制环境变量类型",
|
"Copy Env Type": "复制环境变量类型",
|
||||||
|
"Start Page": "启动页面",
|
||||||
"Startup Script": "启动脚本",
|
"Startup Script": "启动脚本",
|
||||||
"Browse": "浏览",
|
"Browse": "浏览",
|
||||||
"Show Main Window": "显示主窗口",
|
"Show Main Window": "显示主窗口",
|
||||||
|
@ -23,7 +23,7 @@ import getSystem from "@/utils/get-system";
|
|||||||
import "dayjs/locale/ru";
|
import "dayjs/locale/ru";
|
||||||
import "dayjs/locale/zh-cn";
|
import "dayjs/locale/zh-cn";
|
||||||
import { getPortableFlag } from "@/services/cmds";
|
import { getPortableFlag } from "@/services/cmds";
|
||||||
|
import { useNavigate } from "react-router-dom";
|
||||||
export let portableFlag = false;
|
export let portableFlag = false;
|
||||||
|
|
||||||
dayjs.extend(relativeTime);
|
dayjs.extend(relativeTime);
|
||||||
@ -36,8 +36,8 @@ const Layout = () => {
|
|||||||
const { theme } = useCustomTheme();
|
const { theme } = useCustomTheme();
|
||||||
|
|
||||||
const { verge } = useVerge();
|
const { verge } = useVerge();
|
||||||
const { language } = verge || {};
|
const { language, start_page } = verge || {};
|
||||||
|
const navigate = useNavigate();
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -88,7 +88,10 @@ const Layout = () => {
|
|||||||
dayjs.locale(language === "zh" ? "zh-cn" : language);
|
dayjs.locale(language === "zh" ? "zh-cn" : language);
|
||||||
i18next.changeLanguage(language);
|
i18next.changeLanguage(language);
|
||||||
}
|
}
|
||||||
}, [language]);
|
if (start_page) {
|
||||||
|
navigate(start_page);
|
||||||
|
}
|
||||||
|
}, [language, start_page]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SWRConfig value={{ errorRetryCount: 3 }}>
|
<SWRConfig value={{ errorRetryCount: 3 }}>
|
||||||
|
1
src/services/types.d.ts
vendored
1
src/services/types.d.ts
vendored
@ -184,6 +184,7 @@ interface IVergeConfig {
|
|||||||
tray_event?: "main_window" | "system_proxy" | "tun_mode" | string;
|
tray_event?: "main_window" | "system_proxy" | "tun_mode" | string;
|
||||||
env_type?: "bash" | "cmd" | "powershell" | string;
|
env_type?: "bash" | "cmd" | "powershell" | string;
|
||||||
startup_script?: string;
|
startup_script?: string;
|
||||||
|
start_page?: string;
|
||||||
clash_core?: string;
|
clash_core?: string;
|
||||||
theme_mode?: "light" | "dark" | "system";
|
theme_mode?: "light" | "dark" | "system";
|
||||||
traffic_graph?: boolean;
|
traffic_graph?: boolean;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user