fix: untimely relay sets synchronization
This commit is contained in:
@@ -81,19 +81,17 @@ export function FavoriteRelaysProvider({ children }: { children: React.ReactNode
|
||||
setFavoriteRelays(relays)
|
||||
|
||||
if (!pubkey) return
|
||||
const relaySetEvents = await Promise.all(
|
||||
const storedRelaySetEvents = await Promise.all(
|
||||
relaySetIds.map((id) => indexedDb.getReplaceableEvent(pubkey, kinds.Relaysets, id))
|
||||
)
|
||||
const nonExistingRelaySetIds = relaySetIds.filter((_, index) => {
|
||||
return !relaySetEvents[index]
|
||||
})
|
||||
if (nonExistingRelaySetIds.length) {
|
||||
setRelaySetEvents(storedRelaySetEvents.filter(Boolean) as Event[])
|
||||
|
||||
const newRelaySetEvents = await client.fetchEvents(
|
||||
(relayList?.write ?? []).concat(BIG_RELAY_URLS).slice(0, 5),
|
||||
{
|
||||
kinds: [kinds.Relaysets],
|
||||
authors: [pubkey],
|
||||
'#d': nonExistingRelaySetIds
|
||||
'#d': relaySetIds
|
||||
}
|
||||
)
|
||||
const relaySetEventMap = new Map<string, Event>()
|
||||
@@ -106,23 +104,13 @@ export function FavoriteRelaysProvider({ children }: { children: React.ReactNode
|
||||
relaySetEventMap.set(d, event)
|
||||
}
|
||||
})
|
||||
const uniqueNewRelaySetEvents = Array.from(relaySetEventMap.values())
|
||||
setRelaySetEvents(uniqueNewRelaySetEvents)
|
||||
await Promise.all(
|
||||
Array.from(relaySetEventMap.values()).map((event) => {
|
||||
uniqueNewRelaySetEvents.map((event) => {
|
||||
return indexedDb.putReplaceableEvent(event)
|
||||
})
|
||||
)
|
||||
nonExistingRelaySetIds.forEach((id) => {
|
||||
const event = relaySetEventMap.get(id)
|
||||
if (event) {
|
||||
const index = relaySetIds.indexOf(id)
|
||||
if (index !== -1) {
|
||||
relaySetEvents[index] = event
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
setRelaySetEvents(relaySetEvents.filter(Boolean) as Event[])
|
||||
}
|
||||
init()
|
||||
}, [favoriteRelaysEvent])
|
||||
|
||||
@@ -360,10 +360,7 @@ class IndexedDbService {
|
||||
{
|
||||
name: StoreNames.FOLLOW_LIST_EVENTS,
|
||||
expirationTimestamp: Date.now() - 1000 * 60 * 60 * 24
|
||||
}, // 1 day
|
||||
{ name: StoreNames.RELAY_INFO_EVENTS, expirationTimestamp: -1 },
|
||||
{ name: StoreNames.MUTE_LIST_EVENTS, expirationTimestamp: -1 },
|
||||
{ name: StoreNames.MUTE_DECRYPTED_TAGS, expirationTimestamp: -1 }
|
||||
} // 1 day
|
||||
]
|
||||
const transaction = this.db!.transaction(
|
||||
stores.map((store) => store.name),
|
||||
|
||||
Reference in New Issue
Block a user