diff --git a/src/pages/_layout.tsx b/src/pages/_layout.tsx index 7756d80570d3b95d834a7d3ce5645f1f520026ff..4b52ace997ef6d651100f92510cb7f2f47ef8562 100644 --- a/src/pages/_layout.tsx +++ b/src/pages/_layout.tsx @@ -24,10 +24,6 @@ import useCustomTheme from "@/components/layout/use-custom-theme"; import getSystem from "@/utils/get-system"; import "dayjs/locale/zh-cn"; -declare global { - const WIN_PORTABLE: boolean; -} - dayjs.extend(relativeTime); const OS = getSystem(); diff --git a/src/services/types.d.ts b/src/services/types.d.ts index de3541d754279b5d68fd18e7cf4e6ca08a47f384..749cffde821508b82d81c1ab2f61433b8e39ce7b 100644 --- a/src/services/types.d.ts +++ b/src/services/types.d.ts @@ -1,3 +1,22 @@ +type Platform = + | "aix" + | "android" + | "darwin" + | "freebsd" + | "haiku" + | "linux" + | "openbsd" + | "sunos" + | "win32" + | "cygwin" + | "netbsd"; + +/** + * defines in `vite.config.ts` + */ +declare const WIN_PORTABLE: boolean; +declare const OS_PLATFORM: Platform; + /** * Some interface for clash api */ diff --git a/src/utils/get-system.ts b/src/utils/get-system.ts index 8801617005940986c4a26490dc51cbf025597608..891770329f6420d78f448199cd5751d796931127 100644 --- a/src/utils/get-system.ts +++ b/src/utils/get-system.ts @@ -2,10 +2,11 @@ // according to UA export default function getSystem() { const ua = navigator.userAgent; + const platform = OS_PLATFORM; - if (ua.includes("Mac OS X")) return "macos"; + if (ua.includes("Mac OS X") || platform === "darwin") return "macos"; - if (/win64|win32/i.test(ua)) return "windows"; + if (/win64|win32/i.test(ua) || platform === "win32") return "windows"; if (/linux/i.test(ua)) return "linux"; diff --git a/vite.config.ts b/vite.config.ts index 4a51b767c86336fab1b9ed8f25d8186f07ee3ac7..0315d7692561a4c0edf95dc270e83916512aee72 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -24,6 +24,7 @@ export default defineConfig({ }, }, define: { + OS_PLATFORM: `"${process.platform}"`, WIN_PORTABLE: !!process.env.VITE_WIN_PORTABLE, }, });