From eb5c1280b8e49341d662748fcb98d9e3ec38847a Mon Sep 17 00:00:00 2001
From: Alex Ramalho <47791391+alramalho@users.noreply.github.com>
Date: Fri, 22 May 2026 22:18:24 +0200
Subject: [PATCH 01/23] fix: stop timeline infinite spinner on pagination
errors (#22)
---
.../src/components/TimelineRenderer.tsx | 28 +++++++++++++++++--
.../src/contexts/timeline/index.tsx | 22 ++++++++++++++-
.../src/contexts/timeline/types.ts | 1 +
3 files changed, 48 insertions(+), 3 deletions(-)
diff --git a/apps/frontend-vite/src/components/TimelineRenderer.tsx b/apps/frontend-vite/src/components/TimelineRenderer.tsx
index f6fa9839..976f107b 100644
--- a/apps/frontend-vite/src/components/TimelineRenderer.tsx
+++ b/apps/frontend-vite/src/components/TimelineRenderer.tsx
@@ -52,6 +52,7 @@ const TimelineRenderer: React.FC<{
timelineData,
isLoadingTimeline,
isFetchingNextTimelinePage,
+ isFetchNextTimelinePageError,
hasMoreTimeline,
fetchNextTimelinePage,
} = useTimeline();
@@ -271,7 +272,7 @@ const TimelineRenderer: React.FC<{
}, [timelineData?.recommendedUsers]);
useEffect(() => {
- if (!loadMoreRef.current || !hasMoreTimeline) return;
+ if (!loadMoreRef.current || !hasMoreTimeline || isFetchNextTimelinePageError) return;
const observer = new IntersectionObserver(
(entries) => {
@@ -285,7 +286,12 @@ const TimelineRenderer: React.FC<{
observer.observe(loadMoreRef.current);
return () => observer.disconnect();
- }, [fetchNextTimelinePage, hasMoreTimeline, isFetchingNextTimelinePage]);
+ }, [
+ fetchNextTimelinePage,
+ hasMoreTimeline,
+ isFetchingNextTimelinePage,
+ isFetchNextTimelinePageError,
+ ]);
// Check if there will be a divider shown (new posts exist AND we have a lastViewedTimelineAt)
const willShowDivider = useMemo(() => {
@@ -739,6 +745,24 @@ const TimelineRenderer: React.FC<{