@e-group/utils
Version:
eGroup team utils that share across projects.
73 lines (64 loc) • 2.26 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = getDeviceInfo;
var _mobileDetect = _interopRequireDefault(require("mobile-detect"));
/* eslint-disable no-underscore-dangle */
function getDeviceInfo() {
if (typeof window !== 'undefined') {
var _md$phone, _md$tablet, _md$mobile, _md$os, _md$userAgent, _md$mobileGrade;
const md = new _mobileDetect.default(window.navigator.userAgent);
const rules = _mobileDetect.default._impl.mobileDetectRules;
const sections = ['phones', 'tablets', 'oss', 'uas', 'utils'];
const outcome = [];
outcome.push({
phone: (_md$phone = md.phone()) !== null && _md$phone !== void 0 ? _md$phone : 'Unknow'
});
outcome.push({
tablet: (_md$tablet = md.tablet()) !== null && _md$tablet !== void 0 ? _md$tablet : 'Unknow'
});
outcome.push({
mobile: (_md$mobile = md.mobile()) !== null && _md$mobile !== void 0 ? _md$mobile : 'Unknow'
});
outcome.push({
os: (_md$os = md.os()) !== null && _md$os !== void 0 ? _md$os : 'Unknow'
});
outcome.push({
userAgent: (_md$userAgent = md.userAgent()) !== null && _md$userAgent !== void 0 ? _md$userAgent : 'Unknow'
});
outcome.push({
mobileGrade: (_md$mobileGrade = md.mobileGrade()) !== null && _md$mobileGrade !== void 0 ? _md$mobileGrade : 'Unknow'
});
outcome.push({
smallerSide: _mobileDetect.default._impl.getDeviceSmallerSide()
});
sections.forEach(section => {
Object.keys(rules[section]).filter(key => md.is(key)).forEach(key => {
outcome.push({
key: "is(".concat(key, ")"),
val: true
});
});
});
Object.keys(rules.props).forEach(propKey => {
const versionStr = md.versionStr(propKey);
if (versionStr) {
outcome.push({
key: "versionStr(".concat(propKey, ")"),
val: versionStr
});
}
const version = md.version(propKey);
if (version) {
outcome.push({
key: "version(".concat(propKey, ")"),
val: version
});
}
});
return outcome;
}
return undefined;
}