From 30ce68d32b5bde4c7927ab1209de9cdbcee84d54 Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Thu, 4 Dec 2025 21:56:07 +0100 Subject: [PATCH] fix(migration): return correct migration state if no accounts were found. The migration success dialog was being displayed even when there was no legacy configuration to migrate from. Signed-off-by: Camila Ayres --- src/gui/accountmanager.cpp | 6 ++++-- src/gui/application.cpp | 9 +++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/gui/accountmanager.cpp b/src/gui/accountmanager.cpp index 9b8648fd42d28..b1428dc1196ef 100644 --- a/src/gui/accountmanager.cpp +++ b/src/gui/accountmanager.cpp @@ -337,6 +337,7 @@ bool AccountManager::restoreFromLegacySettings() if (!settings->childKeys().isEmpty()) { settings->beginGroup(accountsC); const auto childGroups = selectedAccountIds.isEmpty() ? settings->childGroups() : selectedAccountIds; + auto accountsLoaded = false; for (const auto &accountId : childGroups) { settings->beginGroup(accountId); const auto acc = loadAccountHelper(*settings); @@ -344,12 +345,13 @@ bool AccountManager::restoreFromLegacySettings() continue; } addAccount(acc); + accountsLoaded = true; migrateNetworkSettings(acc, *settings); settings->endGroup(); } configFile.cleanupGlobalNetworkConfiguration(); - ClientProxy().cleanupGlobalNetworkConfiguration(); - return true; + ClientProxy().cleanupGlobalNetworkConfiguration(); + return accountsLoaded; } if (wasLegacyImportDialogDisplayed) { diff --git a/src/gui/application.cpp b/src/gui/application.cpp index 4c35e106fe50f..bc740a3e3c2b4 100644 --- a/src/gui/application.cpp +++ b/src/gui/application.cpp @@ -488,12 +488,11 @@ void Application::setupAccountsAndFolders() ConfigFile configFile; configFile.setMigrationPhase(ConfigFile::MigrationPhase::SetupUsers); const auto accountsRestoreResult = restoreLegacyAccount(); - const auto accounts = AccountManager::instance()->accounts(); - if (accountsRestoreResult != AccountManager::AccountsRestoreSuccessFromLegacyVersion - && accounts.empty()) { + if (accountsRestoreResult == AccountManager::AccountsNotFound || accountsRestoreResult == AccountManager::AccountsRestoreFailure) { qCWarning(lcApplication) << "Migration result: " << accountsRestoreResult; qCDebug(lcApplication) << "is migration disabled?" << DISABLE_ACCOUNT_MIGRATION; qCWarning(lcApplication) << "No accounts were migrated, prompting user to set up accounts and folders from scratch."; + configFile.setMigrationPhase(ConfigFile::MigrationPhase::Done); return; } @@ -510,10 +509,12 @@ void Application::setupAccountsAndFolders() return list.join("\n"); }; + const auto accounts = AccountManager::instance()->accounts(); const auto accountsListSize = accounts.size(); if (accountsRestoreResult == AccountManager::AccountsRestoreSuccessFromLegacyVersion && Theme::instance()->displayLegacyImportDialog() - && !AccountManager::instance()->forceLegacyImport()) { + && !AccountManager::instance()->forceLegacyImport() + && accountsListSize > 0) { const auto accountsRestoreMessage = accountsListSize > 1 ? tr("%1 accounts", "number of accounts imported").arg(QString::number(accountsListSize)) : tr("1 account");