diff --git a/src/renderer/src/store/subscription/store.ts b/src/renderer/src/store/subscription/store.ts index 18099759c..07c5e8c40 100644 --- a/src/renderer/src/store/subscription/store.ts +++ b/src/renderer/src/store/subscription/store.ts @@ -153,16 +153,18 @@ class SubscriptionActions { async markReadByFeedIds(...args: [string[], FeedViewType?, MarkReadFilter?]) { const [feedIds, view, filter] = args + const stableFeedIds = feedIds.concat() + doMutationAndTransaction( () => apiClient.reads.all.$post({ json: { - feedIdList: feedIds, + feedIdList: stableFeedIds, ...filter, }, }), async () => { - for (const feedId of feedIds) { + for (const feedId of stableFeedIds) { // We can not process this logic in local, so skip it. and then we will fetch the unread count from server. !filter && feedUnreadActions.updateByFeedId(feedId, 0) entryActions.patchManyByFeedId(feedId, { read: true }, filter) diff --git a/src/renderer/src/store/unread/index.ts b/src/renderer/src/store/unread/index.ts index 5f37530dd..d0d6776f2 100644 --- a/src/renderer/src/store/unread/index.ts +++ b/src/renderer/src/store/unread/index.ts @@ -34,9 +34,10 @@ class FeedUnreadActions { for (const [key, value] of data) { state.data[key] = value } - FeedUnreadService.updateFeedUnread(data) return { ...state } }) + + FeedUnreadService.updateFeedUnread(data) } async fetchUnreadByView(view: FeedViewType | undefined) {