fix: one transaction history row per value movement (closes #177)
Some checks failed
check / check (push) Has been cancelled
Some checks failed
check / check (push) Has been cancelled
A plain ERC-20 transfer produced two rows: the token-transfer row and the zero-ETH native row for the same hash. parseTx leaves method "transfer" out of the display-level contract-call case, so the merge loop's direction === "contract" test never absorbed the native side. The merge is now the pure mergeTransactions(txs, tokenTransfers) in src/shared/transactions.js, unit tested directly. It keys the native entry by hash and each token transfer by hash plus token contract, and drops the native entry when it moved no ETH and a token transfer shares its hash. A native entry that moved ETH survives beside the token rows, a zero-value native transaction with no token transfer on its hash still displays, and a display-level contract call keeps consolidating its legs into one row. The dust filter's isContractCall exemption is unchanged: it still carries approve and other zero-ETH calls that have no token row to be represented by.
This commit is contained in:
4
TODO.md
4
TODO.md
@@ -51,6 +51,10 @@ undefined identifiers, which is how
|
||||
remaining wallets, the selection only moves when it was deleted, and the
|
||||
active-address change is broadcast to connected sites
|
||||
([#156](https://git.eeqj.de/sneak/AutistMask/issues/156)).
|
||||
- 2026-08-11: One row per on-chain value movement in transaction history: the
|
||||
merge moved into the pure `mergeTransactions` and the zero-ETH native side of
|
||||
a plain ERC-20 transfer absorbed into its token row
|
||||
([#177](https://git.eeqj.de/sneak/AutistMask/issues/177)).
|
||||
- 2026-08-11: `TODO.md` Workflow rewritten to the branch-and-PR-per-issue model
|
||||
on `next`, with Status and Next Step refreshed
|
||||
([#191](https://git.eeqj.de/sneak/AutistMask/issues/191)).
|
||||
|
||||
Reference in New Issue
Block a user