Files
smesh/src/lib/lightning.ts
2025-03-01 23:52:05 +08:00

33 lines
984 B
TypeScript

import { TProfile } from '@/types'
import { Invoice } from '@getalby/lightning-tools'
import { isEmail } from './common'
export function getAmountFromInvoice(invoice: string): number {
const _invoice = new Invoice({ pr: invoice }) // TODO: need to validate
return _invoice.satoshi
}
export function formatAmount(amount: number) {
if (amount < 1000) return amount
if (amount < 1000000) return `${Math.round(amount / 100) / 10}k`
return `${Math.round(amount / 100000) / 10}M`
}
export function getLightningAddressFromProfile(profile: TProfile) {
// Some clients have incorrectly filled in the positions for lud06 and lud16
const { lud16: a, lud06: b } = profile
let lud16: string | undefined
let lud06: string | undefined
if (a && isEmail(a)) {
lud16 = a
} else if (b && isEmail(b)) {
lud16 = b
} else if (b && b.startsWith('lnurl')) {
lud06 = b
} else if (a && a.startsWith('lnurl')) {
lud06 = a
}
return lud16 || lud06 || undefined
}