if devices are paired a second time, the old roomSecret is deleted upon saving the new one.
This commit is contained in:
parent
414cc9aa57
commit
b933ef151a
5 changed files with 26 additions and 18 deletions
2
index.js
2
index.js
|
@ -263,10 +263,12 @@ class PairDropServer {
|
||||||
this._send(sender, {
|
this._send(sender, {
|
||||||
type: 'pair-device-joined',
|
type: 'pair-device-joined',
|
||||||
roomSecret: roomSecret,
|
roomSecret: roomSecret,
|
||||||
|
peerId: creator.id
|
||||||
});
|
});
|
||||||
this._send(creator, {
|
this._send(creator, {
|
||||||
type: 'pair-device-joined',
|
type: 'pair-device-joined',
|
||||||
roomSecret: roomSecret,
|
roomSecret: roomSecret,
|
||||||
|
peerId: sender.id
|
||||||
});
|
});
|
||||||
this._joinRoom(sender, 'secret', roomSecret);
|
this._joinRoom(sender, 'secret', roomSecret);
|
||||||
this._removeRoomKey(sender.roomKey);
|
this._removeRoomKey(sender.roomKey);
|
||||||
|
|
|
@ -85,7 +85,7 @@ class ServerConnection {
|
||||||
Events.fire('pair-device-initiated', msg);
|
Events.fire('pair-device-initiated', msg);
|
||||||
break;
|
break;
|
||||||
case 'pair-device-joined':
|
case 'pair-device-joined':
|
||||||
Events.fire('pair-device-joined', msg.roomSecret);
|
Events.fire('pair-device-joined', msg);
|
||||||
break;
|
break;
|
||||||
case 'pair-device-join-key-invalid':
|
case 'pair-device-join-key-invalid':
|
||||||
Events.fire('pair-device-join-key-invalid');
|
Events.fire('pair-device-join-key-invalid');
|
||||||
|
@ -671,7 +671,7 @@ class PeersManager {
|
||||||
msg.peers.forEach(peer => {
|
msg.peers.forEach(peer => {
|
||||||
if (this.peers[peer.id]) {
|
if (this.peers[peer.id]) {
|
||||||
// if different roomType -> abort
|
// if different roomType -> abort
|
||||||
if (this.peers[peer.id].roomType !== msg.roomType) return;
|
if (this.peers[peer.id].roomType !== msg.roomType || this.peers[peer.id].roomSecret !== msg.roomSecret) return;
|
||||||
this.peers[peer.id].refresh();
|
this.peers[peer.id].refresh();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -729,7 +729,7 @@ class PairDeviceDialog extends Dialog {
|
||||||
Events.on('ws-connected', _ => this._onWsConnected());
|
Events.on('ws-connected', _ => this._onWsConnected());
|
||||||
Events.on('ws-disconnected', _ => this.hide());
|
Events.on('ws-disconnected', _ => this.hide());
|
||||||
Events.on('pair-device-initiated', e => this._pairDeviceInitiated(e.detail));
|
Events.on('pair-device-initiated', e => this._pairDeviceInitiated(e.detail));
|
||||||
Events.on('pair-device-joined', e => this._pairDeviceJoined(e.detail));
|
Events.on('pair-device-joined', e => this._pairDeviceJoined(e.detail.peerId, e.detail.roomSecret));
|
||||||
Events.on('pair-device-join-key-invalid', _ => this._pairDeviceJoinKeyInvalid());
|
Events.on('pair-device-join-key-invalid', _ => this._pairDeviceJoinKeyInvalid());
|
||||||
Events.on('pair-device-canceled', e => this._pairDeviceCanceled(e.detail));
|
Events.on('pair-device-canceled', e => this._pairDeviceCanceled(e.detail));
|
||||||
Events.on('clear-room-secrets', e => this._onClearRoomSecrets(e.detail))
|
Events.on('clear-room-secrets', e => this._onClearRoomSecrets(e.detail))
|
||||||
|
@ -859,22 +859,25 @@ class PairDeviceDialog extends Dialog {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_pairDeviceJoined(roomSecret) {
|
_pairDeviceJoined(peerId, roomSecret) {
|
||||||
this.hide();
|
this.hide();
|
||||||
PersistentStorage.addRoomSecret(roomSecret).then(_ => {
|
PersistentStorage.addRoomSecret(roomSecret).then(_ => {
|
||||||
Events.fire('notify-user', 'Devices paired successfully.')
|
Events.fire('notify-user', 'Devices paired successfully.');
|
||||||
|
const oldRoomSecret = $(peerId).ui.roomSecret;
|
||||||
|
if (oldRoomSecret) PersistentStorage.deleteRoomSecret(oldRoomSecret);
|
||||||
|
$(peerId).ui.roomSecret = roomSecret;
|
||||||
this._evaluateNumberRoomSecrets();
|
this._evaluateNumberRoomSecrets();
|
||||||
}).finally(_ => {
|
}).finally(_ => {
|
||||||
this._cleanUp();
|
this._cleanUp();
|
||||||
})
|
})
|
||||||
.catch(_ => {
|
.catch(_ => {
|
||||||
Events.fire('notify-user', 'Paired devices are not persistent.')
|
Events.fire('notify-user', 'Paired devices are not persistent.');
|
||||||
PersistentStorage.logBrowserNotCapable()
|
PersistentStorage.logBrowserNotCapable();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
_pairDeviceJoinKeyInvalid() {
|
_pairDeviceJoinKeyInvalid() {
|
||||||
Events.fire('notify-user', 'Key not valid')
|
Events.fire('notify-user', 'Key not valid');
|
||||||
}
|
}
|
||||||
|
|
||||||
_pairDeviceCancel() {
|
_pairDeviceCancel() {
|
||||||
|
@ -884,7 +887,7 @@ class PairDeviceDialog extends Dialog {
|
||||||
}
|
}
|
||||||
|
|
||||||
_pairDeviceCanceled(roomKey) {
|
_pairDeviceCanceled(roomKey) {
|
||||||
Events.fire('notify-user', `Key ${roomKey} invalidated.`)
|
Events.fire('notify-user', `Key ${roomKey} invalidated.`);
|
||||||
}
|
}
|
||||||
|
|
||||||
_cleanUp() {
|
_cleanUp() {
|
||||||
|
|
|
@ -83,7 +83,7 @@ class ServerConnection {
|
||||||
Events.fire('pair-device-initiated', msg);
|
Events.fire('pair-device-initiated', msg);
|
||||||
break;
|
break;
|
||||||
case 'pair-device-joined':
|
case 'pair-device-joined':
|
||||||
Events.fire('pair-device-joined', msg.roomSecret);
|
Events.fire('pair-device-joined', msg);
|
||||||
break;
|
break;
|
||||||
case 'pair-device-join-key-invalid':
|
case 'pair-device-join-key-invalid':
|
||||||
Events.fire('pair-device-join-key-invalid');
|
Events.fire('pair-device-join-key-invalid');
|
||||||
|
@ -726,7 +726,7 @@ class PeersManager {
|
||||||
msg.peers.forEach(peer => {
|
msg.peers.forEach(peer => {
|
||||||
if (this.peers[peer.id]) {
|
if (this.peers[peer.id]) {
|
||||||
// if different roomType -> abort
|
// if different roomType -> abort
|
||||||
if (this.peers[peer.id].roomType !== msg.roomType) return;
|
if (this.peers[peer.id].roomType !== msg.roomType || this.peers[peer.id].roomSecret !== msg.roomSecret) return;
|
||||||
this.peers[peer.id].refresh();
|
this.peers[peer.id].refresh();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -730,7 +730,7 @@ class PairDeviceDialog extends Dialog {
|
||||||
Events.on('ws-connected', _ => this._onWsConnected());
|
Events.on('ws-connected', _ => this._onWsConnected());
|
||||||
Events.on('ws-disconnected', _ => this.hide());
|
Events.on('ws-disconnected', _ => this.hide());
|
||||||
Events.on('pair-device-initiated', e => this._pairDeviceInitiated(e.detail));
|
Events.on('pair-device-initiated', e => this._pairDeviceInitiated(e.detail));
|
||||||
Events.on('pair-device-joined', e => this._pairDeviceJoined(e.detail));
|
Events.on('pair-device-joined', e => this._pairDeviceJoined(e.detail.peerId, e.detail.roomSecret));
|
||||||
Events.on('pair-device-join-key-invalid', _ => this._pairDeviceJoinKeyInvalid());
|
Events.on('pair-device-join-key-invalid', _ => this._pairDeviceJoinKeyInvalid());
|
||||||
Events.on('pair-device-canceled', e => this._pairDeviceCanceled(e.detail));
|
Events.on('pair-device-canceled', e => this._pairDeviceCanceled(e.detail));
|
||||||
Events.on('clear-room-secrets', e => this._onClearRoomSecrets(e.detail))
|
Events.on('clear-room-secrets', e => this._onClearRoomSecrets(e.detail))
|
||||||
|
@ -860,22 +860,25 @@ class PairDeviceDialog extends Dialog {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_pairDeviceJoined(roomSecret) {
|
_pairDeviceJoined(peerId, roomSecret) {
|
||||||
this.hide();
|
this.hide();
|
||||||
PersistentStorage.addRoomSecret(roomSecret).then(_ => {
|
PersistentStorage.addRoomSecret(roomSecret).then(_ => {
|
||||||
Events.fire('notify-user', 'Devices paired successfully.')
|
Events.fire('notify-user', 'Devices paired successfully.');
|
||||||
|
const oldRoomSecret = $(peerId).ui.roomSecret;
|
||||||
|
if (oldRoomSecret) PersistentStorage.deleteRoomSecret(oldRoomSecret);
|
||||||
|
$(peerId).ui.roomSecret = roomSecret;
|
||||||
this._evaluateNumberRoomSecrets();
|
this._evaluateNumberRoomSecrets();
|
||||||
}).finally(_ => {
|
}).finally(_ => {
|
||||||
this._cleanUp();
|
this._cleanUp();
|
||||||
})
|
})
|
||||||
.catch(_ => {
|
.catch(_ => {
|
||||||
Events.fire('notify-user', 'Paired devices are not persistent.')
|
Events.fire('notify-user', 'Paired devices are not persistent.');
|
||||||
PersistentStorage.logBrowserNotCapable()
|
PersistentStorage.logBrowserNotCapable();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
_pairDeviceJoinKeyInvalid() {
|
_pairDeviceJoinKeyInvalid() {
|
||||||
Events.fire('notify-user', 'Key not valid')
|
Events.fire('notify-user', 'Key not valid');
|
||||||
}
|
}
|
||||||
|
|
||||||
_pairDeviceCancel() {
|
_pairDeviceCancel() {
|
||||||
|
@ -885,7 +888,7 @@ class PairDeviceDialog extends Dialog {
|
||||||
}
|
}
|
||||||
|
|
||||||
_pairDeviceCanceled(roomKey) {
|
_pairDeviceCanceled(roomKey) {
|
||||||
Events.fire('notify-user', `Key ${roomKey} invalidated.`)
|
Events.fire('notify-user', `Key ${roomKey} invalidated.`);
|
||||||
}
|
}
|
||||||
|
|
||||||
_cleanUp() {
|
_cleanUp() {
|
||||||
|
|
Loading…
Reference in a new issue