fix(amm): deduplicate transaction status polls

This commit is contained in:
Ricardo Guilherme Schmidt 2026-07-17 19:56:33 -03:00
parent 72bde7af6e
commit 3508bfbf42
No known key found for this signature in database
GPG Key ID: 1396EA17DE132FFE
2 changed files with 7 additions and 0 deletions

View File

@ -215,6 +215,7 @@ void AmmUiBackend::syncWalletState()
if (addressChanged) {
m_identityRetryTimer->stop();
m_pendingTransactions.clear();
m_transactionPollsInFlight.clear();
m_transactionTimer->stop();
m_network.sequencerChanged(!state.sequencerAddress.isEmpty());
}
@ -327,8 +328,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;

View File

@ -5,6 +5,7 @@
#include <QObject>
#include <QHash>
#include <QSet>
#include <QString>
#include <QStringList>
#include <QVariant>
@ -86,6 +87,7 @@ private:
qint64 deadlineMs = 0;
};
QHash<QString, PendingTransaction> m_pendingTransactions;
QSet<QString> m_transactionPollsInFlight;
};
#endif // AMM_UI_BACKEND_H