From 7662d54c1458c0dde10826ed496d22d122c57835 Mon Sep 17 00:00:00 2001 From: Koper Date: Thu, 31 Aug 2023 20:02:04 +0700 Subject: [PATCH] Added sentry logging --- www/app/(errors)/handleError.ts | 17 +++++++++++++++++ www/app/transcripts/useTranscript.ts | 3 ++- www/app/transcripts/useWebRTC.ts | 17 +++++++++++++---- www/app/transcripts/useWebSockets.ts | 19 +++++++++++++++---- 4 files changed, 47 insertions(+), 9 deletions(-) create mode 100644 www/app/(errors)/handleError.ts diff --git a/www/app/(errors)/handleError.ts b/www/app/(errors)/handleError.ts new file mode 100644 index 00000000..09226dda --- /dev/null +++ b/www/app/(errors)/handleError.ts @@ -0,0 +1,17 @@ +import * as Sentry from "@sentry/react"; + +const handleError = ( + setError: Function, + errorString: string, + errorObj?: any, +) => { + setError(errorString); + + if (errorObj) { + Sentry.captureException(errorObj); + } else { + Sentry.captureMessage(errorString); + } +}; + +export default handleError; diff --git a/www/app/transcripts/useTranscript.ts b/www/app/transcripts/useTranscript.ts index 8b50c889..cc0d4bde 100644 --- a/www/app/transcripts/useTranscript.ts +++ b/www/app/transcripts/useTranscript.ts @@ -2,6 +2,7 @@ import { useEffect, useState } from "react"; import { DefaultApi, V1TranscriptsCreateRequest } from "../api/apis/DefaultApi"; import { GetTranscript } from "../api"; import { useError } from "../(errors)/errorContext"; +import handleError from "../(errors)/handleError"; type UseTranscript = { response: GetTranscript | null; @@ -37,7 +38,7 @@ const useTranscript = (api: DefaultApi): UseTranscript => { }) .catch((err) => { const errorString = err.response || err.message || "Unknown error"; - setError(errorString); + handleError(setError, errorString, err); setLoading(false); console.error("Error creating transcript:", errorString); }); diff --git a/www/app/transcripts/useWebRTC.ts b/www/app/transcripts/useWebRTC.ts index 387c5ac4..c5b55315 100644 --- a/www/app/transcripts/useWebRTC.ts +++ b/www/app/transcripts/useWebRTC.ts @@ -5,6 +5,7 @@ import { V1TranscriptRecordWebrtcRequest, } from "../api/apis/DefaultApi"; import { useError } from "../(errors)/errorContext"; +import handleError from "../(errors)/handleError"; const useWebRTC = ( stream: MediaStream | null, @@ -24,12 +25,16 @@ const useWebRTC = ( try { p = new Peer({ initiator: true, stream: stream }); } catch (error) { - setError(`Failed to create WebRTC Peer: ${error.message}`); + handleError( + setError, + `Failed to create WebRTC Peer: ${error.message}`, + error, + ); return; } p.on("error", (err) => { - setError(`WebRTC error: ${err.message}`); + handleError(setError, `WebRTC error: ${err.message}`, err); }); p.on("signal", (data: any) => { @@ -48,14 +53,18 @@ const useWebRTC = ( try { p.signal(answer); } catch (error) { - setError(`Failed to signal answer: ${error.message}`); + handleError( + setError, + `Failed to signal answer: ${error.message}`, + error, + ); } }) .catch((err) => { const errorString = "WebRTC signaling error: " + (err.response || err.message || "Unknown error"); - setError(errorString); + handleError(setError, errorString, err); console.error(errorString); }); } diff --git a/www/app/transcripts/useWebSockets.ts b/www/app/transcripts/useWebSockets.ts index ce8b2ea3..f058f91f 100644 --- a/www/app/transcripts/useWebSockets.ts +++ b/www/app/transcripts/useWebSockets.ts @@ -1,6 +1,7 @@ import { useEffect, useState } from "react"; import { Topic, FinalSummary, Status } from "./webSocketTypes"; import { useError } from "../(errors)/errorContext"; +import handleError from "../(errors)/handleError"; type UseWebSockets = { transcriptText: string; @@ -106,22 +107,32 @@ export const useWebSockets = (transcriptId: string | null): UseWebSockets => { default: console.error("Unknown event:", message.event); - setError(`Received unknown WebSocket event: ${message.event}`); + handleError( + useError, + `Received unknown WebSocket event: ${message.event}`, + ); } } catch (error) { - setError(`Failed to process WebSocket message: ${error.message}`); + handleError( + useError, + `Failed to process WebSocket message: ${error.message}`, + error, + ); } }; ws.onerror = (error) => { console.error("WebSocket error:", error); - setError("A WebSocket error occurred."); + handleError(useError, "A WebSocket error occurred.", error); }; ws.onclose = (event) => { console.debug("WebSocket connection closed"); if (event.code !== 1000) { - setError(`WebSocket closed unexpectedly with code: ${event.code}`); + handleError( + useError, + `WebSocket closed unexpectedly with code: ${event.code}`, + ); } };