UNPKG

@lobehub/chat

Version:

Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.

43 lines (38 loc) 1.3 kB
import { useMemo, useRef } from 'react'; import { getBrowser, getPlatform, isArc, isInStandaloneMode, isSonomaOrLaterSafari, } from '@/utils/platform'; export const usePlatform = () => { const platform = useRef(getPlatform()); const browser = useRef(getBrowser()); const platformInfo = { isApple: platform.current && ['mac os', 'ios'].includes(platform.current?.toLowerCase()), isArc: isArc(), isChrome: browser.current?.toLowerCase() === 'chrome', isChromium: browser.current && ['chrome', 'edge', 'opera', 'brave'].includes(browser.current?.toLowerCase()), isEdge: browser.current?.toLowerCase() === 'edge', isFirefox: browser.current?.toLowerCase() === 'firefox', isIOS: platform.current?.toLowerCase() === 'ios', isMacOS: platform.current?.toLowerCase() === 'mac os', isPWA: isInStandaloneMode(), isSafari: browser.current?.toLowerCase() === 'safari', isSonomaOrLaterSafari: isSonomaOrLaterSafari(), }; return useMemo( () => ({ ...platformInfo, isSupportInstallPWA: !platformInfo.isArc && !platformInfo.isFirefox && ((platformInfo.isChromium && !platformInfo.isIOS) || (platformInfo.isMacOS && platformInfo.isSonomaOrLaterSafari)), }), [platformInfo], ); };