From 31995b7c4effda961a288d44c1ca93bac0f5f5d2 Mon Sep 17 00:00:00 2001 From: Wietse Wind Date: Sun, 1 Oct 2023 02:23:55 +0200 Subject: [PATCH] Also store ledger information --- lib/onLedger.mjs | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/lib/onLedger.mjs b/lib/onLedger.mjs index f9aa6c7..f6bf36a 100644 --- a/lib/onLedger.mjs +++ b/lib/onLedger.mjs @@ -43,7 +43,20 @@ const onLedger = async ({ : []), ].map(query => query.then(results => { if (results?.validated && results?.ledger_index === ledger?.ledger_index && results?.ledger_hash === ledger?.ledger_hash) { - if (results?.ledger?.transactions && obtainedBinaryTxLedgers.indexOf(ledger.ledger_index) < 0) { + if ( + results?.ledger?.transactions + && Array.isArray(results.ledger.transactions) + && results.ledger.transactions.length > 0 + && obtainedBinaryTxLedgers.indexOf(ledger.ledger_index) < 0 + ) { + /** + * Store in array, so if more ledger events come in and they + * also result in a response here, it won't be saved again. + * So yes: events will come in multiple times if multiple + * nodes are connected, and yes, multiple promises will be + * fired to fetch the ledger information, but then only + * the first one will be stored. + */ obtainedBinaryTxLedgers.unshift(results.ledger_index) obtainedBinaryTxLedgers.length = 250 @@ -54,7 +67,13 @@ const onLedger = async ({ } }) } - if (results?.ledger?.parent_hash && obtainedHumanReadableLedgers.indexOf(ledger.ledger_index) < 0) { + if ( + results?.ledger?.parent_hash + && obtainedHumanReadableLedgers.indexOf(ledger.ledger_index) < 0 + ) { + /** + * See comment above "Store in array" ... - first one will be stored + */ obtainedHumanReadableLedgers.unshift(results.ledger_index) obtainedHumanReadableLedgers.length = 250