Home Manual Reference Source

src/definitions/Browser.js

  1. import adapter from 'webrtc-adapter';
  2. import Webcom from 'webcom/webcom';
  3.  
  4. /**
  5. * The current browser's infos
  6. * @typedef {Object} Browser
  7. * @property {string} name - current browser's name
  8. * @property {number} [version] - current browser's version
  9. * @property {number} [minVersion] - current browser's minimum supported version
  10. * @property {boolean} compatible - is current browser supported ?
  11. */
  12. const browser = Object.assign({
  13. compatible: !/\s/.test(adapter.browserDetails.browser)
  14. && (!adapter.browserDetails.minVersion
  15. || adapter.browserDetails.version >= adapter.browserDetails.minVersion)
  16. }, adapter.browserDetails);
  17.  
  18. const version = `Reach v${SDK_VERSION} | Schema ${SCHEMA_VERSION} | Webcom v${Webcom.SDK_VERSION}`; // eslint-disable-line no-undef
  19. let message = '';
  20. if (browser.version === null) {
  21. message = 'Unsupported browser: browser must support WebRTC Peer-to-peer connections to use Reach';
  22. } else if (browser.minVersion && browser.minVersion > browser.version) {
  23. message = `Unsupported browser: browser is outdated, update to latest version (${browser.minVersion}+)`;
  24. } else if (!adapter.browserShim) {
  25. message = 'No shim for your browser. There might a problem with your package.';
  26. }
  27.  
  28. // Log browser status & SDKs versions on load
  29. let args = [`${version} ${message}`];
  30. if (/^(chrome|firefox)$/.test(browser.browser)) {
  31. args = [
  32. `%c ${version} %c ${message}`,
  33. `background: ${browser.compatible ? 'blue' : 'red'}; color: #fff; font-weight: bold`,
  34. `color: ${browser.compatible ? 'inherit' : 'red'}`
  35. ];
  36. }
  37.  
  38. console.log(...args); // eslint-disable-line no-console
  39.  
  40. export default browser;