UNPKG

paypal-checkout

Version:

PayPal Checkout components, for integrating checkout products.

88 lines (57 loc) 1.92 kB
/* @flow */ import { info, flush as flushLogs } from 'beaver-logger/client'; import { isIEIntranet, getUserAgent } from 'belter/src'; import { config } from '../config'; import { once } from './util'; const bowserCache = {}; function getBowser() : Object { const userAgent = getUserAgent(); if (bowserCache[userAgent]) { return bowserCache[userAgent]; } delete require.cache[require.resolve('bowser/bowser.min')]; const bowser = require('bowser/bowser.min'); bowserCache[userAgent] = bowser; return bowser; } export function getBrowser() : { browser? : string, version? : string } { const bowser = getBowser(); for (const browser of Object.keys(config.SUPPORTED_BROWSERS)) { if (bowser[browser]) { return { browser, version: bowser.version }; } } return {}; } function isBrowserEligible() : boolean { if (isIEIntranet()) { return false; } const bowser = getBowser(); const { browser, version } = getBrowser(); if (browser && version && bowser.compareVersions([ version, config.SUPPORTED_BROWSERS[browser] ]) === -1) { return false; } return true; } const eligibilityResults = {}; export function isEligible() : boolean { if (isIEIntranet()) { return false; } const userAgent = window.navigator.userAgent; if (userAgent && eligibilityResults.hasOwnProperty(userAgent)) { return eligibilityResults[userAgent]; } const result = isBrowserEligible(); eligibilityResults[userAgent] = result; return result; } export const checkRecognizedBrowser = once((state : string) => { const { browser } = getBrowser(); if (!browser) { const { name, version, mobile, android, ios } = getBowser(); info(`unrecognized_browser_${ state }`, { name, version, mobile, android, ios }); flushLogs(); } });