pref: 🚀
This commit is contained in:
@@ -176,7 +176,7 @@ class ClientService {
|
|||||||
_knownIds.add(id)
|
_knownIds.add(id)
|
||||||
return false
|
return false
|
||||||
},
|
},
|
||||||
onevent(evt: NEvent) {
|
onevent: (evt: NEvent) => {
|
||||||
that.eventDataLoader.prime(evt.id, Promise.resolve(evt))
|
that.eventDataLoader.prime(evt.id, Promise.resolve(evt))
|
||||||
// not eosed yet, push to events
|
// not eosed yet, push to events
|
||||||
if (eosedCount < startedCount) {
|
if (eosedCount < startedCount) {
|
||||||
@@ -214,7 +214,7 @@ class ClientService {
|
|||||||
// insert the event to the right position
|
// insert the event to the right position
|
||||||
timeline.refs.splice(idx, 0, [evt.id, evt.created_at])
|
timeline.refs.splice(idx, 0, [evt.id, evt.created_at])
|
||||||
},
|
},
|
||||||
onclose(reason: string) {
|
onclose: (reason: string) => {
|
||||||
if (reason.startsWith('auth-required:')) {
|
if (reason.startsWith('auth-required:')) {
|
||||||
if (!hasAuthed && signer) {
|
if (!hasAuthed && signer) {
|
||||||
relay
|
relay
|
||||||
@@ -228,18 +228,21 @@ class ClientService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
oneose() {
|
oneose: () => {
|
||||||
|
if (eosed) return
|
||||||
eosedCount++
|
eosedCount++
|
||||||
if (eosedCount < startedCount || eosed) return
|
eosed = eosedCount >= startedCount
|
||||||
|
|
||||||
eosed = true
|
|
||||||
|
|
||||||
// (algo feeds) no need to sort and cache
|
// (algo feeds) no need to sort and cache
|
||||||
if (!needSort) {
|
if (!needSort) {
|
||||||
return onEvents(events, true)
|
return onEvents(events, eosed)
|
||||||
}
|
}
|
||||||
|
if (!eosed) {
|
||||||
events = events.sort((a, b) => b.created_at - a.created_at).slice(0, filter.limit)
|
events = events.sort((a, b) => b.created_at - a.created_at).slice(0, filter.limit)
|
||||||
|
return onEvents(events.concat(cachedEvents), false)
|
||||||
|
}
|
||||||
|
|
||||||
|
events = events.sort((a, b) => b.created_at - a.created_at).slice(0, filter.limit)
|
||||||
const timeline = that.timelines[key]
|
const timeline = that.timelines[key]
|
||||||
// no cache yet
|
// no cache yet
|
||||||
if (!timeline || !timeline.refs.length) {
|
if (!timeline || !timeline.refs.length) {
|
||||||
@@ -302,21 +305,17 @@ class ClientService {
|
|||||||
)
|
)
|
||||||
).filter(Boolean) as NEvent[])
|
).filter(Boolean) as NEvent[])
|
||||||
: []
|
: []
|
||||||
if (cachedEvents.length >= limit) {
|
if (cachedEvents.length > 0) {
|
||||||
return cachedEvents
|
return cachedEvents
|
||||||
}
|
}
|
||||||
const restLimit = limit - cachedEvents.length
|
|
||||||
const restUntil = cachedEvents.length
|
|
||||||
? cachedEvents[cachedEvents.length - 1].created_at - 1
|
|
||||||
: until
|
|
||||||
|
|
||||||
let events = await this.pool.querySync(urls, { ...filter, until: restUntil, limit: restLimit })
|
let events = await this.pool.querySync(urls, { ...filter, until: until, limit: limit })
|
||||||
events.forEach((evt) => {
|
events.forEach((evt) => {
|
||||||
this.eventDataLoader.prime(evt.id, Promise.resolve(evt))
|
this.eventDataLoader.prime(evt.id, Promise.resolve(evt))
|
||||||
})
|
})
|
||||||
events = events.sort((a, b) => b.created_at - a.created_at).slice(0, restLimit)
|
events = events.sort((a, b) => b.created_at - a.created_at).slice(0, limit)
|
||||||
timeline.refs.push(...events.map((evt) => [evt.id, evt.created_at] as TTimelineRef))
|
timeline.refs.push(...events.map((evt) => [evt.id, evt.created_at] as TTimelineRef))
|
||||||
return cachedEvents.concat(events)
|
return events
|
||||||
}
|
}
|
||||||
|
|
||||||
async fetchEvents(relayUrls: string[], filter: Filter, cache = false) {
|
async fetchEvents(relayUrls: string[], filter: Filter, cache = false) {
|
||||||
|
|||||||
Reference in New Issue
Block a user