Lazy load Statistics Modal

This commit is contained in:
Wavering Ana 2025-01-31 20:36:10 -05:00
parent 26e0a4f92f
commit 62feb55702
2 changed files with 20 additions and 14 deletions

View file

@ -1,3 +1,5 @@
import { lazy, Suspense } from 'react'
import { useEffect, useState } from 'react' import { useEffect, useState } from 'react'
import { Link } from '../types/api' import { Link } from '../types/api'
import { getAllLinks, deleteLink } from '../api/client' import { getAllLinks, deleteLink } from '../api/client'
@ -22,7 +24,7 @@ import {
DialogFooter, DialogFooter,
} from "@/components/ui/dialog" } from "@/components/ui/dialog"
import { StatisticsModal } from "./StatisticsModal" const StatisticsModal = lazy(() => import('./StatisticsModal'))
interface LinkListProps { interface LinkListProps {
refresh?: number; refresh?: number;
@ -186,11 +188,15 @@ export function LinkList({ refresh = 0 }: LinkListProps) {
</div> </div>
</CardContent> </CardContent>
</Card> </Card>
{statsModal.isOpen && (
<Suspense fallback={<div>Loading...</div>}>
<StatisticsModal <StatisticsModal
isOpen={statsModal.isOpen} isOpen={statsModal.isOpen}
onClose={() => setStatsModal({ isOpen: false, linkId: null })} onClose={() => setStatsModal({ isOpen: false, linkId: null })}
linkId={statsModal.linkId!} linkId={statsModal.linkId!}
/> />
</Suspense>
)}
</> </>
) )
} }

View file

@ -58,7 +58,7 @@ const CustomTooltip = ({
return null; return null;
}; };
export function StatisticsModal({ isOpen, onClose, linkId }: StatisticsModalProps) { export default function StatisticsModal({ isOpen, onClose, linkId }: StatisticsModalProps) {
const [clicksOverTime, setClicksOverTime] = useState<EnhancedClickStats[]>([]); const [clicksOverTime, setClicksOverTime] = useState<EnhancedClickStats[]>([]);
const [sourcesData, setSourcesData] = useState<SourceStats[]>([]); const [sourcesData, setSourcesData] = useState<SourceStats[]>([]);
const [loading, setLoading] = useState(true); const [loading, setLoading] = useState(true);