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
+}