Skip to content

Commit 84a188a

Browse files
committed
fix: back to previous entry list will refresh data
Signed-off-by: Innei <tukon479@gmail.com>
1 parent ab85406 commit 84a188a

File tree

3 files changed

+21
-10
lines changed

3 files changed

+21
-10
lines changed

apps/renderer/src/atoms/feed.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export const useFeedUnreadIsDirty = (feedId: string) => {
2020
() =>
2121
selectAtom(feedUnreadDirtySetAtom, (set) => {
2222
const isRealFeedId = isBizId(feedId)
23+
2324
if (isRealFeedId) return set.has(feedId)
2425

2526
if (feedId.startsWith(ROUTE_FEED_IN_LIST) || feedId.startsWith(INBOX_PREFIX_ID)) {
@@ -67,3 +68,7 @@ export const clearFeedUnreadDirty = (feedId: string) => {
6768
return newSet
6869
})
6970
}
71+
72+
export const clearAllFeedUnreadDirty = () => {
73+
jotaiStore.set(feedUnreadDirtySetAtom, new Set())
74+
}

apps/renderer/src/queries/entries.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -159,17 +159,20 @@ export const useEntries = ({
159159
initialPageParam: undefined,
160160
refetchOnWindowFocus: false,
161161
refetchOnReconnect: false,
162-
refetchOnMount: fetchUnread && feedUnreadDirty ? "always" : false,
162+
// DON'T refetch when the router is pop to previous page
163+
refetchOnMount: fetchUnread && feedUnreadDirty && !history.isPop ? "always" : false,
163164

164165
staleTime:
165166
// Force refetch unread entries when feed is dirty
166167
// HACK: disable refetch when the router is pop to previous page
167-
fetchUnread && feedUnreadDirty && !history.isPop
168-
? 0
169-
: // Keep reduce data fetch logic
170-
reduceRefetch
171-
? maxStaleTime
172-
: defaultStaleTime,
168+
history.isPop
169+
? Infinity
170+
: fetchUnread && feedUnreadDirty
171+
? 0
172+
: // Keep reduce data fetch logic
173+
reduceRefetch
174+
? maxStaleTime
175+
: defaultStaleTime,
173176
},
174177
)
175178
}

apps/renderer/src/store/entry/store.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { omitObjectUndefinedValue } from "@follow/utils/utils"
1111
import { isNil, merge, omit } from "es-toolkit/compat"
1212
import { produce } from "immer"
1313

14-
import { clearFeedUnreadDirty, setFeedUnreadDirty } from "~/atoms/feed"
14+
import { clearAllFeedUnreadDirty, clearFeedUnreadDirty, setFeedUnreadDirty } from "~/atoms/feed"
1515
import { runTransactionInScope } from "~/database"
1616
import { apiClient } from "~/lib/api-fetch"
1717
import { getEntriesParams } from "~/lib/utils"
@@ -147,7 +147,7 @@ class EntryActions {
147147
})
148148

149149
if (data.data) {
150-
this.upsertMany(data.data, { isArchived })
150+
this.upsertMany(structuredClone(data.data), { isArchived })
151151
}
152152
return data
153153
}
@@ -170,6 +170,9 @@ class EntryActions {
170170

171171
// Mark feed unread dirty, so re-fetch the unread data when view feed unread entires in the next time
172172
if (read === false) {
173+
if (typeof params.view === "number" && !params.feedId) {
174+
clearAllFeedUnreadDirty()
175+
}
173176
if (params.feedId) {
174177
clearFeedUnreadDirty(params.feedId as string)
175178
}
@@ -180,7 +183,7 @@ class EntryActions {
180183
}
181184
}
182185
if (data.data) {
183-
this.upsertMany(data.data, { isArchived })
186+
this.upsertMany(structuredClone(data.data), { isArchived })
184187
}
185188
return data
186189
}

0 commit comments

Comments
 (0)