33 lines
984 B
TypeScript
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
|
|
}
|