mirror of
https://github.com/jellyfin/jellyfin-web.git
synced 2024-11-18 03:18:19 -07:00
121 lines
3.1 KiB
JavaScript
121 lines
3.1 KiB
JavaScript
define(['appStorage', 'browser'], function (appStorage, browser) {
|
|
|
|
function getDeviceProfile() {
|
|
|
|
// TODO
|
|
return null;
|
|
}
|
|
|
|
function getCapabilities() {
|
|
|
|
var caps = {
|
|
PlayableMediaTypes: ['Audio', 'Video'],
|
|
|
|
SupportsPersistentIdentifier: false,
|
|
DeviceProfile: getDeviceProfile()
|
|
};
|
|
|
|
return caps;
|
|
}
|
|
|
|
function generateDeviceId() {
|
|
return new Promise(function (resolve, reject) {
|
|
|
|
require(['fingerprintjs2'], function (Fingerprint2) {
|
|
|
|
new Fingerprint2().get(function (result, components) {
|
|
console.log('Generated device id: ' + result); //a hash, representing your device fingerprint
|
|
resolve(result);
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
function getDeviceId() {
|
|
var key = '_deviceId2';
|
|
var deviceId = appStorage.getItem(key);
|
|
|
|
if (deviceId) {
|
|
return Promise.resolve(deviceId);
|
|
} else {
|
|
return generateDeviceId().then(function (deviceId) {
|
|
appStorage.setItem(key, deviceId);
|
|
return deviceId;
|
|
});
|
|
}
|
|
}
|
|
|
|
function getDeviceName() {
|
|
var deviceName;
|
|
|
|
if (browser.chrome) {
|
|
deviceName = "Chrome";
|
|
} else if (browser.edge) {
|
|
deviceName = "Edge";
|
|
} else if (browser.firefox) {
|
|
deviceName = "Firefox";
|
|
} else if (browser.msie) {
|
|
deviceName = "Internet Explorer";
|
|
} else {
|
|
deviceName = "Web Browser";
|
|
}
|
|
|
|
if (browser.version) {
|
|
deviceName += " " + browser.version;
|
|
}
|
|
|
|
if (browser.ipad) {
|
|
deviceName += " Ipad";
|
|
} else if (browser.iphone) {
|
|
deviceName += " Iphone";
|
|
} else if (browser.android) {
|
|
deviceName += " Android";
|
|
}
|
|
|
|
return deviceName;
|
|
}
|
|
|
|
var appInfo;
|
|
var version = window.dashboardVersion || '3.0';
|
|
|
|
return {
|
|
getWindowState: function () {
|
|
return document.windowState || 'Normal';
|
|
},
|
|
setWindowState: function (state) {
|
|
alert('setWindowState is not supported and should not be called');
|
|
},
|
|
exit: function () {
|
|
alert('exit is not supported and should not be called');
|
|
},
|
|
supports: function (command) {
|
|
|
|
var features = [
|
|
'filedownload'
|
|
];
|
|
|
|
features.push('sharing');
|
|
|
|
return features.indexOf(command.toLowerCase()) != -1;
|
|
},
|
|
appInfo: function () {
|
|
|
|
if (appInfo) {
|
|
return Promise.resolve(appInfo);
|
|
}
|
|
|
|
return getDeviceId().then(function (deviceId) {
|
|
|
|
appInfo = {
|
|
deviceId: deviceId,
|
|
deviceName: getDeviceName(),
|
|
appName: 'Emby Mobile',
|
|
appVersion: version
|
|
};
|
|
|
|
return appInfo;
|
|
});
|
|
},
|
|
capabilities: getCapabilities
|
|
};
|
|
}); |