From 9aa2594cf375b4341df569cf801509d928f2c963 Mon Sep 17 00:00:00 2001 From: TerribleDev <1020010-TerribleDev@users.noreply.replit.com> Date: Sat, 22 Mar 2025 15:56:41 +0000 Subject: [PATCH] Checkpoint before assistant change: Remove newsletter search functionality from home page. Replit-Commit-Author: Assistant --- client/src/pages/home.tsx | 63 +++++++++++++++++++++++---------------- 1 file changed, 37 insertions(+), 26 deletions(-) diff --git a/client/src/pages/home.tsx b/client/src/pages/home.tsx index 32ebbc7..3e2f7d7 100644 --- a/client/src/pages/home.tsx +++ b/client/src/pages/home.tsx @@ -24,7 +24,11 @@ import { BellOff, BellRing, } from "lucide-react"; -import { useNewsletters, useNewsletterSearch, type NewslettersResponse } from "@/lib/newsletter-data"; +import { + useNewsletters, + useNewsletterSearch, + type NewslettersResponse, +} from "@/lib/newsletter-data"; import { useToast } from "@/hooks/use-toast"; import { apiRequest } from "@/lib/queryClient"; import { queryClient } from "@/lib/queryClient"; @@ -36,7 +40,8 @@ const ITEMS_PER_PAGE = 20; export default function Home() { const [searchQuery, setSearchQuery] = useState(""); const [isImporting, setIsImporting] = useState(false); - const [isSendingTestNotification, setIsSendingTestNotification] = useState(false); + const [isSendingTestNotification, setIsSendingTestNotification] = + useState(false); const [page, setPage] = useState(1); const [isSubscribed, setIsSubscribed] = useState(false); const [allItems, setAllItems] = useState([]); @@ -63,8 +68,9 @@ export default function Home() { const isCurrentFetching = searchQuery ? isSearchFetching : isFetching; // Check if there are more pages to load - const hasMorePages = currentData ? - (currentData.page * currentData.limit < currentData.total) : false; + const hasMorePages = currentData + ? currentData.page * currentData.limit < currentData.total + : false; // Merge newsletter items when data changes useEffect(() => { @@ -75,12 +81,16 @@ export default function Home() { setAllItems(currentData.newsletters); } else { // Merge items, ensuring we don't have duplicates - setAllItems(prevItems => { + setAllItems((prevItems) => { // Create a set of IDs from new items for faster lookups - const newItemIds = new Set(currentData.newsletters.map(item => item.id)); + const newItemIds = new Set( + currentData.newsletters.map((item) => item.id), + ); // Filter out any previous items that would be duplicated - const filteredPrevItems = prevItems.filter(item => !newItemIds.has(item.id)); + const filteredPrevItems = prevItems.filter( + (item) => !newItemIds.has(item.id), + ); // Combine previous (non-duplicate) items with new items return [...filteredPrevItems, ...currentData.newsletters]; @@ -210,13 +220,21 @@ export default function Home() { } }; - const handleObserver = useCallback((entries: IntersectionObserverEntry[]) => { - const target = entries[0]; - if (target.isIntersecting && !isCurrentLoading && !isCurrentFetching && hasMorePages) { - console.log("Loading more newsletters. Current page:", page); - setPage((prev) => prev + 1); - } - }, [isCurrentLoading, isCurrentFetching, hasMorePages, page]); + const handleObserver = useCallback( + (entries: IntersectionObserverEntry[]) => { + const target = entries[0]; + if ( + target.isIntersecting && + !isCurrentLoading && + !isCurrentFetching && + hasMorePages + ) { + console.log("Loading more newsletters. Current page:", page); + setPage((prev) => prev + 1); + } + }, + [isCurrentLoading, isCurrentFetching, hasMorePages, page], + ); useEffect(() => { const currentLoader = loader.current; @@ -254,15 +272,6 @@ export default function Home() {

-
- - setSearchQuery(e.target.value)} - /> -
{isDevelopment && ( <> -
@@ -410,7 +418,10 @@ export default function Home() { {/* Loading indicator at bottom */} {hasMorePages && ( -
+
{isCurrentFetching && page > 1 && (
)} @@ -419,4 +430,4 @@ export default function Home() {
); -} \ No newline at end of file +}