« get me outta code hell

client: report uncaught runtime errors in search worker - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/static/js/client.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2024-05-17 21:41:55 -0300
committer(quasar) nebula <qznebula@protonmail.com>2024-05-31 12:11:55 -0300
commit3fa1bdd574773e79f4861f6f3034fb9c4ec63ffe (patch)
treeb4b964990eecf013472b66958993704b980af381 /src/static/js/client.js
parent3d7d540611f7fb4870f6886392d2694f0c6003e6 (diff)
client: report uncaught runtime errors in search worker
Diffstat (limited to 'src/static/js/client.js')
-rw-r--r--src/static/js/client.js17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/static/js/client.js b/src/static/js/client.js
index 58f1acb9..9bef44a2 100644
--- a/src/static/js/client.js
+++ b/src/static/js/client.js
@@ -3455,6 +3455,7 @@ const wikiSearchInfo = initInfo('wikiSearchInfo', {
     whenWorkerAlive: [],
     whenWorkerReady: [],
     whenWorkerFailsToInitialize: [],
+    whenWorkerHasRuntimeError: [],
 
     whenDownloadBegins: [],
     whenDownloadsBegin: [],
@@ -3533,6 +3534,11 @@ function handleSearchWorkerStatusMessage(message) {
       dispatchInternalEvent(event, 'whenWorkerFailsToInitialize');
       break;
 
+    case 'runtime-error':
+      console.debug(`Search worker had an uncaught runtime error.`);
+      dispatchInternalEvent(event, 'whenWorkerHasRuntimeError');
+      break;
+
     default:
       console.warn(`Unknown status "${message.data.status}" <- from search worker`);
       break;
@@ -3782,6 +3788,10 @@ function addSidebarSearchInternalListeners() {
     trackSidebarSearchWorkerFailsToInitialize,
     updateSidebarSearchStatus);
 
+  wikiSearchInfo.event.whenWorkerHasRuntimeError.push(
+    trackSidebarSearchWorkerHasRuntimeError,
+    updateSidebarSearchStatus);
+
   wikiSearchInfo.event.whenDownloadsBegin.push(
     trackSidebarSearchDownloadsBegin,
     updateSidebarSearchStatus);
@@ -3973,6 +3983,13 @@ function trackSidebarSearchWorkerFailsToInitialize() {
   state.searchStage = 'failed';
 }
 
+function trackSidebarSearchWorkerHasRuntimeError() {
+  const {state} = sidebarSearchInfo;
+
+  state.workerStatus = 'failed';
+  state.searchStage = 'failed';
+}
+
 function trackSidebarSearchDownloadsBegin(event) {
   const {state} = sidebarSearchInfo;