From 5e3fd93a2347c269e2879c0522b14c0b7d00926c Mon Sep 17 00:00:00 2001 From: codytseng Date: Wed, 12 Feb 2025 22:59:09 +0800 Subject: [PATCH] fix: bug of lost followers --- src/providers/FollowListProvider.tsx | 5 ++--- src/providers/MuteListProvider.tsx | 6 +++--- src/providers/NostrProvider/index.tsx | 14 ++++++-------- src/services/indexed-db.service.ts | 6 +++--- 4 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/providers/FollowListProvider.tsx b/src/providers/FollowListProvider.tsx index aefd0bf1..be52194e 100644 --- a/src/providers/FollowListProvider.tsx +++ b/src/providers/FollowListProvider.tsx @@ -58,9 +58,8 @@ export function FollowListProvider({ children }: { children: React.ReactNode }) }, [accountPubkey]) const updateFollowListEvent = async (event: Event) => { - const isNew = await indexedDb.putReplaceableEvent(event) - if (!isNew) return - setFollowListEvent(event) + const newEvent = await indexedDb.putReplaceableEvent(event) + setFollowListEvent(newEvent) } const follow = async (pubkey: string) => { diff --git a/src/providers/MuteListProvider.tsx b/src/providers/MuteListProvider.tsx index 534ff18a..3d8a26d4 100644 --- a/src/providers/MuteListProvider.tsx +++ b/src/providers/MuteListProvider.tsx @@ -47,9 +47,9 @@ export function MuteListProvider({ children }: { children: React.ReactNode }) { }) const muteEvent = getLatestEvent(events) as Event | undefined if (muteEvent) { - await indexedDb.putReplaceableEvent(muteEvent) - setMuteListEvent(muteEvent) - const tags = await extractMuteTags(muteEvent) + const newMuteEvent = await indexedDb.putReplaceableEvent(muteEvent) + setMuteListEvent(newMuteEvent) + const tags = await extractMuteTags(newMuteEvent) setTags(tags) } } diff --git a/src/providers/NostrProvider/index.tsx b/src/providers/NostrProvider/index.tsx index d805acae..960a4ec7 100644 --- a/src/providers/NostrProvider/index.tsx +++ b/src/providers/NostrProvider/index.tsx @@ -403,17 +403,15 @@ export function NostrProvider({ children }: { children: React.ReactNode }) { } const updateRelayListEvent = async (relayListEvent: Event) => { - const isNew = await indexedDb.putReplaceableEvent(relayListEvent) - if (!isNew) return - setRelayList(getRelayListFromRelayListEvent(relayListEvent)) + const newRelayList = await indexedDb.putReplaceableEvent(relayListEvent) + setRelayList(getRelayListFromRelayListEvent(newRelayList)) } const updateProfileEvent = async (profileEvent: Event) => { - const isNew = await indexedDb.putReplaceableEvent(profileEvent) - if (!isNew) return - setProfileEvent(profileEvent) - setProfile(getProfileFromProfileEvent(profileEvent)) - client.updateProfileCache(profileEvent) + const newProfileEvent = await indexedDb.putReplaceableEvent(profileEvent) + setProfileEvent(newProfileEvent) + setProfile(getProfileFromProfileEvent(newProfileEvent)) + client.updateProfileCache(newProfileEvent) } return ( diff --git a/src/services/indexed-db.service.ts b/src/services/indexed-db.service.ts index d53f9459..e77cb7ac 100644 --- a/src/services/indexed-db.service.ts +++ b/src/services/indexed-db.service.ts @@ -70,7 +70,7 @@ class IndexedDbService { return this.initPromise } - async putReplaceableEvent(event: Event): Promise { + async putReplaceableEvent(event: Event): Promise { const storeName = this.getStoreNameByKind(event.kind) if (!storeName) { return Promise.reject('store name not found') @@ -87,11 +87,11 @@ class IndexedDbService { getRequest.onsuccess = () => { const oldValue = getRequest.result as TValue | undefined if (oldValue && oldValue.value.created_at >= event.created_at) { - return resolve(false) + return resolve(oldValue.value) } const putRequest = store.put(this.formatValue(event.pubkey, event)) putRequest.onsuccess = () => { - resolve(true) + resolve(event) } putRequest.onerror = (event) => {