fix(amm): deduplicate transaction status polls

This commit is contained in:
Ricardo Guilherme Schmidt
2026-07-18 19:55:15 -03:00
parent 155eae3d7f
commit 9893d88320
2 changed files with 7 additions and 0 deletions
+5
View File
@@ -303,6 +303,7 @@ void AmmUiBackend::syncWalletState()
if (addressChanged) {
m_identityRetryTimer->stop();
m_pendingTransactions.clear();
m_transactionPollsInFlight.clear();
m_transactionTimer->stop();
m_network.sequencerChanged(!state.sequencerAddress.isEmpty());
}
@@ -415,8 +416,12 @@ void AmmUiBackend::pollTransactions()
m_pendingTransactions.remove(transaction.nativeHash);
continue;
}
if (m_transactionPollsInFlight.contains(transaction.nativeHash))
continue;
m_transactionPollsInFlight.insert(transaction.nativeHash);
m_sequencer->queryTransaction(transaction.nativeHash,
[this, transaction](bool ok, bool included) {
m_transactionPollsInFlight.remove(transaction.nativeHash);
if (!ok || !included
|| !m_pendingTransactions.contains(transaction.nativeHash)) {
return;
+2
View File
@@ -5,6 +5,7 @@
#include <QObject>
#include <QHash>
#include <QSet>
#include <QString>
#include <QStringList>
#include <QVariant>
@@ -88,6 +89,7 @@ private:
qint64 deadlineMs = 0;
};
QHash<QString, PendingTransaction> m_pendingTransactions;
QSet<QString> m_transactionPollsInFlight;
};
#endif // AMM_UI_BACKEND_H