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);