Change requests from classes to functions
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import {now} from "@welshman/lib"
|
||||
import {Nip01Signer} from "@welshman/signer"
|
||||
import {TrustedEvent, StampedEvent, Filter} from "@welshman/util"
|
||||
import {MultiRequest, MultiPublish, PublishEvent, RequestEvent, AdapterContext} from "@welshman/net"
|
||||
import {request, MultiPublish, PublishEvent, AdapterContext} from "@welshman/net"
|
||||
|
||||
export type DVMHandler = {
|
||||
stop?: () => void
|
||||
@@ -50,10 +50,13 @@ export class DVM {
|
||||
filter["#p"] = [pubkey]
|
||||
}
|
||||
|
||||
const req = new MultiRequest({relays, filters: [filter], context})
|
||||
|
||||
req.on(RequestEvent.Event, this.onEvent)
|
||||
req.on(RequestEvent.Close, resolve)
|
||||
request({
|
||||
relays,
|
||||
filters: [filter],
|
||||
context,
|
||||
onClose: resolve,
|
||||
onEvent: this.onEvent,
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
+24
-17
@@ -1,6 +1,6 @@
|
||||
import {Emitter, now} from "@welshman/lib"
|
||||
import {TrustedEvent, SignedEvent, Filter} from "@welshman/util"
|
||||
import {MultiRequest, MultiPublish, RequestEvent, AdapterContext} from "@welshman/net"
|
||||
import {request, MultiPublish, AdapterContext} from "@welshman/net"
|
||||
|
||||
export enum DVMEvent {
|
||||
Progress = "progress",
|
||||
@@ -17,13 +17,12 @@ export type DVMRequestOptions = {
|
||||
}
|
||||
|
||||
export type DVMRequest = {
|
||||
request: DVMRequestOptions
|
||||
options: DVMRequestOptions
|
||||
emitter: Emitter
|
||||
sub: MultiRequest
|
||||
pub: MultiPublish
|
||||
}
|
||||
|
||||
export const makeDvmRequest = (request: DVMRequestOptions) => {
|
||||
export const makeDvmRequest = (options: DVMRequestOptions) => {
|
||||
const emitter = new Emitter()
|
||||
const {
|
||||
event,
|
||||
@@ -32,25 +31,33 @@ export const makeDvmRequest = (request: DVMRequestOptions) => {
|
||||
timeout = 30_000,
|
||||
autoClose = true,
|
||||
reportProgress = true,
|
||||
} = request
|
||||
} = options
|
||||
const kind = event.kind + 1000
|
||||
const kinds = reportProgress ? [kind, 7000] : [kind]
|
||||
const filters: Filter[] = [{kinds, since: now() - 60, "#e": [event.id]}]
|
||||
const abortController = new AbortController()
|
||||
const signal = AbortSignal.any([abortController.signal, AbortSignal.timeout(timeout)])
|
||||
|
||||
const sub = new MultiRequest({relays, filters, timeout, context})
|
||||
const pub = new MultiPublish({relays, event, timeout, context})
|
||||
request({
|
||||
signal,
|
||||
relays,
|
||||
filters,
|
||||
context,
|
||||
onEvent: (event: TrustedEvent, url: string) => {
|
||||
if (event.kind === 7000) {
|
||||
emitter.emit(DVMEvent.Progress, url, event)
|
||||
} else {
|
||||
emitter.emit(DVMEvent.Result, url, event)
|
||||
|
||||
sub.on(RequestEvent.Event, (event: TrustedEvent, url: string) => {
|
||||
if (event.kind === 7000) {
|
||||
emitter.emit(DVMEvent.Progress, url, event)
|
||||
} else {
|
||||
emitter.emit(DVMEvent.Result, url, event)
|
||||
|
||||
if (autoClose) {
|
||||
sub.close()
|
||||
if (autoClose) {
|
||||
abortController.abort()
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
return {request, emitter, sub, pub} as DVMRequest
|
||||
const pub = new MultiPublish({relays, event, timeout, context})
|
||||
|
||||
|
||||
return {options, emitter, pub} as DVMRequest
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user