mirror of
https://github.com/dergigi/boris.git
synced 2025-12-17 14:44:26 +01:00
feat(article): instant load from eventStore when clicking bookmark cards - check store by coordinate before relay query
This commit is contained in:
@@ -82,6 +82,38 @@ export function useArticleLoader({
|
|||||||
let firstEmitted = false
|
let firstEmitted = false
|
||||||
let latestEvent: NostrEvent | null = null
|
let latestEvent: NostrEvent | null = null
|
||||||
|
|
||||||
|
// Check eventStore first for instant load (from bookmark cards, explore, etc.)
|
||||||
|
if (eventStore) {
|
||||||
|
try {
|
||||||
|
const coordinate = `${pointer.kind}:${pointer.pubkey}:${pointer.identifier}`
|
||||||
|
const storedEvent = eventStore.getEvent?.(coordinate)
|
||||||
|
if (storedEvent) {
|
||||||
|
latestEvent = storedEvent as NostrEvent
|
||||||
|
firstEmitted = true
|
||||||
|
const title = Helpers.getArticleTitle(storedEvent) || 'Untitled Article'
|
||||||
|
const image = Helpers.getArticleImage(storedEvent)
|
||||||
|
const summary = Helpers.getArticleSummary(storedEvent)
|
||||||
|
const published = Helpers.getArticlePublished(storedEvent)
|
||||||
|
setReaderContent({
|
||||||
|
title,
|
||||||
|
markdown: storedEvent.content,
|
||||||
|
image,
|
||||||
|
summary,
|
||||||
|
published,
|
||||||
|
url: `nostr:${naddr}`
|
||||||
|
})
|
||||||
|
const dTag = storedEvent.tags.find(t => t[0] === 'd')?.[1] || ''
|
||||||
|
const articleCoordinate = `${storedEvent.kind}:${storedEvent.pubkey}:${dTag}`
|
||||||
|
setCurrentArticleCoordinate(articleCoordinate)
|
||||||
|
setCurrentArticleEventId(storedEvent.id)
|
||||||
|
setCurrentArticle?.(storedEvent)
|
||||||
|
setReaderLoading(false)
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
// Ignore store errors, fall through to relay query
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Stream local-first via queryEvents; rely on EOSE (no timeouts)
|
// Stream local-first via queryEvents; rely on EOSE (no timeouts)
|
||||||
const events = await queryEvents(relayPool, filter, {
|
const events = await queryEvents(relayPool, filter, {
|
||||||
onEvent: (evt) => {
|
onEvent: (evt) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user