Eagerly load profiles

This commit is contained in:
Jon Staab
2024-09-13 12:39:12 -07:00
parent c200fdb38d
commit 97b0d78b9d
+10 -2
View File
@@ -1,12 +1,13 @@
import {partition} from "@welshman/lib" import {partition} from "@welshman/lib"
import {defaultOptimizeSubscriptions, getDefaultNetContext as originalGetDefaultNetContext} from "@welshman/net" import {defaultOptimizeSubscriptions, getDefaultNetContext as originalGetDefaultNetContext} from "@welshman/net"
import type {Subscription, RelaysAndFilters, NetContext} from "@welshman/net" import type {Subscription, RelaysAndFilters, NetContext} from "@welshman/net"
import {unionFilters, isSignedEvent, hasValidSignature} from "@welshman/util" import {WRAP, unionFilters, isSignedEvent, hasValidSignature} from "@welshman/util"
import type {TrustedEvent} from "@welshman/util" import type {TrustedEvent} from "@welshman/util"
import {tracker, repository} from './core' import {tracker, repository} from './core'
import {makeRouter, getFilterSelections} from './router' import {makeRouter, getFilterSelections} from './router'
import {onAuth, getSession} from './session' import {onAuth, getSession} from './session'
import type {Router} from './router' import type {Router} from './router'
import {loadProfile} from './profiles'
export type AppContext = { export type AppContext = {
router: Router router: Router
@@ -20,7 +21,14 @@ export type AppContext = {
export const getDefaultNetContext = (overrides: Partial<NetContext> = {}) => ({ export const getDefaultNetContext = (overrides: Partial<NetContext> = {}) => ({
...originalGetDefaultNetContext(), ...originalGetDefaultNetContext(),
onAuth: onAuth, onAuth: onAuth,
onEvent: (url: string, event: TrustedEvent) => tracker.track(event.id, url), onEvent: (url: string, event: TrustedEvent) => {
tracker.track(event.id, url)
// Eagerly load profiles since they're critical to UX
if (event.kind !== WRAP) {
loadProfile(event.pubkey)
}
},
isDeleted: (url: string, event: TrustedEvent) => repository.isDeleted(event), isDeleted: (url: string, event: TrustedEvent) => repository.isDeleted(event),
isValid: (url: string, event: TrustedEvent) => isValid: (url: string, event: TrustedEvent) =>
getSession(event.pubkey) || (isSignedEvent(event) && hasValidSignature(event)), getSession(event.pubkey) || (isSignedEvent(event) && hasValidSignature(event)),