Riccardo Balbo 9c55f1ebe2
Implement deposit as receive paidAction (#1570)
* lnurlp paid action

* lnurlp has 10% sybil fee

* fix merge issue

* Update pages/settings/index.js

Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>

* fix notifications

* fix destructure

* pass lud18Data to lnurlp action

* minor cleanup

* truncate invoice description to permitted length

* remove redundant targetUserId

* lnurlp paidAction -> receive paidAction

* remove redundant user query

* improve determining if peer is invoiceable

* fix inconsistent relative imports

* prevent paying self-proxied invoices and better held invoice cancellation

* make gun/horse streak zap specific

* unique withdrawal hash should apply to confirmed payments too

* prevent receive from exceeding wallet limits

* notifications

* fix notifications & enhance invoice/withdrawl page

* notification indicator, proxy receive based on threshold, refinements

---------

Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
Co-authored-by: k00b <k00b@stacker.news>
2024-11-15 18:38:14 -06:00

38 lines
1.0 KiB
JavaScript

import { msatsToSats } from '@/lib/format'
export * from '@/wallets/phoenixd'
export async function testCreateInvoice ({ url, secondaryPassword }) {
return await createInvoice(
{ msats: 1000, description: 'SN test invoice', expiry: 1 },
{ url, secondaryPassword })
}
export async function createInvoice (
{ msats, description, descriptionHash, expiry },
{ url, secondaryPassword }
) {
// https://phoenix.acinq.co/server/api#create-bolt11-invoice
const path = '/createinvoice'
const headers = new Headers()
headers.set('Authorization', 'Basic ' + Buffer.from(':' + secondaryPassword).toString('base64'))
headers.set('Content-type', 'application/x-www-form-urlencoded')
const body = new URLSearchParams()
body.append('description', description)
body.append('amountSat', msatsToSats(msats))
const res = await fetch(url + path, {
method: 'POST',
headers,
body
})
if (!res.ok) {
throw new Error(`POST ${res.url}: ${res.status} ${res.statusText}`)
}
const payment = await res.json()
return payment.serialized
}