readd persistent peerId via sessionStorage

This commit is contained in:
schlagmichdoch 2022-12-31 18:03:58 +01:00
parent 8dc0f1cb0c
commit 621c525d11
2 changed files with 16 additions and 5 deletions

View file

@ -102,7 +102,8 @@ class SnapdropServer {
type: 'display-name',
message: {
displayName: peer.name.displayName,
deviceName: peer.name.deviceName
deviceName: peer.name.deviceName,
peerId: peer.id
}
});
}
@ -230,7 +231,7 @@ class Peer {
this._setIP(request);
// set peer id
this._setPeerId()
this._setPeerId(request)
// is WebRTC supported ?
this.rtcSupported = request.url.indexOf('webrtc') > -1;
@ -297,8 +298,13 @@ class Peer {
return false;
}
_setPeerId() {
this.id = Peer.uuid();
_setPeerId(request) {
let peer_id = new URL(request.url, "http://server").searchParams.get("peer_id");
if (peer_id && /^([0-9]|[a-f]){8}-(([0-9]|[a-f]){4}-){3}([0-9]|[a-f]){12}$/.test(peer_id)) {
this.id = peer_id;
} else {
this.id = Peer.uuid();
}
}
toString() {

View file

@ -43,6 +43,7 @@ class ServerConnection {
this.send({ type: 'pong' });
break;
case 'display-name':
sessionStorage.setItem("peer_id", msg.message.peerId);
Events.fire('display-name', msg);
break;
default:
@ -59,7 +60,11 @@ class ServerConnection {
// hack to detect if deployment or development environment
const protocol = location.protocol.startsWith('https') ? 'wss' : 'ws';
const webrtc = window.isRtcSupported ? '/webrtc' : '/fallback';
return protocol + '://' + location.host + location.pathname + 'server' + webrtc;
let url = new URL(protocol + '://' + location.host + location.pathname + 'server' + webrtc);
if (sessionStorage.getItem('peer_id')) {
url.searchParams.append('peer_id', sessionStorage.getItem('peer_id'))
}
return url.toString();
}
_disconnect() {