summaryrefslogtreecommitdiff
path: root/apps/web/app/reader/_components/entry-list.tsx
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-02-12 03:45:49 -0800
committerFuwn <[email protected]>2026-02-12 03:45:49 -0800
commit369e7ef2d19f5656391a894e7b0e55e6d849776e (patch)
tree825fff793bf5fa952a1d814656f04f9af1b4f88b /apps/web/app/reader/_components/entry-list.tsx
parentfix: use singular "entry" in mark-as-read toast when count is 1 (diff)
downloadasa.news-369e7ef2d19f5656391a894e7b0e55e6d849776e.tar.xz
asa.news-369e7ef2d19f5656391a894e7b0e55e6d849776e.zip
fix: prioritise unread entries server-side so they appear in all-entries view
Diffstat (limited to 'apps/web/app/reader/_components/entry-list.tsx')
-rw-r--r--apps/web/app/reader/_components/entry-list.tsx27
1 files changed, 11 insertions, 16 deletions
diff --git a/apps/web/app/reader/_components/entry-list.tsx b/apps/web/app/reader/_components/entry-list.tsx
index 7786e55..ee2dad2 100644
--- a/apps/web/app/reader/_components/entry-list.tsx
+++ b/apps/web/app/reader/_components/entry-list.tsx
@@ -20,12 +20,14 @@ function useEntryData(
feedFilter: "all" | "saved",
folderIdentifier?: string | null,
feedIdentifier?: string | null,
- customFeedIdentifier?: string | null
+ customFeedIdentifier?: string | null,
+ prioritiseUnread?: boolean
) {
const timelineQuery = useTimeline(
feedFilter === "all" && !customFeedIdentifier ? folderIdentifier : undefined,
feedFilter === "all" && !customFeedIdentifier ? feedIdentifier : undefined,
- false
+ false,
+ prioritiseUnread
)
const savedQuery = useSavedEntries()
const customFeedQuery = useCustomFeedTimeline(
@@ -49,8 +51,12 @@ export function EntryList({
feedIdentifier,
customFeedIdentifier,
}: EntryListProperties) {
+ const prioritiseUnreadEntries = useUserInterfaceStore(
+ (state) => state.prioritiseUnreadEntries
+ )
+
const { data, fetchNextPage, hasNextPage, isFetchingNextPage, isLoading } =
- useEntryData(feedFilter, folderIdentifier, feedIdentifier, customFeedIdentifier)
+ useEntryData(feedFilter, folderIdentifier, feedIdentifier, customFeedIdentifier, prioritiseUnreadEntries)
const entryListViewMode = useUserInterfaceStore(
(state) => state.entryListViewMode
@@ -72,20 +78,9 @@ export function EntryList({
(state) => state.setNavigableEntryIdentifiers
)
- const prioritiseUnreadEntries = useUserInterfaceStore(
- (state) => state.prioritiseUnreadEntries
- )
-
const allEntries = useMemo(() => {
- const flatEntries = data?.pages.flatMap((page) => page) ?? []
-
- if (!prioritiseUnreadEntries) return flatEntries
-
- const unreadEntries = flatEntries.filter((entry) => !entry.isRead)
- const readEntries = flatEntries.filter((entry) => entry.isRead)
-
- return [...unreadEntries, ...readEntries]
- }, [data, prioritiseUnreadEntries])
+ return data?.pages.flatMap((page) => page) ?? []
+ }, [data])
const scrollContainerReference = useRef<HTMLDivElement>(null)
const firstEntryIdentifier = allEntries[0]?.entryIdentifier