From 273008adc6737f8d4d1d95d92651c0e5af1e03af Mon Sep 17 00:00:00 2001 From: Nate Kelley Date: Sat, 20 Sep 2025 14:16:04 -0600 Subject: [PATCH] silence error handler --- .../metrics/getMetricQueryRequests.ts | 7 ++++--- .../api/buster_rest/reports/queryRequests.ts | 4 +++- .../repsonse-helpers/silenece-asset-errors.ts | 20 +++++++++++++++++++ apps/web/src/controllers/AppAssetNotFound.tsx | 2 +- apps/web/src/controllers/AppNoPageAccess.tsx | 2 +- .../useGetAssetPasswordConfig.ts | 10 ++++++++++ 6 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 apps/web/src/api/repsonse-helpers/silenece-asset-errors.ts diff --git a/apps/web/src/api/buster_rest/metrics/getMetricQueryRequests.ts b/apps/web/src/api/buster_rest/metrics/getMetricQueryRequests.ts index 084d594c9..d1157a116 100644 --- a/apps/web/src/api/buster_rest/metrics/getMetricQueryRequests.ts +++ b/apps/web/src/api/buster_rest/metrics/getMetricQueryRequests.ts @@ -186,6 +186,8 @@ export const useGetMetricData = ( return useQuery({ ...metricsQueryKeys.metricsGetData(id || '', versionNumberProp || 'LATEST'), queryFn, + select: params?.select, + ...params, enabled: () => { return ( !!id && @@ -193,11 +195,10 @@ export const useGetMetricData = ( !isErrorMetric && !!metricId && !!dataUpdatedAt && - !!selectedVersionNumber + !!selectedVersionNumber && + params?.enabled !== false ); }, - select: params?.select, - ...params, }); }; diff --git a/apps/web/src/api/buster_rest/reports/queryRequests.ts b/apps/web/src/api/buster_rest/reports/queryRequests.ts index 99323a3b2..a9e082b09 100644 --- a/apps/web/src/api/buster_rest/reports/queryRequests.ts +++ b/apps/web/src/api/buster_rest/reports/queryRequests.ts @@ -9,6 +9,7 @@ import { import { create } from 'mutative'; import { collectionQueryKeys } from '@/api/query_keys/collection'; import { reportsQueryKeys } from '@/api/query_keys/reports'; +import { silenceAssetErrors } from '@/api/repsonse-helpers/silenece-asset-errors'; import type { RustApiError } from '../../errors'; import { useAddAssetToCollection, @@ -72,7 +73,6 @@ export const prefetchGetReport = async ( report_version_number: number | undefined ) => { const version_number = report_version_number || 'LATEST'; - const queryKey = reportsQueryKeys.reportsGetReport(reportId, version_number)?.queryKey; const existingData = queryClient.getQueryData(queryKey); if (!existingData) { @@ -83,6 +83,7 @@ export const prefetchGetReport = async ( id: reportId, version_number: typeof version_number === 'number' ? version_number : undefined, }), + retry: silenceAssetErrors, }); } @@ -116,6 +117,7 @@ export const useGetReport = ( enabled: !!id, select: options?.select, ...options, + retry: silenceAssetErrors, }); }; diff --git a/apps/web/src/api/repsonse-helpers/silenece-asset-errors.ts b/apps/web/src/api/repsonse-helpers/silenece-asset-errors.ts new file mode 100644 index 000000000..6a5dc48be --- /dev/null +++ b/apps/web/src/api/repsonse-helpers/silenece-asset-errors.ts @@ -0,0 +1,20 @@ +import { openErrorNotification } from '@/context/BusterNotifications'; +import type { RustApiError } from '../errors'; + +export const silenceAssetErrors = (_count: number, error: RustApiError): boolean => { + if (error.status === 418) { + return false; + } + + if (error.status === 410) { + return false; + } + + if (error.status === 403) { + return false; + } + + openErrorNotification(error); + + return false; +}; diff --git a/apps/web/src/controllers/AppAssetNotFound.tsx b/apps/web/src/controllers/AppAssetNotFound.tsx index 26fafc3d7..d7622752e 100644 --- a/apps/web/src/controllers/AppAssetNotFound.tsx +++ b/apps/web/src/controllers/AppAssetNotFound.tsx @@ -16,7 +16,7 @@ export const AppAssetNotFound: React.FC<{ console.info('AppAssetNotFound for asset:', assetId, 'and type:', type); }); return ( -
+
diff --git a/apps/web/src/controllers/AppNoPageAccess.tsx b/apps/web/src/controllers/AppNoPageAccess.tsx index 26a128707..cef0c2a0a 100644 --- a/apps/web/src/controllers/AppNoPageAccess.tsx +++ b/apps/web/src/controllers/AppNoPageAccess.tsx @@ -50,7 +50,7 @@ export const AppNoPageAccess: React.FC<{ }, [isAnonymousUser]); return ( -
+
diff --git a/apps/web/src/layouts/AppAssetCheckLayout/useGetAssetPasswordConfig.ts b/apps/web/src/layouts/AppAssetCheckLayout/useGetAssetPasswordConfig.ts index 5ea25c601..15f0d495a 100644 --- a/apps/web/src/layouts/AppAssetCheckLayout/useGetAssetPasswordConfig.ts +++ b/apps/web/src/layouts/AppAssetCheckLayout/useGetAssetPasswordConfig.ts @@ -59,6 +59,16 @@ const getAssetAccess = ( }; } + if (typeof error?.status === 'number') { + return { + hasAccess: false, + passwordRequired: false, + isPublic: false, + isDeleted: false, + isFetched, + }; + } + return { hasAccess: true, passwordRequired: false,