Move beforeunload event to Peer class to include it to the WSPeer; Add reset method to Peer class to prevent returning the "unfinished-transfers" warning when closing the page after a peer has left during transfer

This commit is contained in:
schlagmichdoch 2024-02-13 20:14:22 +01:00
parent 1df8fe258e
commit da558ddceb

View file

@ -333,13 +333,44 @@ class Peer {
// evaluate auto accept
this._evaluateAutoAccept();
Events.on('beforeunload', e => this._onBeforeUnload(e));
Events.on('pagehide', _ => this._onPageHide());
}
_onServerSignalMessage(message) {}
_reset() {
this._state = 'idle';
this._busy = false;
this._chunker = null;
this._pendingRequest = null;
this._acceptedRequest = null;
this._digester = null;
this._filesReceived = [];
this._totalBytesReceived = 0;
}
_refresh() {}
_onDisconnected() {}
_disconnect() {
Events.fire('peer-disconnected', this._peerId);
}
_onDisconnected() {
this._reset();
}
_onBeforeUnload(e) {
if (this._busy) {
e.preventDefault();
return Localization.getTranslation("notifications.unfinished-transfers-warning");
}
}
_onPageHide() {
this._disconnect();
}
_onServerSignalMessage(message) {}
_setIsCaller(isCaller) {
this._isCaller = isCaller;
@ -659,14 +690,7 @@ class Peer {
_abortTransfer() {
Events.fire('set-progress', {peerId: this._peerId, progress: 0, status: null});
this._state = 'idle';
this._busy = false;
this._chunker = null;
this._pendingRequest = null;
this._acceptedRequest = null;
this._digester = null;
this._filesReceived = [];
this._totalBytesReceived = 0;
this._reset();
}
_onChunkReceived(chunk) {
@ -886,9 +910,6 @@ class RTCPeer extends Peer {
this.pendingInboundMessages = [];
this.pendingOutboundMessages = [];
Events.on('beforeunload', e => this._onBeforeUnload(e));
Events.on('pagehide', _ => this._onPageHide());
this._connect();
}
@ -1137,9 +1158,6 @@ class RTCPeer extends Peer {
}
}
_disconnect() {
Events.fire('peer-disconnected', this._peerId);
}
_refresh() {
Events.fire('peer-connecting', this._peerId);
@ -1149,6 +1167,7 @@ class RTCPeer extends Peer {
}
_onDisconnected() {
super._onDisconnected();
this._closeChannelAndConnection();
}
@ -1184,17 +1203,6 @@ class RTCPeer extends Peer {
this.remoteIceCandidatesReceived = false;
}
_onBeforeUnload(e) {
if (this._busy) {
e.preventDefault();
return Localization.getTranslation("notifications.unfinished-transfers-warning");
}
}
_onPageHide() {
this._disconnect();
}
_sendMessage(message) {
if (!this._stable() || this.pendingOutboundMessages.length > 0) {
// queue messages if not connected OR if connected AND queue is not empty
@ -1368,6 +1376,7 @@ class WSPeer extends Peer {
}
_onDisconnected() {
super._onDisconnected();
this.signalSuccessful = false;
}