From 9deadc61fd0e06997734506c8eb6841a59d55c22 Mon Sep 17 00:00:00 2001 From: Innei Date: Thu, 6 Jun 2024 13:59:05 +0800 Subject: [PATCH] fix: long task, batch add entry into store (#43) * fix: long task, batch add entry into store Signed-off-by: Innei * chore: cleanup Signed-off-by: Innei --------- Signed-off-by: Innei --- src/renderer/src/store/entry.ts | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/renderer/src/store/entry.ts b/src/renderer/src/store/entry.ts index 283f1b695..8b38f896d 100644 --- a/src/renderer/src/store/entry.ts +++ b/src/renderer/src/store/entry.ts @@ -27,7 +27,8 @@ interface EntryActions { pageParam?: string }) => Promise> - upsert: (feedId: string, entry: EntryModel) => void + upsertMany: (entries: EntryModel[]) => void + optimisticUpdate: (entryId: string, changed: Partial) => void optimisticUpdateManyByFeedId: ( feedId: string, @@ -68,9 +69,7 @@ export const useEntryStore = createZustandStore( const data = await res.json() if (data.data) { - data.data.forEach((entry: EntryModel) => { - get().upsert(entry.feeds.id, entry) - }) + get().upsertMany(data.data) } return data }, @@ -112,14 +111,17 @@ export const useEntryStore = createZustandStore( }), ) }, - upsert(feedId: string, entry: EntryModel) { + + upsertMany(entries) { set((state) => produce(state, (draft) => { - if (!draft.entries[feedId]) { - draft.entries[feedId] = [] + for (const entry of entries) { + if (!draft.entries[entry.feeds.id]) { + draft.entries[entry.feeds.id] = [] + } + draft.entries[entry.feeds.id].push(entry.entries.id) + draft.flatMapEntries[entry.entries.id] = entry } - draft.entries[feedId].push(entry.entries.id) - draft.flatMapEntries[entry.entries.id] = entry return draft }), )