diff --git a/.agents/skills/flotilla-views/SKILL.md b/.agents/skills/flotilla-views/SKILL.md index e4722516..a3364972 100644 --- a/.agents/skills/flotilla-views/SKILL.md +++ b/.agents/skills/flotilla-views/SKILL.md @@ -314,7 +314,7 @@ data every page needs lives in `src/app/sync.ts`. **One entity, or a handful of lists:** call plugin `load` in `onMount`, and toast on failure, as `people/[npub]/+page.svelte` does for the profile, relay list, follow, pin, room and messaging -lists before loading the author's outbox with `$network.load`. +lists before loading the author's outbox with `$network.loadLenient`. **A detail page:** `deriveEvent(address, [url])` loads when nothing local matches. While it is empty, seven pages show a spinner that turns into a failure message: diff --git a/package.json b/package.json index 54f39b6c..4ba73de7 100644 --- a/package.json +++ b/package.json @@ -91,16 +91,16 @@ "@types/throttle-debounce": "^5.0.2", "@vite-pwa/assets-generator": "^1.0.2", "@vite-pwa/sveltekit": "^1.1.0", - "@welshman/app": "^0.10.9", - "@welshman/content": "^0.10.9", - "@welshman/domain": "^0.10.9", - "@welshman/editor": "^0.10.9", - "@welshman/feeds": "^0.10.9", - "@welshman/lib": "^0.10.9", - "@welshman/net": "^0.10.9", - "@welshman/signer": "^0.10.9", - "@welshman/store": "^0.10.9", - "@welshman/util": "^0.10.9", + "@welshman/app": "^0.11.0", + "@welshman/content": "^0.11.0", + "@welshman/domain": "^0.11.0", + "@welshman/editor": "^0.11.0", + "@welshman/feeds": "^0.11.0", + "@welshman/lib": "^0.11.0", + "@welshman/net": "^0.11.0", + "@welshman/signer": "^0.11.0", + "@welshman/store": "^0.11.0", + "@welshman/util": "^0.11.0", "cheerio": "^1.2.0", "compressorjs-next": "^1.1.2", "dompurify": "^3.4.13", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c2d7cfc0..1d6aed8c 100644 Binary files a/pnpm-lock.yaml and b/pnpm-lock.yaml differ diff --git a/src/app/call.ts b/src/app/call.ts index 11b716ad..8a39a74f 100644 --- a/src/app/call.ts +++ b/src/app/call.ts @@ -336,7 +336,7 @@ export const toggleVideoPrimaryTile = (key: string) => { } export const loadCallParticipants = (url: string, h: string) => - network.get().load({ + network.get().loadLenient({ relays: [url], filters: [{kinds: [LIVEKIT_PARTICIPANTS], "#d": [h]}], }) diff --git a/src/app/commands.ts b/src/app/commands.ts index c3ca4cb6..fbde6aaa 100644 --- a/src/app/commands.ts +++ b/src/app/commands.ts @@ -48,15 +48,16 @@ export class Commands extends RelayScopedDerivedPlugin { const [url, address] = splitCommandKey(key) const {pubkey, identifier} = Address.from(address) - return this.app - .use(Network) - .load({relays: [url], filters: [{kinds: [COMMAND], authors: [pubkey], "#d": [identifier]}]}) + return this.app.use(Network).loadComplete({ + relays: [url], + filters: [{kinds: [COMMAND], authors: [pubkey], "#d": [identifier]}], + }) } ensureLoaded = (url: string) => { if (!this.pulled.has(url)) { this.pulled.add(url) - this.app.use(Network).load({relays: [url], filters: [{kinds: [COMMAND]}]}) + this.app.use(Network).loadLenient({relays: [url], filters: [{kinds: [COMMAND]}]}) } } diff --git a/src/app/components/CalendarEventForm.svelte b/src/app/components/CalendarEventForm.svelte index 1d48ede6..04dda91a 100644 --- a/src/app/components/CalendarEventForm.svelte +++ b/src/app/components/CalendarEventForm.svelte @@ -127,7 +127,7 @@ history.back() if (shareToChat) { - publishRoomQuote({url, h, parent: calendarThunk.event, protect}) + publishRoomQuote({url, h, parent: calendarThunk.options.event, protect}) } pushToast({message: "Your event has been saved!"}) diff --git a/src/app/components/ChatMessage.svelte b/src/app/components/ChatMessage.svelte index b1322f59..ac2c5f53 100644 --- a/src/app/components/ChatMessage.svelte +++ b/src/app/components/ChatMessage.svelte @@ -40,7 +40,7 @@ const isOwn = event.pubkey === $user.pubkey const profileDisplay = $profiles.display(event.pubkey).$ const thunks = $app.use(Thunks).history - const thunk = $app.use(Thunks).merge($thunks.filter(t => t.event.id === event.id)) + const thunk = $app.use(Thunks).merge($thunks.filter(t => t.options.event.id === event.id)) const colorValue = colorFor(event.pubkey) const reply = () => replyTo(event) diff --git a/src/app/components/ClassifiedForm.svelte b/src/app/components/ClassifiedForm.svelte index a8d8991a..a3898f9a 100644 --- a/src/app/components/ClassifiedForm.svelte +++ b/src/app/components/ClassifiedForm.svelte @@ -129,7 +129,7 @@ history.back() if (shareToChat) { - publishRoomQuote({url, h, parent: classifiedThunk.event, protect}) + publishRoomQuote({url, h, parent: classifiedThunk.options.event, protect}) } } finally { loading = false diff --git a/src/app/components/ContentQuote.svelte b/src/app/components/ContentQuote.svelte index 355ff107..8f77ee7f 100644 --- a/src/app/components/ContentQuote.svelte +++ b/src/app/components/ContentQuote.svelte @@ -56,7 +56,7 @@ mergedRelays.set(urls) if (!$quote) { - $network.load({filters: getIdFilters([idOrAddress]), relays: urls}) + $network.loadLenient({filters: getIdFilters([idOrAddress]), relays: urls}) } }) diff --git a/src/app/components/GoalCreate.svelte b/src/app/components/GoalCreate.svelte index af95061c..13f09e34 100644 --- a/src/app/components/GoalCreate.svelte +++ b/src/app/components/GoalCreate.svelte @@ -104,7 +104,7 @@ history.back() if (shareToChat) { - publishRoomQuote({url, h, parent: goalThunk.event, protect}) + publishRoomQuote({url, h, parent: goalThunk.options.event, protect}) } } finally { loading = false diff --git a/src/app/components/PinboardEdit.svelte b/src/app/components/PinboardEdit.svelte index ee83a216..3ac8198e 100644 --- a/src/app/components/PinboardEdit.svelte +++ b/src/app/components/PinboardEdit.svelte @@ -53,7 +53,7 @@ back() } else { pushToast({message: "Shelf created!"}) - navigate(makeLibraryPath(url, getAddress(thunk.event))) + navigate(makeLibraryPath(url, getAddress(thunk.options.event))) } } catch (e) { console.error(e) diff --git a/src/app/components/PollCreate.svelte b/src/app/components/PollCreate.svelte index a36e41b2..51471130 100644 --- a/src/app/components/PollCreate.svelte +++ b/src/app/components/PollCreate.svelte @@ -156,7 +156,7 @@ history.back() if (shareToChat) { - publishRoomQuote({url, h, parent: pollThunk.event, protect}) + publishRoomQuote({url, h, parent: pollThunk.options.event, protect}) } } finally { loading = false diff --git a/src/app/components/ProfileLatest.svelte b/src/app/components/ProfileLatest.svelte index e8ab4f54..1c971a87 100644 --- a/src/app/components/ProfileLatest.svelte +++ b/src/app/components/ProfileLatest.svelte @@ -20,7 +20,7 @@ onDestroy(context.cleanup) - const events = $network.load({ + const events = $network.loadComplete({ relays: [url], filters: [{authors: [pubkey], kinds: [NOTE], limit}], }) diff --git a/src/app/components/ReportItem.svelte b/src/app/components/ReportItem.svelte index c580a8ac..63de59e1 100644 --- a/src/app/components/ReportItem.svelte +++ b/src/app/components/ReportItem.svelte @@ -57,7 +57,7 @@ {/if}
{#if etag} - {#await $network.load({relays: [url, LOCAL_RELAY_URL], filters: getIdFilters([etag[1]])})} + {#await $network.loadComplete( {relays: [url, LOCAL_RELAY_URL], filters: getIdFilters( [etag[1]], )}, )}

Loading

{:then reportedEvents} {#if reportedEvents.length === 0} diff --git a/src/app/components/RoomDetailMenu.svelte b/src/app/components/RoomDetailMenu.svelte index cb984f57..d1d346be 100644 --- a/src/app/components/RoomDetailMenu.svelte +++ b/src/app/components/RoomDetailMenu.svelte @@ -58,7 +58,7 @@ const message = await thunk.waitForError() if (message) { - $app.repository.removeEvent(thunk.event.id) + $app.repository.removeEvent(thunk.options.event.id) pushToast({theme: "error", message}) } else { await $roomLists.removeRoom(h, url).then(publish) diff --git a/src/app/components/SearchBody.svelte b/src/app/components/SearchBody.svelte index 77a16395..c5bda753 100644 --- a/src/app/components/SearchBody.svelte +++ b/src/app/components/SearchBody.svelte @@ -57,7 +57,7 @@ ) try { - const events = await $network.load({relays, filters, signal: controller.signal}) + const events = await $network.loadComplete({relays, filters, signal: controller.signal}) results = sortEventsDesc(uniqBy((e: TrustedEvent) => e.id, [...events, ...results])) } catch (error) { diff --git a/src/app/components/ThreadCreate.svelte b/src/app/components/ThreadCreate.svelte index 745f2f0b..4a810aa2 100644 --- a/src/app/components/ThreadCreate.svelte +++ b/src/app/components/ThreadCreate.svelte @@ -96,7 +96,7 @@ history.back() if (shareToChat) { - publishRoomQuote({url, h: room, parent: thunk.event, protect}) + publishRoomQuote({url, h: room, parent: thunk.options.event, protect}) } } finally { loading = false diff --git a/src/app/components/ThunkFailure.svelte b/src/app/components/ThunkFailure.svelte index 5e57ab03..f01acf70 100644 --- a/src/app/components/ThunkFailure.svelte +++ b/src/app/components/ThunkFailure.svelte @@ -23,7 +23,11 @@ const retry = (url: string) => { for (const child of $thunks.flatten([thunk])) { if (child.options.relays.includes(url)) { - const retried = $thunks.publish({...child.options, event: child.event, relays: [url]}) + const retried = $thunks.publish({ + ...child.options, + event: child.options.event, + relays: [url], + }) if (showToastOnRetry) { pushToast({ diff --git a/src/app/components/Zap.svelte b/src/app/components/Zap.svelte index 0b51d4d5..e4229501 100644 --- a/src/app/components/Zap.svelte +++ b/src/app/components/Zap.svelte @@ -74,7 +74,7 @@ const {relays, invoice, filters} = await requestInvoice() await payInvoice(invoice) - await $network.load({relays, filters}) + await $network.loadLenient({relays, filters}) pushToast({message: "Zap successfully sent!"}) back() diff --git a/src/app/feeds.ts b/src/app/feeds.ts index fed11171..c088ff9e 100644 --- a/src/app/feeds.ts +++ b/src/app/feeds.ts @@ -146,7 +146,7 @@ export const makeFeedContext = ({ } const loadFrom = async (urls: string[], events: TrustedEvent[]) => { - const context = await network.get().load({ + const context = await network.get().loadComplete({ relays: urls, signal: controller.signal, filters: [ @@ -156,7 +156,7 @@ export const makeFeedContext = ({ }) if (context.length > 0) { - network.get().load({ + network.get().loadLenient({ relays: urls, signal: controller.signal, filters: getReplyFilters(context, {kinds: [DELETE]}), diff --git a/src/app/pins.ts b/src/app/pins.ts index aa26d997..fd9fe9a2 100644 --- a/src/app/pins.ts +++ b/src/app/pins.ts @@ -19,7 +19,7 @@ export const derivePinnedEvents = (pubkey: string): Readable => .get() .resolver.relays([outbox(pubkey)]) .then($relays => - network.get().load({relays: $relays, filters, signal: controller.signal}), + network.get().loadLenient({relays: $relays, filters, signal: controller.signal}), ) const unsubscribe = deriveEvents(filters).subscribe(set) diff --git a/src/app/repository.ts b/src/app/repository.ts index 5a06d063..b20f2c2a 100644 --- a/src/app/repository.ts +++ b/src/app/repository.ts @@ -16,7 +16,7 @@ export const deriveEvent = (idOrAddress: string, relays: string[] = []) => repository: $app.repository, includeDeleted: true, onDerive: (filters: Filter[], hints: string[]) => - $app.use(Network).load({filters, relays: hints}), + $app.use(Network).loadLenient({filters, relays: hints}), })(idOrAddress, relays), ) diff --git a/src/app/roomPins.ts b/src/app/roomPins.ts index 8fad842c..3d04e1d1 100644 --- a/src/app/roomPins.ts +++ b/src/app/roomPins.ts @@ -22,7 +22,7 @@ export const deriveRoomPinnedEvents = (url: string, h: string): Readable { const byPin = new Map( diff --git a/src/app/sync.ts b/src/app/sync.ts index 22d47d26..4d4749b5 100644 --- a/src/app/sync.ts +++ b/src/app/sync.ts @@ -224,7 +224,7 @@ const syncUserData = () => { if (authors.length > 0) { const scenario = await router.get().resolve(authors.map(author => outbox(author))) - network.get().load({ + network.get().loadLenient({ filters: [{kinds: [FOLLOWS, MUTES], authors}], relays: scenario.limit(8).getUrls(), }) @@ -295,7 +295,7 @@ const syncSpace = (url: string) => { // Which sections a space offers is a question about its whole history rather than about the // recent window above — a space whose newest poll is a year old still has polls. One event // per kind answers it. - network.get().load({ + network.get().loadLenient({ relays: [url], signal: controller.signal, filters: CONTENT_KINDS.map(kind => ({kinds: [kind], limit: 1})), diff --git a/src/app/thunks.ts b/src/app/thunks.ts index 9cffabed..da8ce309 100644 --- a/src/app/thunks.ts +++ b/src/app/thunks.ts @@ -17,7 +17,7 @@ export const thunksByEventId = derived( const byId = new Map() for (const thunk of $history) { - pushToMapKey(byId, thunk.event.id, thunk) + pushToMapKey(byId, thunk.options.event.id, thunk) } // Hand back the array from last time wherever an event's thunks are unchanged. A row derives diff --git a/src/routes/[bech32]/+page.svelte b/src/routes/[bech32]/+page.svelte index 10a04aa2..7740f1d2 100644 --- a/src/routes/[bech32]/+page.svelte +++ b/src/routes/[bech32]/+page.svelte @@ -30,7 +30,7 @@ let found = false - $network.load({ + $network.loadComplete({ relays: [LOCAL_RELAY_URL, ...data.relays], filters: getIdFilters([type === "nevent" ? data.id : Address.fromNaddr(bech32).toString()]), onEvent: (event: TrustedEvent) => { diff --git a/src/routes/people/[npub]/+page.svelte b/src/routes/people/[npub]/+page.svelte index b2bdc473..e9c67696 100644 --- a/src/routes/people/[npub]/+page.svelte +++ b/src/routes/people/[npub]/+page.svelte @@ -57,7 +57,7 @@ filters.push({kinds: [FOLLOWS], "#p": [pubkey], limit: 500}) } - $network.load({ + $network.loadLenient({ relays: await $router.resolver.relays([outbox(pubkey)]), filters, }) diff --git a/src/routes/spaces/[relay]/articles/create/+page.svelte b/src/routes/spaces/[relay]/articles/create/+page.svelte index d5d320a6..edf15bee 100644 --- a/src/routes/spaces/[relay]/articles/create/+page.svelte +++ b/src/routes/spaces/[relay]/articles/create/+page.svelte @@ -145,10 +145,10 @@ } draftKey.clear() - goto(makeArticlePath(url, getAddress(thunk.event))) + goto(makeArticlePath(url, getAddress(thunk.options.event))) if (shareToChat) { - publishRoomQuote({url, h, parent: thunk.event, protect}) + publishRoomQuote({url, h, parent: thunk.options.event, protect}) } } finally { loading = false diff --git a/src/routes/spaces/[relay]/library/+page.svelte b/src/routes/spaces/[relay]/library/+page.svelte index 901909a0..a101e9b3 100644 --- a/src/routes/spaces/[relay]/library/+page.svelte +++ b/src/routes/spaces/[relay]/library/+page.svelte @@ -72,7 +72,7 @@ const controller = new AbortController() $network - .load({relays: [url], filters: [{kinds: [PINBOARD, PIN]}], signal: controller.signal}) + .loadLenient({relays: [url], filters: [{kinds: [PINBOARD, PIN]}], signal: controller.signal}) .then(() => { loading = false })