diff --git a/src/pages/event/[eventId].page.tsx b/src/pages/event/[eventId].page.tsx index ec6c9b16..383e5711 100644 --- a/src/pages/event/[eventId].page.tsx +++ b/src/pages/event/[eventId].page.tsx @@ -24,6 +24,7 @@ export const EventPage = () => { const [rootEvent, setRootEvent] = useState(); useEffect(() => { + if(!eventId)return; if (!worker) return; const callRelay = @@ -33,8 +34,19 @@ export const EventPage = () => { }, [eventId, worker, newConn]); useEffect(()=>{ - dexieDb.event.get(eventId).then(setRootEvent); - }, [eventId]); + if(!eventId)return; + if(!worker)return; + + dexieDb.event.get(eventId).then((event)=>{ + if(!event){ + worker.subMsgByEventIds([eventId]).iterating({cb: (event)=>{ + setRootEvent(event); + }}); + return; + } + setRootEvent(event); + }); + }, [eventId, worker]); const relayUrls = Array.from(wsConnectStatus.keys()); diff --git a/src/pages/post/[publicKey]/[articleId].page.tsx b/src/pages/post/[publicKey]/[articleId].page.tsx index 7394632b..711f9f75 100644 --- a/src/pages/post/[publicKey]/[articleId].page.tsx +++ b/src/pages/post/[publicKey]/[articleId].page.tsx @@ -25,6 +25,7 @@ import { getArticle } from 'core/api/article'; import { isValidPublicKey } from 'utils/validator'; import { dbQuery, profileQuery } from 'core/db'; import { deserializeMetadata } from 'core/nostr/content'; +import { Event } from 'core/nostr/Event'; type UserParams = { publicKey: string; @@ -61,24 +62,27 @@ export default function NewArticle({ preArticle }: { preArticle?: Article }) { authors: [publicKey as string], articleIds: [articleId as string], }); + const setArticleCb = (event: Event) => { + const article = Nip23.toArticle(event); + setArticle(prevArticle => { + if ( + !prevArticle || + article?.updated_at >= prevArticle.updated_at + ) { + return article; + } + return prevArticle; + }); + } dbQuery .matchFilterRelay(filter, worker?.relays.map(r => r.url) || []) .then(evets => { if (evets.length === 0) { - worker?.subFilter({ filter, customId: 'article-data' }); + worker?.subFilter({ filter, customId: 'article-data' }).iterating({cb: setArticleCb}); } for (const event of evets) { - const article = Nip23.toArticle(event); - setArticle(prevArticle => { - if ( - !prevArticle || - article?.updated_at >= prevArticle.updated_at - ) { - return article; - } - return prevArticle; - }); + setArticleCb(event); } }); }