From a66ffddfe431ec8684977955683bbf12d93a6ce9 Mon Sep 17 00:00:00 2001 From: Ricardo Guilherme Schmidt <3esmit@gmail.com> Date: Fri, 17 Jul 2026 19:54:44 -0300 Subject: [PATCH] fix(amm): complete repeated context refreshes --- apps/amm/src/AmmUiBackend.cpp | 4 +++- apps/amm/tests/qml/tst_LiquidityPage.qml | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/apps/amm/src/AmmUiBackend.cpp b/apps/amm/src/AmmUiBackend.cpp index 5def81a..a344fcd 100644 --- a/apps/amm/src/AmmUiBackend.cpp +++ b/apps/amm/src/AmmUiBackend.cpp @@ -165,8 +165,10 @@ void AmmUiBackend::refreshNewPositionContext(QVariantMap request) m_newPosition->contextAsync( request, m_network.snapshot(), isWalletOpen(), refreshWalletAccounts, [this, generation](QVariantMap result) { - if (generation == m_contextGeneration) + if (generation == m_contextGeneration) { + result.insert(QStringLiteral("requestId"), generation); setNewPositionContext(std::move(result)); + } }); } diff --git a/apps/amm/tests/qml/tst_LiquidityPage.qml b/apps/amm/tests/qml/tst_LiquidityPage.qml index bb0399c..56a66f1 100644 --- a/apps/amm/tests/qml/tst_LiquidityPage.qml +++ b/apps/amm/tests/qml/tst_LiquidityPage.qml @@ -35,6 +35,7 @@ TestCase { "feeTiers": [] }) property int contextRefreshCalls: 0 + property int contextRequestId: 0 property int submitCalls: 0 property var lastContextRefreshRequest: ({}) @@ -54,6 +55,9 @@ TestCase { function refreshNewPositionContext(request) { ++contextRefreshCalls lastContextRefreshRequest = request + var result = JSON.parse(JSON.stringify(newPositionContext)) + result.requestId = ++contextRequestId + newPositionContext = result } } } @@ -112,6 +116,21 @@ TestCase { compare(page.flow.contextHints(true).refreshWalletAccounts, true) } + function test_repeatedIdenticalContextCompletesRefresh() { + var backend = createTemporaryObject(backendComponent, testCase) + var page = createTemporaryObject(pageComponent, testCase, { "backend": backend }) + verify(page) + + page.flow.refreshContext(false) + tryCompare(page.flow, "contextLoading", false) + compare(backend.contextRequestId, 1) + + page.flow.refreshContext(false) + tryCompare(page.flow, "contextLoading", false) + compare(backend.contextRequestId, 2) + compare(page.flow.newPositionContext.status, "ready") + } + function test_submitFailureKeepsReturnedFreshQuoteWithoutRequery() { var backend = createTemporaryObject(backendComponent, testCase) var page = createTemporaryObject(pageComponent, testCase, { "backend": backend })