From 7a45e2090363dfe014d951fdd1713ecaad0f65de Mon Sep 17 00:00:00 2001 From: Nate Kelley Date: Thu, 7 Aug 2025 16:42:04 -0600 Subject: [PATCH] Add more error handling for get report --- apps/server/src/api/v2/reports/[id]/GET.ts | 11 +++++----- .../src/components/ui/metric/MetricCard.tsx | 4 +++- .../src/report/platejs-conversions.ts | 22 ++++++++++++------- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/apps/server/src/api/v2/reports/[id]/GET.ts b/apps/server/src/api/v2/reports/[id]/GET.ts index ce2c2b1af..9f4659676 100644 --- a/apps/server/src/api/v2/reports/[id]/GET.ts +++ b/apps/server/src/api/v2/reports/[id]/GET.ts @@ -9,15 +9,14 @@ export async function getReportHandler( reportId: string, user: { id: string } ): Promise { - const report = await getReport({ reportId, userId: user.id }); - try { + const report = await getReport({ reportId, userId: user.id }); + const platejsResult = await markdownToPlatejs(report.content); if (platejsResult.error) { - console.error('Error converting markdown to PlateJS:', platejsResult.error); throw new HTTPException(500, { - message: 'Error converting markdown to PlateJS', + message: `Error converting markdown to PlateJS: ${platejsResult.error.message}`, }); } @@ -30,9 +29,9 @@ export async function getReportHandler( return response; } catch (error) { - console.error('Error converting markdown to PlateJS:', error); + console.error('Error getting report:', error); throw new HTTPException(500, { - message: 'Error converting markdown', + message: `Error getting report: ${error instanceof Error ? error.message : 'Unknown error'}`, }); } } diff --git a/apps/web/src/components/ui/metric/MetricCard.tsx b/apps/web/src/components/ui/metric/MetricCard.tsx index 1ba4656b3..6848212ee 100644 --- a/apps/web/src/components/ui/metric/MetricCard.tsx +++ b/apps/web/src/components/ui/metric/MetricCard.tsx @@ -1,4 +1,4 @@ -import React, { useMemo } from 'react'; +import React from 'react'; import { Card, CardHeader } from '@/components/ui/card/CardBase'; import { MetricTitle } from './MetricTitle'; import type { BusterMetric, BusterMetricData } from '@/api/asset_interfaces/metric'; @@ -107,3 +107,5 @@ export const MetricCard = React.forwardRef< ); } ); + +MetricCard.displayName = 'MetricCard'; diff --git a/packages/server-utils/src/report/platejs-conversions.ts b/packages/server-utils/src/report/platejs-conversions.ts index d17eca7f9..3ba1ea3f9 100644 --- a/packages/server-utils/src/report/platejs-conversions.ts +++ b/packages/server-utils/src/report/platejs-conversions.ts @@ -3,16 +3,22 @@ import type { Descendant } from 'platejs'; import { SERVER_EDITOR } from './server-editor'; export const markdownToPlatejs = async (markdown: string) => { - const descendants = SERVER_EDITOR.api.markdown.deserialize(markdown); + try { + const descendants = SERVER_EDITOR.api.markdown.deserialize(markdown); - const safeParsedElements = ReportElementsSchema.safeParse(descendants); + const safeParsedElements = ReportElementsSchema.safeParse(descendants); - return { - error: safeParsedElements.error, - elements: safeParsedElements.data, - descendants, - markdown, - }; + return { + error: safeParsedElements.error, + elements: safeParsedElements.data, + }; + } catch (error) { + console.error('Error converting markdown to PlateJS:', error); + return { + error: error as Error, + elements: [], + }; + } }; export const platejsToMarkdown = async (elements: ReportElements): Promise => {