diff options
Diffstat (limited to 'web_src/js/features/notification.js')
-rw-r--r-- | web_src/js/features/notification.js | 72 |
1 files changed, 35 insertions, 37 deletions
diff --git a/web_src/js/features/notification.js b/web_src/js/features/notification.js index b0cc1cda44..a0793d2286 100644 --- a/web_src/js/features/notification.js +++ b/web_src/js/features/notification.js @@ -43,53 +43,51 @@ export async function initNotificationCount() { return; } - if (NotificationSettings.EventSourceUpdateTime > 0 && !!window.EventSource) { + if (NotificationSettings.EventSourceUpdateTime > 0 && !!window.EventSource && window.SharedWorker) { // Try to connect to the event source via the shared worker first - if (window.SharedWorker) { - const worker = new SharedWorker(`${__webpack_public_path__}js/eventsource.sharedworker.js`, 'notification-worker'); - worker.addEventListener('error', (event) => { + const worker = new SharedWorker(`${__webpack_public_path__}js/eventsource.sharedworker.js`, 'notification-worker'); + worker.addEventListener('error', (event) => { + console.error(event); + }); + worker.port.onmessageerror = () => { + console.error('Unable to deserialize message'); + }; + worker.port.postMessage({ + type: 'start', + url: `${window.location.origin}${AppSubUrl}/user/events`, + }); + worker.port.addEventListener('message', (event) => { + if (!event.data || !event.data.type) { console.error(event); - }); - worker.port.onmessageerror = () => { - console.error('Unable to deserialize message'); - }; - worker.port.postMessage({ - type: 'start', - url: `${window.location.origin}${AppSubUrl}/user/events`, - }); - worker.port.addEventListener('message', (event) => { - if (!event.data || !event.data.type) { - console.error(event); + return; + } + if (event.data.type === 'notification-count') { + receiveUpdateCount(event.data); + } else if (event.data.type === 'error') { + console.error(event.data); + } else if (event.data.type === 'logout') { + if (event.data !== 'here') { return; } - if (event.data.type === 'notification-count') { - receiveUpdateCount(event.data); - } else if (event.data.type === 'error') { - console.error(event.data); - } else if (event.data.type === 'logout') { - if (event.data !== 'here') { - return; - } - worker.port.postMessage({ - type: 'close', - }); - worker.port.close(); - window.location.href = AppSubUrl; - } - }); - worker.port.addEventListener('error', (e) => { - console.error(e); - }); - worker.port.start(); - window.addEventListener('beforeunload', () => { worker.port.postMessage({ type: 'close', }); worker.port.close(); + window.location.href = AppSubUrl; + } + }); + worker.port.addEventListener('error', (e) => { + console.error(e); + }); + worker.port.start(); + window.addEventListener('beforeunload', () => { + worker.port.postMessage({ + type: 'close', }); + worker.port.close(); + }); - return; - } + return; } if (NotificationSettings.MinTimeout <= 0) { |