From fc1658635be61941a3778ee9187cd9c37e505918 Mon Sep 17 00:00:00 2001 From: Ricardo Guilherme Schmidt <3esmit@gmail.com> Date: Fri, 17 Jul 2026 20:34:28 -0300 Subject: [PATCH] perf(wallet): reuse created account snapshot reads --- apps/shared/wallet/src/LogosWalletProvider.cpp | 11 +++++++++-- .../wallet/tests/cpp/LogosWalletProviderTest.cpp | 2 ++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/apps/shared/wallet/src/LogosWalletProvider.cpp b/apps/shared/wallet/src/LogosWalletProvider.cpp index 3f4722a..4a00189 100644 --- a/apps/shared/wallet/src/LogosWalletProvider.cpp +++ b/apps/shared/wallet/src/LogosWalletProvider.cpp @@ -329,9 +329,16 @@ WalletAccountCreation LogosWalletProvider::createAccount(bool isPublic) return creation; } - if (isPublic) - creation.publicAccount = readPublicAccount(creation.accountId); creation.snapshot = snapshot(true); + if (isPublic) { + for (const WalletAccountRead& read : creation.snapshot.publicAccountReads) { + if (read.accountId == creation.accountId) { + creation.publicAccount = read; + return creation; + } + } + creation.publicAccount = readPublicAccount(creation.accountId); + } return creation; } diff --git a/apps/shared/wallet/tests/cpp/LogosWalletProviderTest.cpp b/apps/shared/wallet/tests/cpp/LogosWalletProviderTest.cpp index b9138c0..75ccfb7 100644 --- a/apps/shared/wallet/tests/cpp/LogosWalletProviderTest.cpp +++ b/apps/shared/wallet/tests/cpp/LogosWalletProviderTest.cpp @@ -319,12 +319,14 @@ void LogosWalletProviderTest::createsAndPersistsAccounts() QVERIFY(provider.connect({}).ok()); const int savesBeforeCreate = modules.logos_execution_zone.saveCalls; + const int publicReadsBeforeCreate = modules.logos_execution_zone.publicReadCalls; const WalletAccountCreation creation = provider.createAccount(true); QVERIFY(creation.ok()); QCOMPARE(creation.accountId, ACCOUNT_A); QVERIFY(creation.publicAccount.ok()); QCOMPARE(creation.snapshot.accounts.size(), 1); QVERIFY(modules.logos_execution_zone.saveCalls > savesBeforeCreate); + QCOMPARE(modules.logos_execution_zone.publicReadCalls, publicReadsBeforeCreate + 1); modules.logos_execution_zone.saveResult = 1; QCOMPARE(provider.createAccount(true).failure, WalletFailure::SaveFailed);