Source: utils.js

/**
 * Detect OS name.
 *
 * @param {string} ua User agent (lower case)
 * @return {string} OS name
 */
const detectOS = ua => {
  if (ua.includes('mac')) {
    return 'mac';
  }
  if (ua.includes('windows')) {
    return 'windows';
  }
  return 'unknown';
};

/**
 * Detect browser name.
 *
 * @param {string} ua User agent (lower case)
 * @return {string} Browser name
 */
const detectBrowser = ua => {
  if (ua.includes('msie') || ua.includes('trident/7')) {
    return 'ie';
  }
  if (ua.includes('edge')) {
    return 'edge';
  }
  if (ua.includes('edg')) {
    return 'edge-chromium';
  }
  if (ua.includes('chrome')) {
    return 'chrome';
  }
  if (ua.includes('safari')) {
    return 'safari';
  }
  if (ua.includes('opera')) {
    return 'opera';
  }
  if (ua.includes('firefox')) {
    return 'firefox';
  }
  return 'unknown';
};

/**
 * Detect OS and browser name.
 *
 * @return {Object} OS and Browser information
 */
const detectEnv = () => {
  const ua = window.navigator.userAgent.toLowerCase(); // eslint-disable-line no-undef

  return {
    os: detectOS(ua),
    browser: detectBrowser(ua)
  };
};

export default {
  detectEnv
};