From 683a4821f3e7bc683367e1f73cd16054838c86ae Mon Sep 17 00:00:00 2001 From: Julien Froidefond Date: Sun, 16 Feb 2025 15:31:04 +0100 Subject: [PATCH] feat(sidebar): no more load on pageload, but on click --- src/components/layout/Sidebar.tsx | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/components/layout/Sidebar.tsx b/src/components/layout/Sidebar.tsx index 2a9b4a6..2d6642d 100644 --- a/src/components/layout/Sidebar.tsx +++ b/src/components/layout/Sidebar.tsx @@ -23,6 +23,7 @@ export function Sidebar({ isOpen, onClose }: SidebarProps) { const [isLoading, setIsLoading] = useState(true); const [isRefreshing, setIsRefreshing] = useState(false); const [isLoadingFavorites, setIsLoadingFavorites] = useState(true); + const [hasLoadedData, setHasLoadedData] = useState(false); const fetchLibraries = useCallback(async () => { setIsLoading(true); @@ -74,16 +75,21 @@ export function Sidebar({ isOpen, onClose }: SidebarProps) { } }, []); - // Chargement initial des données + // Chargement des données à l'ouverture de la sidebar useEffect(() => { - fetchLibraries(); - fetchFavorites(); - }, [fetchLibraries, fetchFavorites]); + if (isOpen && !hasLoadedData) { + fetchLibraries(); + fetchFavorites(); + setHasLoadedData(true); + } + }, [isOpen, hasLoadedData, fetchLibraries, fetchFavorites]); // Mettre à jour les favoris quand ils changent useEffect(() => { const handleFavoritesChange = () => { - fetchFavorites(); + if (isOpen) { + fetchFavorites(); + } }; window.addEventListener("favoritesChanged", handleFavoritesChange); @@ -91,7 +97,7 @@ export function Sidebar({ isOpen, onClose }: SidebarProps) { return () => { window.removeEventListener("favoritesChanged", handleFavoritesChange); }; - }, [fetchFavorites]); + }, [fetchFavorites, isOpen]); const handleRefresh = async () => { setIsRefreshing(true);