From da558ddceb30d21793390c0befb64ca72df96842 Mon Sep 17 00:00:00 2001 From: schlagmichdoch Date: Tue, 13 Feb 2024 20:14:22 +0100 Subject: [PATCH] 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 --- public/scripts/network.js | 63 ++++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 27 deletions(-) diff --git a/public/scripts/network.js b/public/scripts/network.js index 5b73cb4..2154ed1 100644 --- a/public/scripts/network.js +++ b/public/scripts/network.js @@ -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; }