diff --git a/public/scripts/network.js b/public/scripts/network.js index 9d2a69e..4ca3aa6 100644 --- a/public/scripts/network.js +++ b/public/scripts/network.js @@ -38,6 +38,12 @@ class ServerConnection { _connect() { clearTimeout(this._reconnectTimer); if (this._isConnected() || this._isConnecting()) return; + if (this._isReconnect) { + Events.fire('notify-user', { + message: Localization.getTranslation("notifications.connecting"), + persistent: true + }); + } const ws = new WebSocket(this._endpoint()); ws.binaryType = 'arraybuffer'; ws.onopen = _ => this._onOpen(); @@ -221,12 +227,10 @@ class ServerConnection { _onDisconnect() { console.log('WS: server disconnected'); setTimeout(() => { - Events.fire('notify-user', Localization.getTranslation("notifications.connecting")); + this._isReconnect = true; + Events.fire('ws-disconnected'); + this._reconnectTimer = setTimeout(_ => this._connect(), 1000); }, 100); //delay for 100ms to prevent flickering on page reload - clearTimeout(this._reconnectTimer); - this._reconnectTimer = setTimeout(_ => this._connect(), 1000); - Events.fire('ws-disconnected'); - this._isReconnect = true; } _onVisibilityChange() { diff --git a/public/scripts/ui.js b/public/scripts/ui.js index f8bdf38..7af619a 100644 --- a/public/scripts/ui.js +++ b/public/scripts/ui.js @@ -2044,9 +2044,12 @@ class Toast extends Dialog { _onNotify(message) { if (this.hideTimeout) clearTimeout(this.hideTimeout); - this.$el.innerText = message; + this.$el.innerText = typeof message === "object" ? message.message : message; this.show(); - this.hideTimeout = setTimeout(_ => this.hide(), 5000); + + if (typeof message === "object" && message.persistent) return; + + this.hideTimeout = setTimeout(() => this.hide(), 5000); } } diff --git a/public_included_ws_fallback/scripts/network.js b/public_included_ws_fallback/scripts/network.js index 3329d37..9771f44 100644 --- a/public_included_ws_fallback/scripts/network.js +++ b/public_included_ws_fallback/scripts/network.js @@ -36,6 +36,12 @@ class ServerConnection { _connect() { clearTimeout(this._reconnectTimer); if (this._isConnected() || this._isConnecting()) return; + if (this._isReconnect) { + Events.fire('notify-user', { + message: Localization.getTranslation("notifications.connecting"), + persistent: true + }); + } const ws = new WebSocket(this._endpoint()); ws.binaryType = 'arraybuffer'; ws.onopen = _ => this._onOpen(); @@ -232,12 +238,10 @@ class ServerConnection { _onDisconnect() { console.log('WS: server disconnected'); setTimeout(() => { - Events.fire('notify-user', Localization.getTranslation("notifications.connecting")); + this._isReconnect = true; + Events.fire('ws-disconnected'); + this._reconnectTimer = setTimeout(_ => this._connect(), 1000); }, 100); //delay for 100ms to prevent flickering on page reload - clearTimeout(this._reconnectTimer); - this._reconnectTimer = setTimeout(_ => this._connect(), 1000); - Events.fire('ws-disconnected'); - this._isReconnect = true; } _onVisibilityChange() { diff --git a/public_included_ws_fallback/scripts/ui.js b/public_included_ws_fallback/scripts/ui.js index db2facc..6e1c6f9 100644 --- a/public_included_ws_fallback/scripts/ui.js +++ b/public_included_ws_fallback/scripts/ui.js @@ -2046,9 +2046,12 @@ class Toast extends Dialog { _onNotify(message) { if (this.hideTimeout) clearTimeout(this.hideTimeout); - this.$el.innerText = message; + this.$el.innerText = typeof message === "object" ? message.message : message; this.show(); - this.hideTimeout = setTimeout(_ => this.hide(), 5000); + + if (typeof message === "object" && message.persistent) return; + + this.hideTimeout = setTimeout(() => this.hide(), 5000); } }