Combine browser name and unique name

This commit is contained in:
RobinLinus 2020-12-19 21:05:48 +01:00
parent 6044103bfc
commit 7469086cda
3 changed files with 51 additions and 9 deletions

View file

@ -1,4 +1,5 @@
const parser = require('ua-parser-js');
const { uniqueNamesGenerator, animals, colors } = require('unique-names-generator');
class SnapdropServer {
@ -19,7 +20,13 @@ class SnapdropServer {
this._keepAlive(peer);
// send displayName
this._send(peer, { type: 'display-name', message: peer.name.displayName });
this._send(peer, {
type: 'display-name',
message: {
displayName: peer.name.displayName,
deviceName: peer.name.deviceName
}
});
}
_onHeaders(headers, response) {
@ -188,19 +195,28 @@ class Peer {
let ua = parser(req.headers['user-agent']);
let displayName = ua.os.name.replace('Mac OS', 'Mac') + ' ';
let deviceName = ua.os.name.replace('Mac OS', 'Mac') + ' ';
if (ua.device.model) {
displayName += ua.device.model;
deviceName += ua.device.model;
} else {
displayName += ua.browser.name;
deviceName += ua.browser.name;
}
const displayName = uniqueNamesGenerator({
length: 2,
separator: ' ',
dictionaries: [colors, animals],
style: 'capital',
seed: this.id.hashCode()
})
this.name = {
model: ua.device.model,
os: ua.os.name,
browser: ua.browser.name,
type: ua.device.type,
displayName: displayName
deviceName,
displayName
};
}
@ -239,4 +255,16 @@ class Peer {
};
}
Object.defineProperty(String.prototype, 'hashCode', {
value: function() {
var hash = 0, i, chr;
for (i = 0; i < this.length; i++) {
chr = this.charCodeAt(i);
hash = ((hash << 5) - hash) + chr;
hash |= 0; // Convert to 32bit integer
}
return hash;
}
});
const server = new SnapdropServer(process.env.PORT || 3000);