From c6ddf6d8988af611cfe778a397d08d7aa053a0bc Mon Sep 17 00:00:00 2001 From: "sentry[bot]" <39604003+sentry[bot]@users.noreply.github.com> Date: Fri, 10 Jul 2026 22:38:14 +0000 Subject: [PATCH] fix(detectors): Safely access queryObj for cron monitors --- .../app/views/detectors/components/detectorLink.tsx | 6 +++++- static/app/views/detectors/list/cron.tsx | 11 ++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/static/app/views/detectors/components/detectorLink.tsx b/static/app/views/detectors/components/detectorLink.tsx index 6b0cb8e091bc..d21322284a27 100644 --- a/static/app/views/detectors/components/detectorLink.tsx +++ b/static/app/views/detectors/components/detectorLink.tsx @@ -214,7 +214,11 @@ function UptimeDetectorDetails({detector}: {detector: UptimeDetector}) { } function CronDetectorDetails({detector}: {detector: CronDetector}) { - const config = detector.dataSources[0].queryObj.config; + const config = detector.dataSources[0]?.queryObj?.config; + + if (!config) { + return null; + } return {scheduleAsText(config)}; } diff --git a/static/app/views/detectors/list/cron.tsx b/static/app/views/detectors/list/cron.tsx index 8c3be5297043..ff6b3ec04532 100644 --- a/static/app/views/detectors/list/cron.tsx +++ b/static/app/views/detectors/list/cron.tsx @@ -52,15 +52,16 @@ import {selectCheckInData} from 'sentry/views/insights/crons/utils/selectCheckIn import {useMonitorStats} from 'sentry/views/insights/crons/utils/useMonitorStats'; function VisualizationCell({detector}: {detector: CronDetector}) { - const cronId = detector.dataSources[0].queryObj.id; - const cronEnvironments = detector.dataSources[0].queryObj.environments; + const queryObj = detector.dataSources[0]?.queryObj; + const cronId = queryObj?.id; + const cronEnvironments = queryObj?.environments; const elementRef = useRef(null); const {width: containerWidth} = useDimensions({elementRef}); const timelineWidth = useDebouncedValue(containerWidth, 1000); const timeWindowConfig = useTimeWindowConfig({timelineWidth}); const {data: monitorStats, isPending} = useMonitorStats({ - monitors: [detector.dataSources[0].queryObj.id], + monitors: cronId ? [cronId] : [], timeWindowConfig, }); @@ -72,7 +73,7 @@ function VisualizationCell({detector}: {detector: CronDetector}) { height="100%" > - {cronEnvironments.map(environment => { + {cronEnvironments?.map(environment => { if (isPending) { return ; } @@ -108,7 +109,7 @@ const ADDITIONAL_COLUMNS: MonitorListAdditionalColumn[] = [ return ( - {detector.dataSources[0].queryObj.environments.map(environment => { + {detector.dataSources[0]?.queryObj?.environments.map(environment => { return (