From 45577d5cfadfeeee3e0aebaf26b3dfc9a3c13150 Mon Sep 17 00:00:00 2001 From: Usman Baig Date: Wed, 4 Feb 2026 23:29:32 +0100 Subject: [PATCH] refactor: optimize data loading in FunnelsPage and FunnelReportPage by utilizing useCallback for improved performance and dependency management --- app/sites/[id]/funnels/[funnelId]/page.tsx | 34 +++++++++++----------- app/sites/[id]/funnels/new/page.tsx | 1 - app/sites/[id]/funnels/page.tsx | 10 +++---- 3 files changed, 21 insertions(+), 24 deletions(-) diff --git a/app/sites/[id]/funnels/[funnelId]/page.tsx b/app/sites/[id]/funnels/[funnelId]/page.tsx index 5574fd7..ac1b729 100644 --- a/app/sites/[id]/funnels/[funnelId]/page.tsx +++ b/app/sites/[id]/funnels/[funnelId]/page.tsx @@ -1,12 +1,10 @@ 'use client' -import { useAuth } from '@/lib/auth/context' -import { useEffect, useState } from 'react' +import { useCallback, useEffect, useMemo, useState } from 'react' import { useParams, useRouter } from 'next/navigation' import { getFunnel, getFunnelStats, deleteFunnel, type Funnel, type FunnelStats } from '@/lib/api/funnels' import { toast, LoadingOverlay, Select, DatePicker, ChevronLeftIcon, ArrowRightIcon, TrashIcon, useTheme } from '@ciphera-net/ui' import Link from 'next/link' -import { useMemo } from 'react' import { BarChart, Bar, @@ -45,9 +43,10 @@ export default function FunnelReportPage() { const [stats, setStats] = useState(null) const [loading, setLoading] = useState(true) const [dateRange, setDateRange] = useState(getDateRange(30)) + const [datePreset, setDatePreset] = useState<'7' | '30' | 'custom'>('30') const [isDatePickerOpen, setIsDatePickerOpen] = useState(false) - const loadData = async () => { + const loadData = useCallback(async () => { try { setLoading(true) const [funnelData, statsData] = await Promise.all([ @@ -61,11 +60,11 @@ export default function FunnelReportPage() { } finally { setLoading(false) } - } + }, [siteId, funnelId, dateRange]) useEffect(() => { loadData() - }, [siteId, funnelId, dateRange]) + }, [loadData]) const { resolvedTheme } = useTheme() const chartColors = useMemo( @@ -129,17 +128,17 @@ export default function FunnelReportPage() {