lobe-chat
1import { useRef } from 'react';
2
3import {
4getBrowser,
5getPlatform,
6isInStandaloneMode,
7isSonomaOrLaterSafari,
8} from '@/utils/platform';
9
10export const usePlatform = () => {
11const platform = useRef(getPlatform());
12const browser = useRef(getBrowser());
13
14const platformInfo = {
15isApple: platform.current && ['Mac OS', 'iOS'].includes(platform.current),
16isChrome: browser.current === 'Chrome',
17isChromium: browser.current && ['Chrome', 'Edge', 'Opera', 'Brave'].includes(browser.current),
18isEdge: browser.current === 'Edge',
19isIOS: platform.current === 'iOS',
20isMacOS: platform.current === 'Mac OS',
21isPWA: isInStandaloneMode(),
22isSafari: browser.current === 'Safari',
23isSonomaOrLaterSafari: isSonomaOrLaterSafari(),
24};
25
26return {
27...platformInfo,
28isSupportInstallPWA:
29(platformInfo.isChromium && !platformInfo.isIOS) ||
30(platformInfo.isMacOS && platformInfo.isSonomaOrLaterSafari),
31};
32};
33