From a021e3104feda9a6349e69c495cb809d877fe148 Mon Sep 17 00:00:00 2001 From: Roland <33993199+rolznz@users.noreply.github.com> Date: Mon, 24 Jun 2024 14:33:47 +0700 Subject: [PATCH] feat: add LDK payment createdAt and duration to payment sent event (#484) --- events/models.go | 1 + lnclient/ldk/ldk.go | 19 +++++++++++++++++-- lnclient/ldk/ldk_event_broadcaster.go | 2 +- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/events/models.go b/events/models.go index 22aef1c5..68d53fd3 100644 --- a/events/models.go +++ b/events/models.go @@ -24,6 +24,7 @@ type PaymentReceivedEventProperties struct { type PaymentSentEventProperties struct { PaymentHash string `json:"payment_hash"` + Duration uint64 `json:"duration"` } type ChannelBackupEvent struct { diff --git a/lnclient/ldk/ldk.go b/lnclient/ldk/ldk.go index a8d9a9ad..41821488 100644 --- a/lnclient/ldk/ldk.go +++ b/lnclient/ldk/ldk.go @@ -1044,8 +1044,12 @@ func (ls *LDKService) ldkPaymentToTransaction(payment *ldk_node.PaymentDetails) if isSpontaneousPaymentKind { // keysend payment lastUpdate := int64(payment.LastUpdate) - // TODO: use proper created at time (currently no access to created time for keysend payments) - createdAt = lastUpdate + createdAt = int64(payment.CreatedAt) + // TODO: remove this check some point in the future + // all payments after v0.6.2 will have createdAt set + if createdAt == 0 { + createdAt = lastUpdate + } if payment.Status == ldk_node.PaymentStatusSucceeded { settledAt = &lastUpdate } @@ -1229,10 +1233,21 @@ func (ls *LDKService) handleLdkEvent(event *ldk_node.Event) { }, }) case ldk_node.EventPaymentSuccessful: + var duration uint64 = 0 + if eventType.PaymentId != nil { + payment := ls.node.Payment(*eventType.PaymentId) + if payment == nil { + logger.Logger.WithField("payment_id", *eventType.PaymentId).Error("could not find LDK payment") + return + } + duration = payment.LastUpdate - payment.CreatedAt + } + ls.eventPublisher.Publish(&events.Event{ Event: "nwc_payment_sent", Properties: &events.PaymentSentEventProperties{ PaymentHash: eventType.PaymentHash, + Duration: duration, }, }) } diff --git a/lnclient/ldk/ldk_event_broadcaster.go b/lnclient/ldk/ldk_event_broadcaster.go index c0b35e6c..4b734b08 100644 --- a/lnclient/ldk/ldk_event_broadcaster.go +++ b/lnclient/ldk/ldk_event_broadcaster.go @@ -6,9 +6,9 @@ import ( "time" "github.com/getAlby/ldk-node-go/ldk_node" + // "github.com/getAlby/nostr-wallet-connect/ldk_node" "github.com/getAlby/nostr-wallet-connect/logger" - // "github.com/getAlby/nostr-wallet-connect/ldk_node" "github.com/sirupsen/logrus" )