Fix recent missing events in feeds

This commit is contained in:
Jon Staab
2025-12-04 15:56:05 -08:00
parent ee444416e4
commit 4132e8449b
3 changed files with 13 additions and 11 deletions

View File

@@ -5,6 +5,7 @@
* Fix skinny profile images
* Custom handler for relay urls
* Improve time based chat partitioning
* Improve authenticated image access interop
# 1.6.0

View File

@@ -4,7 +4,6 @@ import {
int,
YEAR,
DAY,
assoc,
insertAt,
sortBy,
now,
@@ -33,7 +32,7 @@ import {load, request} from "@welshman/net"
import {repository, makeFeedController, loadRelay, tracker} from "@welshman/app"
import {createScroller} from "@lib/html"
import {daysBetween} from "@lib/util"
import {NOTIFIER_RELAY} from "@app/core/state"
import {NOTIFIER_RELAY, getEventsForUrl} from "@app/core/state"
// Utils
@@ -48,12 +47,9 @@ export const makeFeed = ({
element: HTMLElement
onExhausted?: () => void
}) => {
const initialIds = Array.from(tracker.getIds(url))
const initialFilters = filters.map(assoc("ids", initialIds))
const initialEvents = repository.query(initialFilters)
const seen = new Set(initialEvents.map(e => e.id))
const seen = new Set<string>()
const controller = new AbortController()
const buffer = writable(initialEvents)
const buffer = writable<TrustedEvent[]>([])
const events = writable<TrustedEvent[]>([])
const insertEvent = (event: TrustedEvent) => {
@@ -124,6 +120,10 @@ export const makeFeed = ({
},
})
for (const event of getEventsForUrl(url, filters)) {
insertEvent(event)
}
return {
events,
cleanup: () => {
@@ -147,9 +147,6 @@ export const makeCalendarFeed = ({
}) => {
const interval = int(5, DAY)
const controller = new AbortController()
const initialIds = Array.from(tracker.getIds(url))
const initialFilters = filters.map(assoc("ids", initialIds))
const initialEvents = repository.query(initialFilters)
let exhaustedScrollers = 0
let backwardWindow = [now() - interval, now()]
@@ -159,7 +156,7 @@ export const makeCalendarFeed = ({
const getEnd = (event: TrustedEvent) => parseInt(getTagValue("end", event.tags) || "")
const events = writable(sortBy(getStart, initialEvents))
const events = writable(sortBy(getStart, getEventsForUrl(url, filters)))
const insertEvent = (event: TrustedEvent) => {
const start = getStart(event)

View File

@@ -48,6 +48,7 @@ import {
deriveItemsByKey,
deriveEventsByIdByUrl,
deriveEventsByIdForUrl,
getEventsByIdForUrl,
} from "@welshman/store"
import {isKindFeed, findFeed} from "@welshman/feeds"
import {
@@ -216,6 +217,9 @@ export const deriveEvent = makeDeriveEvent({
onDerive: (filters: Filter[], relays: string[]) => load({filters, relays}),
})
export const getEventsForUrl = (url: string, filters: Filter[]) =>
getEventsByIdForUrl({url, tracker, repository, filters}).values()
export const deriveEventsForUrl = (url: string, filters: Filter[]) =>
deriveArray(deriveEventsByIdForUrl({url, tracker, repository, filters}))