瀏覽代碼

fix: add os platform value

GyDi 2 年之前
父節點
當前提交
1b44ae098c
共有 4 個文件被更改,包括 23 次插入6 次删除
  1. 0 4
      src/pages/_layout.tsx
  2. 19 0
      src/services/types.d.ts
  3. 3 2
      src/utils/get-system.ts
  4. 1 0
      vite.config.ts

+ 0 - 4
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();

+ 19 - 0
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
  */

+ 3 - 2
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";
 

+ 1 - 0
vite.config.ts

@@ -24,6 +24,7 @@ export default defineConfig({
     },
   },
   define: {
+    OS_PLATFORM: `"${process.platform}"`,
     WIN_PORTABLE: !!process.env.VITE_WIN_PORTABLE,
   },
 });