partial nip57 support.
This commit is contained in:
parent
24406b5679
commit
a330b97590
14
event.ts
14
event.ts
|
@ -25,20 +25,22 @@ export enum Kind {
|
|||
Article = 30023
|
||||
}
|
||||
|
||||
export type Event = {
|
||||
id?: string
|
||||
sig?: string
|
||||
export type EventTemplate = {
|
||||
kind: Kind
|
||||
tags: string[][]
|
||||
pubkey: string
|
||||
content: string
|
||||
created_at: number
|
||||
}
|
||||
|
||||
export function getBlankEvent(): Event {
|
||||
export type Event = EventTemplate & {
|
||||
pubkey: string
|
||||
id: string
|
||||
sig: string
|
||||
}
|
||||
|
||||
export function getBlankEvent(): EventTemplate {
|
||||
return {
|
||||
kind: 255,
|
||||
pubkey: '',
|
||||
content: '',
|
||||
tags: [],
|
||||
created_at: 0
|
||||
|
|
1
index.ts
1
index.ts
|
@ -9,6 +9,7 @@ export * as nip05 from './nip05'
|
|||
export * as nip06 from './nip06'
|
||||
export * as nip19 from './nip19'
|
||||
export * as nip26 from './nip26'
|
||||
export * as nip57 from './nip57'
|
||||
|
||||
export * as fj from './fakejson'
|
||||
export * as utils from './utils'
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
import {bech32} from '@scure/base'
|
||||
|
||||
import {Event, EventTemplate} from './event'
|
||||
import {utf8Decoder} from './utils'
|
||||
|
||||
var _fetch: any
|
||||
|
||||
try {
|
||||
_fetch = fetch
|
||||
} catch {}
|
||||
|
||||
export function useFetchImplementation(fetchImplementation: any) {
|
||||
_fetch = fetchImplementation
|
||||
}
|
||||
|
||||
export async function getZapEndpoint(metadata: Event): Promise<null | string> {
|
||||
try {
|
||||
let lnurl: string = ''
|
||||
let {lud06, lud16} = JSON.parse(metadata.content)
|
||||
if (lud06) {
|
||||
let {words} = bech32.decode(lud06, 1000)
|
||||
let data = bech32.fromWords(words)
|
||||
lnurl = utf8Decoder.decode(data)
|
||||
} else if (lud16) {
|
||||
let [name, domain] = lud16.split('@')
|
||||
lnurl = `https://${domain}/.well-known/lnurlp/${name}`
|
||||
} else {
|
||||
return null
|
||||
}
|
||||
|
||||
let res = await _fetch(lnurl)
|
||||
let body = await res.json()
|
||||
|
||||
if (body.allowsNostr && body.nostrPubkey) {
|
||||
return body.callback
|
||||
}
|
||||
} catch (err) {
|
||||
/*-*/
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
|
||||
export function makeZapRequest({
|
||||
profile,
|
||||
event,
|
||||
amount,
|
||||
relays,
|
||||
comment = ''
|
||||
}: {
|
||||
profile: string
|
||||
event: string | null
|
||||
amount: string
|
||||
comment: string
|
||||
relays: string[]
|
||||
}): EventTemplate {
|
||||
let zr = {
|
||||
kind: 9734,
|
||||
created_at: Math.round(Date.now() / 1000),
|
||||
content: comment,
|
||||
tags: [
|
||||
['p', profile],
|
||||
['amount', amount],
|
||||
['relays', ...relays]
|
||||
]
|
||||
}
|
||||
|
||||
if (event) {
|
||||
zr.tags.push(['e', event])
|
||||
}
|
||||
|
||||
return zr
|
||||
}
|
Loading…
Reference in New Issue