From e2403ecd710300eae8c75cc81ddb77dfb57e9c98 Mon Sep 17 00:00:00 2001 From: tapframe Date: Sat, 5 Jul 2025 20:20:11 +0530 Subject: [PATCH] Refactor loading state logic in HomeScreen to improve data display handling. Update isLoading calculation to show full-screen loader only when no data is available, enhancing user experience during content loading. --- src/screens/HomeScreen.tsx | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/screens/HomeScreen.tsx b/src/screens/HomeScreen.tsx index 0001189..c2c7dfa 100644 --- a/src/screens/HomeScreen.tsx +++ b/src/screens/HomeScreen.tsx @@ -249,11 +249,15 @@ const HomeScreen = () => { }, []); // Only count feature section as loading if it's enabled in settings - // For catalogs, we show them progressively, so only show loading if no catalogs are loaded yet - const isLoading = useMemo(() => - (showHeroSection ? featuredLoading : false) || (catalogsLoading && catalogs.length === 0), - [showHeroSection, featuredLoading, catalogsLoading, catalogs.length] - ); + // Render the screen immediately and let placeholders/skeletons handle progressive loading + const isLoading = useMemo(() => { + // Show a full-screen loader only if we literally have no data to display yet + const noHeroSection = !showHeroSection; + const noFeaturedData = !featuredContent && featuredLoading; + const noCatalogsReady = catalogs.length === 0 && catalogsLoading; + + return noHeroSection && noCatalogsReady && noFeaturedData; + }, [showHeroSection, featuredContent, featuredLoading, catalogsLoading, catalogs.length]); // React to settings changes useEffect(() => {