From 5a8d0432ff3ca752d3769fe18b315d706e3ba5b3 Mon Sep 17 00:00:00 2001 From: mannilakash Date: Wed, 1 Apr 2026 12:45:43 -0400 Subject: [PATCH] fix: naming conventions changes and using more native props --- client/src/Pages/StatusPage/Create/index.tsx | 6 ++-- .../Status/Components/PageSpeedMetrics.tsx | 31 ++++++++++++------- client/src/Types/StatusPage.ts | 6 ++-- client/src/Validation/statusPage.ts | 4 +-- 4 files changed, 27 insertions(+), 20 deletions(-) diff --git a/client/src/Pages/StatusPage/Create/index.tsx b/client/src/Pages/StatusPage/Create/index.tsx index f8bef618d..f127fb852 100644 --- a/client/src/Pages/StatusPage/Create/index.tsx +++ b/client/src/Pages/StatusPage/Create/index.tsx @@ -28,7 +28,7 @@ import { useStatusPageForm } from "@/Hooks/useStatusPageForm"; import type { StatusPageFormData } from "@/Validation/statusPage"; import { useGet, usePost, usePut, useDelete } from "@/Hooks/UseApi"; import type { Monitor } from "@/Types/Monitor"; -import type { MonitorDisplayType, StatusPageResponse } from "@/Types/StatusPage"; +import type { StatusPageType, StatusPageResponse } from "@/Types/StatusPage"; import { getMonitorTypeLabel } from "@/Types/StatusPage"; import timezones from "@/Utils/timezones.json"; import { useNavigate, useParams } from "react-router-dom"; @@ -101,12 +101,12 @@ const CreateStatusPage = () => { }, [defaults, reset]); const watchedMonitorIds: string[] = form.watch("monitors") ?? []; - const computedTypes: MonitorDisplayType[] = useMemo(() => { + const computedTypes: StatusPageType[] = useMemo(() => { const selectedMonitors = (watchedMonitorIds ?? []) .map((id) => monitors.find((m) => m.id === id)) .filter((m): m is Monitor => m !== undefined); - const typesSet = new Set(); + const typesSet = new Set(); selectedMonitors.forEach((m) => { if (m.type === "hardware") typesSet.add("infrastructure"); else if (m.type === "pagespeed") typesSet.add("pagespeed"); diff --git a/client/src/Pages/StatusPage/Status/Components/PageSpeedMetrics.tsx b/client/src/Pages/StatusPage/Status/Components/PageSpeedMetrics.tsx index 3b658a33f..ca3eb6240 100644 --- a/client/src/Pages/StatusPage/Status/Components/PageSpeedMetrics.tsx +++ b/client/src/Pages/StatusPage/Status/Components/PageSpeedMetrics.tsx @@ -15,6 +15,13 @@ interface StatusPageMonitor extends Monitor { checks?: Monitor["recentChecks"]; } +interface PageSpeedCheck { + performance: number; + accessibility: number; + bestPractices: number; + seo: number; +} + interface MetricConfig { key: string; label: string; @@ -26,13 +33,13 @@ const MetricItem = ({ label, progress }: MetricConfig) => { return ( { }; const buildMetrics = ( - check: NonNullable[number], + check: PageSpeedCheck, t: (key: string) => string ): MetricConfig[] => [ { key: "performance", label: t("pages.statusPages.monitorsList.pagespeed.performance"), - progress: check.performance ?? 0, + progress: check.performance, }, { key: "accessibility", label: t("pages.statusPages.monitorsList.pagespeed.accessibility"), - progress: check.accessibility ?? 0, + progress: check.accessibility, }, { key: "bestPractices", label: t("pages.statusPages.monitorsList.pagespeed.bestPractices"), - progress: check.bestPractices ?? 0, + progress: check.bestPractices, }, { key: "seo", label: t("pages.statusPages.monitorsList.pagespeed.seo"), - progress: check.seo ?? 0, + progress: check.seo, }, ]; @@ -102,7 +109,7 @@ export const PageSpeedMetrics = ({ monitor }: { monitor: StatusPageMonitor }) => ); } - const metrics = buildMetrics(latestCheck, t); + const metrics = buildMetrics(latestCheck as PageSpeedCheck, t); return ( > = { http: "pages.common.monitors.monitorTypes.optionHttp", @@ -26,7 +26,7 @@ export interface StatusPage { id: string; userId: string; teamId: string; - type: MonitorDisplayType[]; + type: StatusPageType[]; companyName: string; url: string; timezone?: string; diff --git a/client/src/Validation/statusPage.ts b/client/src/Validation/statusPage.ts index beffa98be..28b6671eb 100644 --- a/client/src/Validation/statusPage.ts +++ b/client/src/Validation/statusPage.ts @@ -1,5 +1,5 @@ import { z } from "zod"; -import { MONITOR_DISPLAY_TYPES } from "@/Types/StatusPage"; +import { StatusPageTypes } from "@/Types/StatusPage"; export const statusPageSchema = z.object({ companyName: z @@ -15,7 +15,7 @@ export const statusPageSchema = z.object({ "URL can only contain lowercase letters, numbers, and hyphens" ), timezone: z.string().optional(), - type: z.array(z.enum(MONITOR_DISPLAY_TYPES)).min(1, "At least one type is required"), + type: z.array(z.enum(StatusPageTypes)).min(1, "At least one type is required"), color: z.string().min(1, "Color is required"), monitors: z.array(z.string()).min(1, "At least one monitor is required"), isPublished: z.boolean(),