diff --git a/CHANGELOG.md b/CHANGELOG.md index 00bee03..a2b635a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/src/app/core/requests.ts b/src/app/core/requests.ts index e4700f3..e90929a 100644 --- a/src/app/core/requests.ts +++ b/src/app/core/requests.ts @@ -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() const controller = new AbortController() - const buffer = writable(initialEvents) + const buffer = writable([]) const events = writable([]) 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) diff --git a/src/app/core/state.ts b/src/app/core/state.ts index fc12b34..d35cd3f 100644 --- a/src/app/core/state.ts +++ b/src/app/core/state.ts @@ -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}))