Skip to content

Commit b514564

Browse files
author
Michael Laktionov
committed
move validation to separated funcion
1 parent 93edc9b commit b514564

File tree

3 files changed

+36
-35
lines changed

3 files changed

+36
-35
lines changed

main.js

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,23 @@ var device = UA.getDevice();
1616
var engine = UA.getEngine();
1717
var os = UA.getOS();
1818
var ua = UA.getUA();
19+
1920
var setDefaults = function setDefaults(p) {
2021
var d = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'none';
2122
return p ? p : d;
2223
};
23-
var isIOS13Check = function isIOS13Check(type) {
24+
var getNavigatorInstance = function getNavigatorInstance() {
2425
if (typeof window !== 'undefined') {
2526
if (window.navigator || navigator) {
26-
return navigator.platform.includes(type) || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && !window.MSStream;
27+
return window.navigator || navigator;
2728
}
2829
}
30+
31+
return false;
32+
};
33+
var isIOS13Check = function isIOS13Check(type) {
34+
var nav = getNavigatorInstance();
35+
return nav && (nav.platform.includes(type) || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream);
2936
};
3037

3138
function _typeof(obj) {
@@ -419,21 +426,14 @@ var isIEType = function isIEType() {
419426
};
420427

421428
var isElectronType = function isElectronType() {
422-
if (typeof window !== 'undefined') {
423-
if (window.navigator || navigator) {
424-
var _ua = navigator.userAgent.toLowerCase();
425-
426-
return typeof _ua === 'string' ? _ua.includes('electron') : false;
427-
}
428-
}
429+
var nav = getNavigatorInstance();
430+
var ua = nav && nav.userAgent.toLowerCase();
431+
return typeof ua === 'string' ? ua.includes('electron') : false;
429432
};
430433

431434
var getIOS13 = function getIOS13() {
432-
if (typeof window !== 'undefined') {
433-
if (window.navigator || navigator) {
434-
return (/iPad|iPhone|iPod/.test(navigator.platform) || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1) && !window.MSStream;
435-
}
436-
}
435+
var nav = getNavigatorInstance();
436+
return nav && (/iPad|iPhone|iPod/.test(nav.platform) || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1) && !window.MSStream;
437437
};
438438

439439
var getIPad13 = function getIPad13() {

src/components/helpers/get-ua-data.js

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,22 @@ export const mockUserAgent = userAgent => {
1414
window.navigator.__defineGetter__('userAgent', () => userAgent);
1515
};
1616

17+
//TODO: Rework structure, move helper functions to utils
1718
export const setDefaults = (p, d = 'none') => (p ? p : d);
1819

19-
export const isIOS13Check = type => {
20+
export const getNavigatorInstance = () => {
2021
if (typeof window !== 'undefined') {
2122
if (window.navigator || navigator) {
22-
return (
23-
navigator.platform.includes(type) ||
24-
(navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && !window.MSStream)
25-
);
23+
return window.navigator || navigator;
2624
}
2725
}
26+
27+
return false;
28+
};
29+
30+
export const isIOS13Check = type => {
31+
const nav = getNavigatorInstance();
32+
return (
33+
nav && (nav.platform.includes(type) || (nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream))
34+
);
2835
};

src/components/helpers/selectors.js

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { os, device, browser, ua, engine, setDefaults, isIOS13Check } from './get-ua-data';
1+
import { os, device, browser, ua, engine, setDefaults, isIOS13Check, getNavigatorInstance } from './get-ua-data';
22
import { BROWSER_TYPES, DEVICE_TYPES, OS_TYPES } from './types';
33

44
const isMobileType = () => device.type === DEVICE_TYPES.MOBILE;
@@ -31,25 +31,19 @@ const isMobileSafariType = () => browser.name === BROWSER_TYPES.MOBILE_SAFARI;
3131
const isOperaType = () => browser.name === BROWSER_TYPES.OPERA;
3232
const isIEType = () => browser.name === BROWSER_TYPES.INTERNET_EXPLORER || browser.name === BROWSER_TYPES.IE;
3333
const isElectronType = () => {
34-
if (typeof window !== 'undefined') {
35-
if (window.navigator || navigator) {
36-
const ua = navigator.userAgent.toLowerCase();
34+
const nav = getNavigatorInstance();
35+
const ua = nav && nav.userAgent.toLowerCase();
3736

38-
return typeof ua === 'string' ? ua.includes('electron') : false;
39-
}
40-
}
37+
return typeof ua === 'string' ? ua.includes('electron') : false;
4138
};
4239

4340
const getIOS13 = () => {
44-
if (typeof window !== 'undefined') {
45-
if (window.navigator || navigator) {
46-
return (
47-
(/iPad|iPhone|iPod/.test(navigator.platform) ||
48-
(navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) &&
49-
!window.MSStream
50-
);
51-
}
52-
}
41+
const nav = getNavigatorInstance();
42+
return (
43+
nav &&
44+
(/iPad|iPhone|iPod/.test(nav.platform) || (nav.platform === 'MacIntel' && nav.maxTouchPoints > 1)) &&
45+
!window.MSStream
46+
);
5347
};
5448

5549
const getIPad13 = () => isIOS13Check('iPad');

0 commit comments

Comments
 (0)