fix: prevent old notes from being treated as new (#278)
This commit is contained in:
@@ -445,23 +445,23 @@ class ClientService extends EventTarget {
|
|||||||
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
||||||
const that = this
|
const that = this
|
||||||
let events: NEvent[] = []
|
let events: NEvent[] = []
|
||||||
let eosed = false
|
let eosedAt: number | null = null
|
||||||
const subCloser = this.subscribe(relays, since ? { ...filter, since } : filter, {
|
const subCloser = this.subscribe(relays, since ? { ...filter, since } : filter, {
|
||||||
startLogin,
|
startLogin,
|
||||||
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 (!eosed) {
|
if (!eosedAt) {
|
||||||
return events.push(evt)
|
return events.push(evt)
|
||||||
}
|
}
|
||||||
// eosed, (algo relay feeds) no need to sort and cache
|
// new event
|
||||||
if (!needSort) {
|
if (evt.created_at > eosedAt) {
|
||||||
return onNew(evt)
|
onNew(evt)
|
||||||
}
|
}
|
||||||
|
|
||||||
const timeline = that.timelines[key]
|
const timeline = that.timelines[key]
|
||||||
if (!timeline || Array.isArray(timeline) || !timeline.refs.length) {
|
if (!timeline || Array.isArray(timeline) || !timeline.refs.length) {
|
||||||
return onNew(evt)
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// find the right position to insert
|
// find the right position to insert
|
||||||
@@ -479,19 +479,16 @@ class ClientService extends EventTarget {
|
|||||||
// the event is too old, ignore it
|
// the event is too old, ignore it
|
||||||
if (idx >= timeline.refs.length) return
|
if (idx >= timeline.refs.length) return
|
||||||
|
|
||||||
// new event
|
|
||||||
if (idx === 0) {
|
|
||||||
onNew(evt)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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])
|
||||||
},
|
},
|
||||||
oneose: (_eosed) => {
|
oneose: (eosed) => {
|
||||||
eosed = _eosed
|
if (eosed && !eosedAt) {
|
||||||
|
eosedAt = dayjs().unix()
|
||||||
|
}
|
||||||
// (algo feeds) no need to sort and cache
|
// (algo feeds) no need to sort and cache
|
||||||
if (!needSort) {
|
if (!needSort) {
|
||||||
return onEvents([...events], eosed)
|
return onEvents([...events], !!eosedAt)
|
||||||
}
|
}
|
||||||
if (!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)
|
||||||
|
|||||||
Reference in New Issue
Block a user