diff --git a/apps/shared/wallet/src/LogosWalletProvider.cpp b/apps/shared/wallet/src/LogosWalletProvider.cpp index 6015c61..3f4722a 100644 --- a/apps/shared/wallet/src/LogosWalletProvider.cpp +++ b/apps/shared/wallet/src/LogosWalletProvider.cpp @@ -229,15 +229,7 @@ void LogosWalletProvider::connectAsync(const WalletPaths& paths, SessionCallback finishOpen(true, WalletFailure::None); return; } - m_impl->logos->logos_execution_zone.list_accountsAsync( - [this, generation, finishOpen, openStored](QVariantList accounts) mutable { - if (generation != m_generation) - return; - if (!accounts.isEmpty()) - finishOpen(true, WalletFailure::None); - else - openStored(); - }); + openStored(); }); } @@ -468,9 +460,8 @@ bool LogosWalletProvider::sharedWalletIsOpen() const { if (!m_impl->logos) return false; - if (!m_impl->logos->logos_execution_zone.get_sequencer_addr().isEmpty()) - return true; - return !m_impl->logos->logos_execution_zone.list_accounts().isEmpty(); + // A live wallet always has a configured, non-empty sequencer URL. + return !m_impl->logos->logos_execution_zone.get_sequencer_addr().isEmpty(); } WalletSnapshot LogosWalletProvider::loadSnapshot() diff --git a/apps/shared/wallet/tests/cpp/LogosWalletProviderTest.cpp b/apps/shared/wallet/tests/cpp/LogosWalletProviderTest.cpp index c1d9e47..b9138c0 100644 --- a/apps/shared/wallet/tests/cpp/LogosWalletProviderTest.cpp +++ b/apps/shared/wallet/tests/cpp/LogosWalletProviderTest.cpp @@ -51,6 +51,7 @@ class LogosWalletProviderTest : public QObject { private slots: void adoptsOpenWalletAndCachesSnapshots(); void opensConfiguredWalletWhenNoSharedSessionExists(); + void opensStoredWalletAsynchronouslyWithoutAccountProbe(); void opensAndReadsAsynchronously(); void avoidsSavingAfterUnchangedAsynchronousSnapshots(); void createsAndPersistsWallet(); @@ -144,6 +145,7 @@ void LogosWalletProviderTest::opensConfiguredWalletWhenNoSharedSessionExists() QVERIFY(!session.adopted); QCOMPARE(modules.logos_execution_zone.openCalls, 1); QCOMPARE(modules.logos_execution_zone.openedStorage, storage); + QCOMPARE(modules.logos_execution_zone.listCalls, 1); LogosModules missingModules; LogosWalletProvider missingProvider(&missingModules); @@ -151,6 +153,28 @@ void LogosWalletProviderTest::opensConfiguredWalletWhenNoSharedSessionExists() WalletFailure::WalletMissing); } +void LogosWalletProviderTest::opensStoredWalletAsynchronouslyWithoutAccountProbe() +{ + QTemporaryDir directory; + QVERIFY(directory.isValid()); + const QString storage = directory.filePath(QStringLiteral("storage.json")); + QFile file(storage); + QVERIFY(file.open(QIODevice::WriteOnly)); + file.close(); + + LogosModules modules; + LogosWalletProvider provider(&modules); + bool connected = false; + provider.connectAsync({ directory.filePath(QStringLiteral("wallet.json")), storage }, + [&connected](WalletSession session) { + connected = session.ok() && !session.adopted; + }); + + QVERIFY(connected); + QCOMPARE(modules.logos_execution_zone.openCalls, 1); + QCOMPARE(modules.logos_execution_zone.listCalls, 1); +} + void LogosWalletProviderTest::opensAndReadsAsynchronously() { LogosModules modules;