lobe-chat

Форк
0
/
platform.ts 
55 строк · 1.6 Кб
1
import UAParser from 'ua-parser-js';
2

3
import { isOnServerSide } from '@/utils/env';
4

5
export const getParser = () => {
6
  if (isOnServerSide) return new UAParser('Node');
7

8
  let ua = navigator.userAgent;
9
  return new UAParser(ua);
10
};
11

12
export const getPlatform = () => {
13
  return getParser().getOS().name;
14
};
15

16
export const getBrowser = () => {
17
  return getParser().getResult().browser.name;
18
};
19

20
export const browserInfo = {
21
  browser: getBrowser(),
22
  isMobile: getParser().getDevice().type === 'mobile',
23
  os: getParser().getOS().name,
24
};
25

26
export const isMacOS = () => getPlatform() === 'Mac OS';
27

28
export const isInStandaloneMode = () => {
29
  if (isOnServerSide) return false;
30
  return (
31
    window.matchMedia('(display-mode: standalone)').matches ||
32
    ('standalone' in navigator && (navigator as any).standalone === true)
33
  );
34
};
35

36
export const isSonomaOrLaterSafari = () => {
37
  if (isOnServerSide) return false;
38

39
  // refs: https://github.com/khmyznikov/pwa-install/blob/0904788b9d0e34399846f6cb7dbb5efeabb62c20/src/utils.ts#L24
40
  const userAgent = navigator.userAgent.toLowerCase();
41
  if (navigator.maxTouchPoints || !/macintosh/.test(userAgent)) return false;
42

43
  // check safari version >= 17
44
  const version = /version\/(\d{2})\./.exec(userAgent);
45
  if (!version || !version[1] || !(parseInt(version[1]) >= 17)) return false;
46

47
  try {
48
    // hacky way to detect Sonoma
49
    const audioCheck = document.createElement('audio').canPlayType('audio/wav; codecs="1"');
50
    const webGLCheck = new OffscreenCanvas(1, 1).getContext('webgl');
51
    return Boolean(audioCheck) && Boolean(webGLCheck);
52
  } catch {
53
    return false;
54
  }
55
};
56

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.