lnrpc: refactor populating lnrpc.Transaction inside SubscribeTransaction

This commit is contained in:
Bjarne Magnussen
2021-10-14 08:41:25 +02:00
parent f022e557bf
commit 93e5de9306
2 changed files with 30 additions and 51 deletions

View File

@ -16,26 +16,20 @@ const (
RegisterRPCMiddlewareURI = "/lnrpc.Lightning/RegisterRPCMiddleware" RegisterRPCMiddlewareURI = "/lnrpc.Lightning/RegisterRPCMiddleware"
) )
// RPCTransactionDetails returns a set of rpc transaction details. // RPCTransaction returns a rpc transaction.
func RPCTransactionDetails(txns []*lnwallet.TransactionDetail) *TransactionDetails { func RPCTransaction(tx *lnwallet.TransactionDetail) *Transaction {
txDetails := &TransactionDetails{
Transactions: make([]*Transaction, len(txns)),
}
for i, tx := range txns {
var destAddresses []string var destAddresses []string
for _, destAddress := range tx.DestAddresses { for _, destAddress := range tx.DestAddresses {
destAddresses = append(destAddresses, destAddress.EncodeAddress()) destAddresses = append(destAddresses, destAddress.EncodeAddress())
} }
// We also get unconfirmed transactions, so BlockHash can be // We also get unconfirmed transactions, so BlockHash can be nil.
// nil.
blockHash := "" blockHash := ""
if tx.BlockHash != nil { if tx.BlockHash != nil {
blockHash = tx.BlockHash.String() blockHash = tx.BlockHash.String()
} }
txDetails.Transactions[i] = &Transaction{ return &Transaction{
TxHash: tx.Hash.String(), TxHash: tx.Hash.String(),
Amount: int64(tx.Value), Amount: int64(tx.Value),
NumConfirmations: tx.NumConfirmations, NumConfirmations: tx.NumConfirmations,
@ -47,6 +41,16 @@ func RPCTransactionDetails(txns []*lnwallet.TransactionDetail) *TransactionDetai
RawTxHex: hex.EncodeToString(tx.RawTx), RawTxHex: hex.EncodeToString(tx.RawTx),
Label: tx.Label, Label: tx.Label,
} }
}
// RPCTransactionDetails returns a set of rpc transaction details.
func RPCTransactionDetails(txns []*lnwallet.TransactionDetail) *TransactionDetails {
txDetails := &TransactionDetails{
Transactions: make([]*Transaction, len(txns)),
}
for i, tx := range txns {
txDetails.Transactions[i] = RPCTransaction(tx)
} }
// Sort transactions by number of confirmations rather than height so // Sort transactions by number of confirmations rather than height so

View File

@ -5314,38 +5314,13 @@ func (r *rpcServer) SubscribeTransactions(req *lnrpc.GetTransactionsRequest,
for { for {
select { select {
case tx := <-txClient.ConfirmedTransactions(): case tx := <-txClient.ConfirmedTransactions():
destAddresses := make([]string, 0, len(tx.DestAddresses)) detail := lnrpc.RPCTransaction(tx)
for _, destAddress := range tx.DestAddresses {
destAddresses = append(destAddresses, destAddress.EncodeAddress())
}
detail := &lnrpc.Transaction{
TxHash: tx.Hash.String(),
Amount: int64(tx.Value),
NumConfirmations: tx.NumConfirmations,
BlockHash: tx.BlockHash.String(),
BlockHeight: tx.BlockHeight,
TimeStamp: tx.Timestamp,
TotalFees: tx.TotalFees,
DestAddresses: destAddresses,
RawTxHex: hex.EncodeToString(tx.RawTx),
}
if err := updateStream.Send(detail); err != nil { if err := updateStream.Send(detail); err != nil {
return err return err
} }
case tx := <-txClient.UnconfirmedTransactions(): case tx := <-txClient.UnconfirmedTransactions():
var destAddresses []string detail := lnrpc.RPCTransaction(tx)
for _, destAddress := range tx.DestAddresses {
destAddresses = append(destAddresses, destAddress.EncodeAddress())
}
detail := &lnrpc.Transaction{
TxHash: tx.Hash.String(),
Amount: int64(tx.Value),
TimeStamp: tx.Timestamp,
TotalFees: tx.TotalFees,
DestAddresses: destAddresses,
RawTxHex: hex.EncodeToString(tx.RawTx),
}
if err := updateStream.Send(detail); err != nil { if err := updateStream.Send(detail); err != nil {
return err return err
} }