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