From bcf6103da323c160c1f424ba64ae14f812ca2511 Mon Sep 17 00:00:00 2001 From: Louis Date: Sun, 11 Feb 2024 15:44:53 +0700 Subject: [PATCH] fix: app fails gracefully with clear error messages (#1993) --- electron/handlers/update.ts | 2 +- .../src/helpers/sse.ts | 2 +- web/app/error.tsx | 90 +++++++++++++++++++ 3 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 web/app/error.tsx diff --git a/electron/handlers/update.ts b/electron/handlers/update.ts index cbb34c22b..cfd738f78 100644 --- a/electron/handlers/update.ts +++ b/electron/handlers/update.ts @@ -36,7 +36,7 @@ export function handleAppUpdates() { autoUpdater.on('error', (info: any) => { WindowManager.instance.currentWindow?.webContents.send( AppEvent.onAppUpdateDownloadError, - {} + info ) }) diff --git a/extensions/inference-openai-extension/src/helpers/sse.ts b/extensions/inference-openai-extension/src/helpers/sse.ts index fb75816e7..554d3b1f7 100644 --- a/extensions/inference-openai-extension/src/helpers/sse.ts +++ b/extensions/inference-openai-extension/src/helpers/sse.ts @@ -41,7 +41,7 @@ export function requestInference( .then(async (response) => { if (!response.ok) { subscriber.next( - (await response.json()).error?.message ?? "Error occured" + (await response.json()).error?.message ?? "Error occurred." ); subscriber.complete(); return; diff --git a/web/app/error.tsx b/web/app/error.tsx new file mode 100644 index 000000000..f8993b898 --- /dev/null +++ b/web/app/error.tsx @@ -0,0 +1,90 @@ +'use client' // Error components must be Client Components + +import { useEffect, useState } from 'react' + +export default function Error({ + error, + reset, +}: { + error: Error & { digest?: string } + reset: () => void +}) { + const [showFull, setShowFull] = useState(false) + useEffect(() => { + // Log the error to an error reporting service + console.error(error) + }, [error]) + + return ( + <> +
+
+
+
+ + + + +
+
+

+ Oops! Unexpected error occurred. +

+

+ Something went wrong. Try to{' '} + {' '} + or
feel free to{' '} + + contact us + {' '} + if the problem presists. +

+
+ Error: + {error.message} +
+
+                {showFull ? error.stack : error.stack?.slice(0, 200)}
+              
+ +
+
+
+
+ + ) +}