From 83dd62a98cb11e2f84d503fdedfeda3821b1d5a8 Mon Sep 17 00:00:00 2001 From: Dominique Padiou <5765435+dpad85@users.noreply.github.com> Date: Tue, 19 Mar 2024 11:58:39 +0100 Subject: [PATCH] Add externalId to PaymentReceived event PaymentSent is also not a ApiEvent anymore. --- .../kotlin/fr/acinq/lightning/bin/Main.kt | 21 ++++++++----------- .../lightning/bin/json/JsonSerializers.kt | 6 +++--- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/commonMain/kotlin/fr/acinq/lightning/bin/Main.kt b/src/commonMain/kotlin/fr/acinq/lightning/bin/Main.kt index a2876cd..28ec35d 100644 --- a/src/commonMain/kotlin/fr/acinq/lightning/bin/Main.kt +++ b/src/commonMain/kotlin/fr/acinq/lightning/bin/Main.kt @@ -28,6 +28,7 @@ import fr.acinq.lightning.bin.conf.getOrGenerateSeed import fr.acinq.lightning.bin.conf.readConfFile import fr.acinq.lightning.bin.db.SqliteChannelsDb import fr.acinq.lightning.bin.db.SqlitePaymentsDb +import fr.acinq.lightning.bin.db.WalletPaymentId import fr.acinq.lightning.bin.db.payments.LightningOutgoingQueries import fr.acinq.lightning.bin.json.ApiType import fr.acinq.lightning.bin.logs.FileLogWriter @@ -235,12 +236,14 @@ class Phoenixd : CliktCommand() { lease_typeAdapter = EnumColumnAdapter() ) ) + val channelsDb = SqliteChannelsDb(driver, database) + val paymentsDb = SqlitePaymentsDb(database) val electrum = ElectrumClient(scope, loggerFactory) val peer = Peer( nodeParams = nodeParams, walletParams = lsp.walletParams, watcher = ElectrumWatcher(electrum, scope, loggerFactory), db = object : Databases { - override val channels: ChannelsDb get() = SqliteChannelsDb(driver, database) - override val payments: PaymentsDb get() = SqlitePaymentsDb(database) + override val channels: ChannelsDb get() = channelsDb + override val payments: PaymentsDb get() = paymentsDb }, socketBuilder = TcpSocket.Builder(), scope ) @@ -250,16 +253,10 @@ class Phoenixd : CliktCommand() { nodeParams.nodeEvents .collect { when { - it is PaymentEvents.PaymentReceived && it.amount > 0.msat -> emit(ApiType.PaymentReceived(it)) - else -> {} - } - } - } - launch { - peer.eventsFlow - .collect { - when { - it is fr.acinq.lightning.io.PaymentSent -> emit(ApiType.PaymentSent(it)) + it is PaymentEvents.PaymentReceived && it.amount > 0.msat -> { + val metadata = paymentsDb.metadataQueries.get(WalletPaymentId.IncomingPaymentId(it.paymentHash)) + emit(ApiType.PaymentReceived(it, metadata)) + } else -> {} } } diff --git a/src/commonMain/kotlin/fr/acinq/lightning/bin/json/JsonSerializers.kt b/src/commonMain/kotlin/fr/acinq/lightning/bin/json/JsonSerializers.kt index 442b265..d400dc1 100644 --- a/src/commonMain/kotlin/fr/acinq/lightning/bin/json/JsonSerializers.kt +++ b/src/commonMain/kotlin/fr/acinq/lightning/bin/json/JsonSerializers.kt @@ -72,13 +72,13 @@ sealed class ApiType { @Serializable @SerialName("payment_received") - data class PaymentReceived(@SerialName("amountSat") val amount: Satoshi, val paymentHash: ByteVector32) : ApiEvent() { - constructor(event: fr.acinq.lightning.PaymentEvents.PaymentReceived) : this(event.amount.truncateToSatoshi(), event.paymentHash) + data class PaymentReceived(@SerialName("amountSat") val amount: Satoshi, val paymentHash: ByteVector32, val externalId: String?) : ApiEvent() { + constructor(event: fr.acinq.lightning.PaymentEvents.PaymentReceived, metadata: PaymentMetadata?) : this(event.amount.truncateToSatoshi(), event.paymentHash, metadata?.externalId) } @Serializable @SerialName("payment_sent") - data class PaymentSent(@SerialName("recipientAmountSat") val recipientAmount: Satoshi, @SerialName("routingFeeSat") val routingFee: Satoshi, @SerialName("paymentId") val uuid: UUID, val paymentHash: ByteVector32, val paymentPreimage: ByteVector32) : ApiEvent() { + data class PaymentSent(@SerialName("recipientAmountSat") val recipientAmount: Satoshi, @SerialName("routingFeeSat") val routingFee: Satoshi, @SerialName("paymentId") val uuid: UUID, val paymentHash: ByteVector32, val paymentPreimage: ByteVector32) : ApiType() { constructor(event: fr.acinq.lightning.io.PaymentSent) : this( event.payment.recipientAmount.truncateToSatoshi(), event.payment.routingFee.truncateToSatoshi(),