From 91e1ea6055ab3f2e90f6e9bd4a767426a82a04e0 Mon Sep 17 00:00:00 2001 From: pm47 Date: Thu, 21 Mar 2024 14:24:05 +0100 Subject: [PATCH] make invoice amount optional --- src/commonMain/kotlin/fr/acinq/lightning/bin/Api.kt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/commonMain/kotlin/fr/acinq/lightning/bin/Api.kt b/src/commonMain/kotlin/fr/acinq/lightning/bin/Api.kt index e1c8b17..41d9f1f 100644 --- a/src/commonMain/kotlin/fr/acinq/lightning/bin/Api.kt +++ b/src/commonMain/kotlin/fr/acinq/lightning/bin/Api.kt @@ -12,11 +12,13 @@ import fr.acinq.lightning.NodeParams import fr.acinq.lightning.bin.db.SqlitePaymentsDb import fr.acinq.lightning.bin.db.WalletPaymentId import fr.acinq.lightning.bin.json.ApiType.* -import fr.acinq.lightning.bin.json.ApiType.Channel import fr.acinq.lightning.blockchain.fee.FeeratePerByte import fr.acinq.lightning.blockchain.fee.FeeratePerKw import fr.acinq.lightning.channel.ChannelCommand -import fr.acinq.lightning.channel.states.* +import fr.acinq.lightning.channel.states.ChannelStateWithCommitments +import fr.acinq.lightning.channel.states.Closed +import fr.acinq.lightning.channel.states.Closing +import fr.acinq.lightning.channel.states.ClosingFeerates import fr.acinq.lightning.io.Peer import fr.acinq.lightning.io.WrappedChannelCommand import fr.acinq.lightning.payment.Bolt11Invoice @@ -99,9 +101,9 @@ class Api(private val nodeParams: NodeParams, private val peer: Peer, private va } post("createinvoice") { val formParameters = call.receiveParameters() - val amount = formParameters.getLong("amountSat").sat + val amount = formParameters.getOptionalLong("amountSat")?.sat val description = formParameters.getString("description") - val invoice = peer.createInvoice(randomBytes32(), amount.toMilliSatoshi(), Either.Left(description)) + val invoice = peer.createInvoice(randomBytes32(), amount?.toMilliSatoshi(), Either.Left(description)) formParameters["externalId"]?.takeUnless { it.isBlank() }?.let { externalId -> paymentDb.metadataQueries.insertExternalId(WalletPaymentId.IncomingPaymentId(invoice.paymentHash), externalId) } @@ -217,6 +219,8 @@ class Api(private val nodeParams: NodeParams, private val peer: Peer, private va private fun Parameters.getLong(argName: String): Long = ((this[argName] ?: missing(argName)).toLongOrNull()) ?: invalidType(argName, "integer") + private fun Parameters.getOptionalLong(argName: String): Long? = this[argName]?.let { it.toLongOrNull() ?: invalidType(argName, "integer") } + }