Add relay package
This commit is contained in:
@@ -1,10 +1,9 @@
|
||||
import {throttle} from "@welshman/lib"
|
||||
import {Repository, Relay} from "@welshman/util"
|
||||
import type {TrustedEvent} from "@welshman/util"
|
||||
import {Tracker} from "@welshman/net"
|
||||
import {custom} from "@welshman/store"
|
||||
|
||||
export const repository = new Repository<TrustedEvent>()
|
||||
export const repository = Repository.getSingleton()
|
||||
|
||||
export const relay = new Relay(repository)
|
||||
|
||||
|
||||
@@ -35,7 +35,9 @@ export const pull = async ({relays, filters}: AppSyncOpts) => {
|
||||
relays.map(async relay => {
|
||||
await (hasNegentropy(relay)
|
||||
? basePull({filters, events, relays: [relay]})
|
||||
: pullWithoutNegentropy({filters, relays: [relay]}))
|
||||
: new Promise(resolve => {
|
||||
new SingleRequest({filters, relay, closeOnEose: true}).on(RequestEvent.Close, resolve)
|
||||
})
|
||||
}),
|
||||
)
|
||||
}
|
||||
@@ -47,19 +49,10 @@ export const push = async ({relays, filters}: AppSyncOpts) => {
|
||||
relays.map(async relay => {
|
||||
await (hasNegentropy(relay)
|
||||
? basePush({filters, events, relays: [relay]})
|
||||
: pushWithoutNegentropy({events, relays: [relay]}))
|
||||
: new Promise(resolve => {
|
||||
new SinglePublish({events, relay}).on(PublishEvent.Complete, resolve)
|
||||
}))
|
||||
}),
|
||||
)
|
||||
}
|
||||
|
||||
export const sync = async ({relays, filters}: AppSyncOpts) => {
|
||||
const events = query(filters).filter(isSignedEvent)
|
||||
|
||||
await Promise.all(
|
||||
relays.map(async relay => {
|
||||
await (hasNegentropy(relay)
|
||||
? baseSync({filters, events, relays: [relay]})
|
||||
: syncWithoutNegentropy({filters, events, relays: [relay]}))
|
||||
}),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ import {
|
||||
isUnwrappedEvent,
|
||||
isSignedEvent,
|
||||
} from "@welshman/util"
|
||||
import {publish, PublishStatus} from "@welshman/net"
|
||||
import {MultiPublish, PublishStatus} from "@welshman/net"
|
||||
import {repository, tracker} from "./core.js"
|
||||
import {pubkey, getSession, getSigner} from "./session.js"
|
||||
|
||||
@@ -225,7 +225,7 @@ thunkWorker.addGlobalHandler((thunk: Thunk) => {
|
||||
}
|
||||
|
||||
// Send it off
|
||||
const pub = publish({event: signedEvent, relays: thunk.request.relays})
|
||||
const pub = new MultiPublish({event: signedEvent, relays: thunk.request.relays})
|
||||
|
||||
// Copy the signature over since we had deferred it
|
||||
const savedEvent = repository.getEvent(signedEvent.id) as SignedEvent
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import {writable, derived} from "svelte/store"
|
||||
import {type Zapper} from "@welshman/util"
|
||||
import {type SubscribeRequestWithHandlers} from "@welshman/net"
|
||||
import {Zapper} from "@welshman/util"
|
||||
import {MultiRequestOptions} from "@welshman/net"
|
||||
import {
|
||||
ctx,
|
||||
identity,
|
||||
@@ -80,10 +80,7 @@ export const {
|
||||
}),
|
||||
})
|
||||
|
||||
export const deriveZapperForPubkey = (
|
||||
pubkey: string,
|
||||
request: Partial<SubscribeRequestWithHandlers> = {},
|
||||
) =>
|
||||
export const deriveZapperForPubkey = (pubkey: string, request: Partial<MultiRequestOptions> = {}) =>
|
||||
derived([zappersByLnurl, deriveProfile(pubkey, request)], ([$zappersByLnurl, $profile]) => {
|
||||
if (!$profile?.lnurl) {
|
||||
return undefined
|
||||
|
||||
Reference in New Issue
Block a user