From edfeba043faf5b9c023519a745ee1803de03a5b2 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Tue, 14 Apr 2026 08:50:50 +0000 Subject: [PATCH] Fixing build errors --- .../(portfolio)/reporting/BreakdownChart.tsx | 14 +++++++------- .../reporting/ScenarioMeasuresModal.tsx | 2 +- .../portfolio/[slug]/components/PropertyTable.tsx | 9 ++++++--- .../portfolio/[slug]/components/SuccessToast.tsx | 2 +- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/app/portfolio/[slug]/(portfolio)/reporting/BreakdownChart.tsx b/src/app/portfolio/[slug]/(portfolio)/reporting/BreakdownChart.tsx index 173e3c7..0fb720e 100644 --- a/src/app/portfolio/[slug]/(portfolio)/reporting/BreakdownChart.tsx +++ b/src/app/portfolio/[slug]/(portfolio)/reporting/BreakdownChart.tsx @@ -20,6 +20,12 @@ import { import type { EpcBandCount, AgeBandCount, PropertyTypeCount } from "./types"; +const friendlyKeys = { + actual: "Actual EPCs", + estimated: "Estimated EPCs", + scenario: "Scenario result", +}; + export function BreakdownChart({ epcBands, ageBands, @@ -33,12 +39,6 @@ export function BreakdownChart({ }) { const [selected, setSelected] = useState("epc"); - const friendlyKeys = { - actual: "Actual EPCs", - estimated: "Estimated EPCs", - scenario: "Scenario result", - }; - const chartData = useMemo(() => { if (selected !== "epc") { return selected === "age" @@ -73,7 +73,7 @@ export function BreakdownChart({ } return rows; - }, [selected, epcBands, ageBands, propertyTypes, scenarioEpcBands]); + }, [selected, epcBands, ageBands, propertyTypes, scenarioEpcBands, friendlyKeys.actual, friendlyKeys.estimated, friendlyKeys.scenario]); const categories = selected === "epc" diff --git a/src/app/portfolio/[slug]/(portfolio)/reporting/ScenarioMeasuresModal.tsx b/src/app/portfolio/[slug]/(portfolio)/reporting/ScenarioMeasuresModal.tsx index cb34694..43961b3 100644 --- a/src/app/portfolio/[slug]/(portfolio)/reporting/ScenarioMeasuresModal.tsx +++ b/src/app/portfolio/[slug]/(portfolio)/reporting/ScenarioMeasuresModal.tsx @@ -179,7 +179,7 @@ export function ScenarioMeasuresModal({ data, error, }: ScenarioMeasuresModalProps) { - const measures: ScenarioMeasure[] = data?.measures ?? []; + const measures = useMemo(() => data?.measures ?? [], [data?.measures]); const grouped = useMemo(() => groupMeasuresByCategory(measures), [measures]); diff --git a/src/app/portfolio/[slug]/components/PropertyTable.tsx b/src/app/portfolio/[slug]/components/PropertyTable.tsx index d86e4b5..5e34583 100644 --- a/src/app/portfolio/[slug]/components/PropertyTable.tsx +++ b/src/app/portfolio/[slug]/components/PropertyTable.tsx @@ -146,7 +146,7 @@ function EmptyPropertyState() {

- Hover over "New Property" to start adding properties + Hover over “New Property” to start adding properties to your portfolio.

@@ -388,7 +388,7 @@ export default function PropertyTable({ filterGroups: allFilterGroups, }); - const queryData = filteredResponse?.data ?? []; + const queryData = useMemo(() => filteredResponse?.data ?? [], [filteredResponse?.data]); const filteredTotal = filteredResponse?.total ?? 0; // Second query for total (no filters) — React Query dedupes when filters are empty @@ -412,7 +412,10 @@ export default function PropertyTable({ rows: PropertyWithRelations[]; }>({ filterKey: "", rows: [] }); - const extraRows = extraState.filterKey === filterKey ? extraState.rows : []; + const extraRows = useMemo( + () => (extraState.filterKey === filterKey ? extraState.rows : []), + [extraState, filterKey], + ); // The full data visible to the table — initial batch + any lazy-loaded rows const tableData = useMemo( diff --git a/src/app/portfolio/[slug]/components/SuccessToast.tsx b/src/app/portfolio/[slug]/components/SuccessToast.tsx index 20567a5..5e43601 100644 --- a/src/app/portfolio/[slug]/components/SuccessToast.tsx +++ b/src/app/portfolio/[slug]/components/SuccessToast.tsx @@ -33,7 +33,7 @@ export default function SuccessToast({ }, timeoutMs); return () => clearTimeout(timer); } - }, [show, onClose]); + }, [show, onClose, showConfetti, timeoutMs]); return ( <>