Ctrl K
ComunidadGuías…

utils/browser.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import BrowserDetector from 'browser-dtector';

const name = [
  "Google Chrome",
  "Mozilla Firefox",
  "Microsoft Edge",
  "Safari",
  "Brave",
  "Opera",
  "Samsung Browser",
];

const detailByBrowser: any = {
  // supportPWA: all, half, none
  "Safari": {
    minVersion: 15.4,
    includeDevices: ["desktop", "mobile", "tablet"],
    supportPWA: "half",
  },
  "Google Chrome": {
    minVersion: 111,
    includeDevices: ["desktop", "mobile", "tablet"],
    supportPWA: "all",
  },
  "Microsoft Edge": {
    minVersion: 111,
    includeDevices: ["desktop", "mobile", "tablet"],
    supportPWA: "all",
  },
  "Mozilla Firefox": {
    minVersion: 113,
    includeDevices: ["desktop", "mobile", "tablet"],
    supportPWA: "none",
  },
  "Brave": {
    minVersion: 111,
    includeDevices: ["desktop", "mobile", "tablet"],
    supportPWA: "none",
  },
  "Opera": {
    minVersion: 97,
    includeDevices: ["desktop", "mobile", "tablet"],
    supportPWA: "none",
  },
  "Samsung Browser": {
    minVersion: 22,
    includeDevices: ["mobile", "tablet"],
    supportPWA: "all",
  },
};

function _checkIsBrowserSupport(uaParser: any): boolean {
  const browserName = uaParser.name;
  const browserVersion = uaParser.shortVersion || 0;
  const browserDevice = uaParser.isDesktop ? "desktop" : uaParser.isMobile ? "mobile" : uaParser.isTablet ? "tablet" : "unknown";

  return name.includes(browserName)
    && +browserVersion >= detailByBrowser[browserName].minVersion
    && detailByBrowser[browserName].includeDevices.includes(browserDevice);
}

function checkIsSupportWeb(ua: string) {
  const browser = new BrowserDetector(ua);
  const uaParser = browser.parseUserAgent();

  return _checkIsBrowserSupport(uaParser);
}

function checkIsSupportPWA(ua: string): boolean {
  const browser = new BrowserDetector(ua);
  const uaParser = browser.parseUserAgent();

  return _checkIsBrowserSupport(uaParser)
    && detailByBrowser[uaParser.name].supportPWA === "all";
}

function checkIsSupportHalfPWA(ua: string): boolean {
  const browser = new BrowserDetector(ua);
  const uaParser = browser.parseUserAgent();

  return _checkIsBrowserSupport(uaParser)
    && detailByBrowser[uaParser.name].supportPWA === "half";
}

function checkIsSafariDesktop(ua: string): boolean {
  const browser = new BrowserDetector(ua);
  const uaParser = browser.parseUserAgent();

  return uaParser.name === "Safari" && uaParser.isDesktop;
}

function checkIsSafariMobile(ua: string): boolean {
  const browser = new BrowserDetector(ua);
  const uaParser = browser.parseUserAgent();

  return uaParser.name === "Safari" && uaParser.isMobile;
}

export {
  checkIsSupportWeb,
  checkIsSupportPWA,
  checkIsSupportHalfPWA,
  checkIsSafariDesktop,
  checkIsSafariMobile,
}