mirror of
https://github.com/bitwarden/web
synced 2025-12-06 00:03:28 +00:00
48 lines
1.6 KiB
JavaScript
48 lines
1.6 KiB
JavaScript
angular
|
|
.module('bit.services')
|
|
|
|
.factory('utilsService', function (constants) {
|
|
var _service = {};
|
|
var _browserCache;
|
|
|
|
_service.getDeviceType = function (token) {
|
|
if (_browserCache) {
|
|
return _browserCache;
|
|
}
|
|
|
|
if (navigator.userAgent.indexOf(' Vivaldi/') >= 0) {
|
|
_browserCache = constants.deviceType.vivaldi;
|
|
}
|
|
else if (!!window.chrome && !!window.chrome.webstore) {
|
|
_browserCache = constants.deviceType.chrome;
|
|
}
|
|
else if (typeof InstallTrigger !== 'undefined') {
|
|
_browserCache = constants.deviceType.firefox;
|
|
}
|
|
else if ((!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0) {
|
|
_browserCache = constants.deviceType.firefox;
|
|
}
|
|
else if (/constructor/i.test(window.HTMLElement) ||
|
|
safariCheck(!window.safari || (typeof safari !== 'undefined' && safari.pushNotification))) {
|
|
_browserCache = constants.deviceType.opera;
|
|
}
|
|
else if (!!document.documentMode) {
|
|
_browserCache = constants.deviceType.ie;
|
|
}
|
|
else if (!!window.StyleMedia) {
|
|
_browserCache = constants.deviceType.edge;
|
|
}
|
|
else {
|
|
_browserCache = constants.deviceType.unknown;
|
|
}
|
|
|
|
return _browserCache;
|
|
};
|
|
|
|
function safariCheck(p) {
|
|
return p.toString() === '[object SafariRemoteNotification]';
|
|
}
|
|
|
|
return _service;
|
|
});
|