Added dependency on bowser to have a more accurate browser and OS detection

This commit is contained in:
Alejandro Celaya
2020-04-10 19:16:44 +02:00
parent 87ffbefa61
commit 6fede88072
6 changed files with 37 additions and 37 deletions

View File

@@ -1,26 +1,27 @@
import bowser from 'bowser';
import { hasValue } from '../utils';
const DEFAULT = 'Others';
const BROWSERS_WHITELIST = [
'Android Browser',
'Chrome',
'Chromium',
'Firefox',
'Internet Explorer',
'Microsoft Edge',
'Opera',
'Safari',
'Samsung Internet for Android',
'Vivaldi',
'WeChat',
];
export const osFromUserAgent = (userAgent) => {
if (!hasValue(userAgent)) {
return DEFAULT;
}
const lowerUserAgent = userAgent.toLowerCase();
switch (true) {
case lowerUserAgent.includes('linux'):
return 'Linux';
case lowerUserAgent.includes('windows'):
return 'Windows';
case lowerUserAgent.includes('mac'):
return 'MacOS';
case lowerUserAgent.includes('mobi'):
return 'Mobile';
default:
return DEFAULT;
}
return bowser.parse(userAgent).os.name || DEFAULT;
};
export const browserFromUserAgent = (userAgent) => {
@@ -28,24 +29,9 @@ export const browserFromUserAgent = (userAgent) => {
return DEFAULT;
}
const lowerUserAgent = userAgent.toLowerCase();
const { name: browser } = bowser.parse(userAgent).browser;
switch (true) {
case lowerUserAgent.includes('opera') || lowerUserAgent.includes('opr'):
return 'Opera';
case lowerUserAgent.includes('firefox'):
return 'Firefox';
case lowerUserAgent.includes('chrome'):
return 'Chrome';
case lowerUserAgent.includes('safari'):
return 'Safari';
case lowerUserAgent.includes('edg'):
return 'Microsoft Edge';
case lowerUserAgent.includes('msie'):
return 'Internet Explorer';
default:
return DEFAULT;
}
return browser && BROWSERS_WHITELIST.includes(browser) ? browser : DEFAULT;
};
export const extractDomain = (url) => {

View File

@@ -24,12 +24,16 @@ const generateGraphData = (title, isBarChart, labels, data, highlightedData) =>
data,
backgroundColor: isBarChart ? 'rgba(70, 150, 229, 0.4)' : [
'#97BBCD',
'#DCDCDC',
'#F7464A',
'#46BFBD',
'#FDB45C',
'#949FB1',
'#4D5360',
'#57A773',
'#414066',
'#08B2E3',
'#B6C454',
'#DCDCDC',
'#463730',
],
borderColor: isBarChart ? 'rgba(70, 150, 229, 1)' : 'white',
borderWidth: 2,