'use strict'; import { query, queryLogin } from '@/modules/query'; import { create } from 'zustand'; import { toast as message } from 'sonner'; import { useLayoutStore } from '@/pages/auth/store'; export const getIsMac = async () => { // @ts-ignore const userAgentData = navigator.userAgentData; if (userAgentData) { const ua = await userAgentData.getHighEntropyValues(['platform']); if (ua.platform === 'macOS') { return true; } } return false; }; export const getIsElectron = () => { // 检查 window.process 和 navigator.userAgent 中是否包含 Electron 信息 return ( // @ts-ignore (typeof window !== 'undefined' && typeof window.process !== 'undefined' && window.process.type === 'renderer') || (typeof navigator === 'object' && typeof navigator.userAgent === 'string' && navigator.userAgent.indexOf('Electron') >= 0) ); }; type PlatfromStore = { isMac: boolean; setIsMac: (mac: boolean) => void; mount: boolean; isElectron: boolean; init: () => Promise; }; export const usePlatformStore = create((set) => { return { isMac: false, mount: false, isElectron: false, setIsMac: (mac) => set({ isMac: mac }), init: async () => { const mac = await getIsMac(); // @ts-ignore const isElectron = getIsElectron(); set({ isMac: isElectron && mac, isElectron: isElectron, mount: true }); }, }; }); type Me = { id?: string; username?: string; nickname?: string | null; needChangePassword?: boolean; role?: string; description?: string | null; type?: 'user' | 'org'; orgs?: string[]; avatar?: string; }; export type LayoutStore = { open: boolean; setOpen: (open: boolean) => void; me: Me; setMe: (me: Me) => void; getMe: () => Promise; openUser: boolean; setOpenUser: (openUser: boolean) => void; switchOrg: (username?: string, type?: 'user' | 'org') => Promise; isAdmin: boolean; setIsAdmin: (isAdmin: boolean) => void; checkHasOrg: () => boolean; }; export { useLayoutStore }