fix: the approval screen names the address a swap's output is paid to (closes #594)
The swap decoder read no recipient, so a swap paying its output to another address still showed Min. received. It now collects the address that every swap step, SWEEP, WRAP_ETH, UNWRAP_WETH, V4 TAKE and TAKE_ALL pays, across the whole transaction, leaving out payments to the router itself. The minimum reads Min. received only when some step pays the sender, none pays another address, and no step that may pay an address went unread: a recipient that does not decode, or a command or V4 action the decoder does not read. Otherwise it reads Min. paid out, with a Paid to line for each other address and one saying when who is paid is unknown. The approval and transaction detail screens pass the sender in. Model: opus-5-5
This commit is contained in:
@@ -87,7 +87,7 @@ function detail(data, label) {
|
||||
describe("an execute() whose input currency never decoded", () => {
|
||||
// A V4_SWAP whose sub-action params do not decode — an action encoding
|
||||
// this decoder does not know — leaves every V4 token null. The
|
||||
// BALANCE_CHECK still names the output, so the screen has a Min. received
|
||||
// BALANCE_CHECK still names the output, so the screen has a minimum
|
||||
// figure and a Token Out, and previously claimed the user was paying ETH
|
||||
// for them.
|
||||
const data = () =>
|
||||
@@ -132,7 +132,8 @@ describe("an execute() that names only an output token", () => {
|
||||
|
||||
test("still states the output it did establish", () => {
|
||||
expect(detail(data(), "Token Out").value).toContain("USDT");
|
||||
expect(detail(data(), "Min. received").value).toBe("2.0000 USDT");
|
||||
// No step pays anyone, so the minimum is not said to be received.
|
||||
expect(detail(data(), "Min. paid out").value).toBe("2.0000 USDT");
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user