Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
- changed: Replace Thorchain Savers quoting with an information modal about the shutdown.
- fixed: Show correct staked balance for deprecated Velodrome pools
- fixed: Crash when retrieving `exchangeRates` in some situations when no internet is available
- fixed: Transaction metadata loading bugs.

## 4.21.1 (2025-01-28)

Expand Down
14 changes: 8 additions & 6 deletions src/hooks/useTransactionList.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,12 @@ export function useTransactionList(wallet: EdgeCurrencyWallet, tokenId: EdgeToke
// Reset our mutable state to an empty list:
let atEnd = false
const changedTxs = new Map<string, EdgeTransaction>()
const txs: EdgeTransaction[] = []
const streamedTxs: EdgeTransaction[] = []

// Sends the mutable state to React,
// merging the two transaction lists together:
function requestRender() {
const mergedTxs = txs.filter(tx => !changedTxs.has(tx.txid))
const mergedTxs = streamedTxs.filter(tx => !changedTxs.has(tx.txid))
mergedTxs.push(...changedTxs.values())
mergedTxs.sort((a, b) => b.date - a.date)

Expand Down Expand Up @@ -84,8 +84,10 @@ export function useTransactionList(wallet: EdgeCurrencyWallet, tokenId: EdgeToke
// but just overlay the new transactions over the old ones:
const cleanupChanged = wallet.on('transactionsChanged', txs => {
let relevant = false
const existingTxidsSet = new Set<string>()
streamedTxs.forEach(tx => existingTxidsSet.add(tx.txid))
for (const tx of txs) {
if (tx.tokenId === tokenId) {
if (tx.tokenId === tokenId && existingTxidsSet.has(tx.txid)) {
relevant = true
changedTxs.set(tx.txid, tx)
}
Expand Down Expand Up @@ -131,14 +133,14 @@ export function useTransactionList(wallet: EdgeCurrencyWallet, tokenId: EdgeToke
if (closed) return
if (result.done) {
atEnd = true
txs.splice(offset, Infinity) // Trim stragglers
streamedTxs.splice(offset, Infinity) // Trim stragglers
requestRender()
} else {
const { value } = result
txs.splice(offset, value.length, ...value)
streamedTxs.splice(offset, value.length, ...value)
offset += value.length
requestRender()
if (offset < txs.length) requestMore.current()
if (offset < streamedTxs.length) requestMore.current()
}
},
error => {
Expand Down
Loading