refactor(ui): add vue.js error handler
authorJérôme Benoit <jerome.benoit@sap.com>
Sat, 17 Feb 2024 12:44:20 +0000 (13:44 +0100)
committerJérôme Benoit <jerome.benoit@sap.com>
Sat, 17 Feb 2024 12:44:20 +0000 (13:44 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
ui/web/src/composables/UIClient.ts
ui/web/src/main.ts

index 0ed5d82e995474772f774f4082d9e207e7e0ea2c..4e7fb24970c86be3f25bd5ec139f9a9aef21d0c8 100644 (file)
@@ -124,6 +124,9 @@ export class UIClient {
       `${this.configuration.uiServer.secure === true ? ApplicationProtocol.WSS : ApplicationProtocol.WS}://${this.configuration.uiServer.host}:${this.configuration.uiServer.port}`,
       protocols
     )
+    this.ws.onopen = openEvent => {
+      console.info('WebSocket opened', openEvent)
+    }
     this.ws.onmessage = this.responseHandler.bind(this)
     this.ws.onerror = errorEvent => {
       console.error('WebSocket error: ', errorEvent)
@@ -146,7 +149,7 @@ export class UIClient {
         const msg = JSON.stringify([uuid, procedureName, payload])
         const sendTimeout = setTimeout(() => {
           this.responseHandlers.delete(uuid)
-          return reject(new Error(`Send request '${procedureName}' message timeout`))
+          return reject(new Error(`Send request '${procedureName}' message: connection timeout`))
         }, 60000)
         try {
           this.ws.send(msg)
@@ -158,7 +161,7 @@ export class UIClient {
           clearTimeout(sendTimeout)
         }
       } else {
-        throw new Error(`Send request '${procedureName}' message: connection not opened`)
+        reject(new Error(`Send request '${procedureName}' message: connection closed`))
       }
     })
   }
index 1b4d7ac607a6177f9aa8d20e1704493c5f86003d..ac9c9e8244df59b63bc7f60465b05270c16decb3 100644 (file)
@@ -8,6 +8,12 @@ const app = createApp(App)
 fetch('/config.json')
   .then(response => response.json())
   .then(config => {
+    app.config.errorHandler = (error, instance, info) => {
+      console.error('Error:', error)
+      console.info('Vue instance:', instance)
+      console.info('Error info:', info)
+      // TODO: Add code for UI notifications or other error handling logic
+    }
     app.config.globalProperties.$UIClient = UIClient.getInstance(config)
     app.use(router).mount('#app')
   })