70 lines
1.8 KiB
JavaScript
70 lines
1.8 KiB
JavaScript
'use strict';
|
|
|
|
angular.module('copayApp.services').factory('platformInfo', function($window) {
|
|
|
|
var ua = navigator ? navigator.userAgent : null;
|
|
|
|
if (!ua) {
|
|
console.log('Could not determine navigator. Using fixed string');
|
|
ua = 'dummy user-agent';
|
|
}
|
|
|
|
// Fixes IOS WebKit UA
|
|
ua = ua.replace(/\(\d+\)$/, '');
|
|
|
|
var isNodeWebkit = function() {
|
|
var isNode = (typeof process !== "undefined" && typeof require !== "undefined");
|
|
if (isNode) {
|
|
try {
|
|
return (typeof require('nw.gui') !== "undefined");
|
|
} catch (e) {
|
|
return false;
|
|
}
|
|
}
|
|
};
|
|
|
|
var getVersionIntelTee = function() {
|
|
var v = '';
|
|
var isWindows = navigator.platform.indexOf('Win') > -1;
|
|
|
|
if (!isNodeWebkit() || !isWindows) {
|
|
return v;
|
|
}
|
|
|
|
try {
|
|
var IntelWallet = require('intelWalletCon');
|
|
if (IntelWallet.getVersion) {
|
|
v = IntelWallet.getVersion();
|
|
} else {
|
|
v = 'Alpha';
|
|
}
|
|
if (v.length > 0) {
|
|
$log.info('Intel TEE library ' + v);
|
|
}
|
|
} catch (e) {}
|
|
return v;
|
|
};
|
|
|
|
// Detect mobile devices
|
|
var ret = {
|
|
isAndroid: ionic.Platform.isAndroid(),
|
|
isIOS: ionic.Platform.isIOS(),
|
|
isWP: ionic.Platform.isWindowsPhone() || ionic.Platform.platform() == 'edge',
|
|
isSafari: Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0,
|
|
ua: ua,
|
|
isCordova: !!$window.cordova,
|
|
isNW: isNodeWebkit(),
|
|
};
|
|
|
|
ret.isMobile = ret.isAndroid || ret.isIOS || ret.isWP;
|
|
ret.isChromeApp = $window.chrome && chrome.runtime && chrome.runtime.id && !ret.isNW;
|
|
ret.isDevel = !ret.isMobile && !ret.isChromeApp && !ret.isNW;
|
|
|
|
ret.supportsLedger = ret.isChromeApp;
|
|
ret.supportsTrezor = ret.isChromeApp || ret.isDevel;
|
|
|
|
ret.versionIntelTEE = getVersionIntelTee();
|
|
ret.supportsIntelTEE = ret.versionIntelTEE.length > 0;
|
|
|
|
return ret;
|
|
});
|