From 73dbc7634c0f3d26ed05bee788bdc92e231a2e8f Mon Sep 17 00:00:00 2001 From: Roland Bewick Date: Sun, 23 Jun 2024 14:49:42 +0700 Subject: [PATCH] feat: add LDK payment createdAt and duration to payment sent event --- events/models.go | 1 + go.mod | 2 +- go.sum | 8 ++------ lnclient/ldk/ldk.go | 19 +++++++++++++++++-- lnclient/ldk/ldk_event_broadcaster.go | 2 +- 5 files changed, 22 insertions(+), 10 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/go.mod b/go.mod index 7c884b16..c7fdfc84 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/davrux/echo-logrus/v4 v4.0.3 github.com/elnosh/gonuts v0.1.1-0.20240602162005-49da741613e4 github.com/getAlby/glalby-go v0.0.0-20240616134525-322750d01f8d - github.com/getAlby/ldk-node-go v0.0.0-20240616134337-9740e8149bc0 + github.com/getAlby/ldk-node-go v0.0.0-20240623072352-6f823b4fa9c7 github.com/go-gormigrate/gormigrate/v2 v2.1.1 github.com/gorilla/sessions v1.2.2 github.com/labstack/echo-contrib v0.14.1 diff --git a/go.sum b/go.sum index 62121059..a499a166 100644 --- a/go.sum +++ b/go.sum @@ -186,14 +186,10 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= -github.com/getAlby/glalby-go v0.0.0-20240416174357-e6e2faa2fbd8 h1:mJsdhUb8hmSSSLR2GQFw9BGtnJP7xmKB/XQxDt3DvAo= -github.com/getAlby/glalby-go v0.0.0-20240416174357-e6e2faa2fbd8/go.mod h1:ViyJvjlvv0GCesTJ7mb3fBo4G+/qsujDAFN90xZ7a9U= github.com/getAlby/glalby-go v0.0.0-20240616134525-322750d01f8d h1:ouIUrgIJXgf+foCDfOU67oNSraBeED15vCoPvaanU1I= github.com/getAlby/glalby-go v0.0.0-20240616134525-322750d01f8d/go.mod h1:ViyJvjlvv0GCesTJ7mb3fBo4G+/qsujDAFN90xZ7a9U= -github.com/getAlby/ldk-node-go v0.0.0-20240614062656-d4de573a1996 h1:UULF8HX3z0kxgppzDX67oG/7t1Es+tpZogqtsYsguX0= -github.com/getAlby/ldk-node-go v0.0.0-20240614062656-d4de573a1996/go.mod h1:8BRjtKcz8E0RyYTPEbMS8VIdgredcGSLne8vHDtcRLg= -github.com/getAlby/ldk-node-go v0.0.0-20240616134337-9740e8149bc0 h1:7BiZOIL+rAbR+waoXVYJCsMXIOTVBy/Ex4u2WoV4kTw= -github.com/getAlby/ldk-node-go v0.0.0-20240616134337-9740e8149bc0/go.mod h1:8BRjtKcz8E0RyYTPEbMS8VIdgredcGSLne8vHDtcRLg= +github.com/getAlby/ldk-node-go v0.0.0-20240623072352-6f823b4fa9c7 h1:ETuDVXtImG84yIa8hMZPHS4cDC908NjtX0v70eagNv8= +github.com/getAlby/ldk-node-go v0.0.0-20240623072352-6f823b4fa9c7/go.mod h1:8BRjtKcz8E0RyYTPEbMS8VIdgredcGSLne8vHDtcRLg= github.com/getsentry/raven-go v0.2.0 h1:no+xWJRb5ZI7eE8TWgIq1jLulQiIoLG0IfYxv5JYMGs= github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= diff --git a/lnclient/ldk/ldk.go b/lnclient/ldk/ldk.go index 62c6bb42..18e772db 100644 --- a/lnclient/ldk/ldk.go +++ b/lnclient/ldk/ldk.go @@ -1039,8 +1039,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 } @@ -1224,10 +1228,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" )