diff options
| author | Fuwn <[email protected]> | 2026-02-12 03:45:49 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-02-12 03:45:49 -0800 |
| commit | 369e7ef2d19f5656391a894e7b0e55e6d849776e (patch) | |
| tree | 825fff793bf5fa952a1d814656f04f9af1b4f88b /apps/web/app/reader/_components/entry-list.tsx | |
| parent | fix: use singular "entry" in mark-as-read toast when count is 1 (diff) | |
| download | asa.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.tsx | 27 |
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 |