From bdc0ebd5277bce7d6761ea9ee74ace9bcbb8c33c Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Sun, 30 Apr 2023 17:49:46 +0800 Subject: [PATCH] Restore a specific enum from AccountsManager::restore rather than vague boolean Signed-off-by: Claudio Cambra --- src/gui/accountmanager.cpp | 12 +++++++----- src/gui/accountmanager.h | 10 +++++++++- src/gui/application.cpp | 8 ++++++-- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/gui/accountmanager.cpp b/src/gui/accountmanager.cpp index c42170480..c95d1668f 100644 --- a/src/gui/accountmanager.cpp +++ b/src/gui/accountmanager.cpp @@ -70,7 +70,7 @@ AccountManager *AccountManager::instance() return &instance; } -bool AccountManager::restore(bool alsoRestoreLegacySettings) +AccountManager::AccountsRestoreResult AccountManager::restore(const bool alsoRestoreLegacySettings) { QStringList skipSettingsKeys; backwardMigrationSettingsKeys(&skipSettingsKeys, &skipSettingsKeys); @@ -79,21 +79,22 @@ bool AccountManager::restore(bool alsoRestoreLegacySettings) if (settings->status() != QSettings::NoError || !settings->isWritable()) { qCWarning(lcAccountManager) << "Could not read settings from" << settings->fileName() << settings->status(); - return false; + return AccountsRestoreFailure; } if (skipSettingsKeys.contains(settings->group())) { // Should not happen: bad container keys should have been deleted qCWarning(lcAccountManager) << "Accounts structure is too new, ignoring"; - return true; + return AccountsRestoreSuccessWithSkipped; } // If there are no accounts, check the old format. if (settings->childGroups().isEmpty() && !settings->contains(QLatin1String(versionC)) && alsoRestoreLegacySettings) { restoreFromLegacySettings(); - return true; + return AccountsRestoreSuccessFromLegacyVersion; } + auto result = AccountsRestoreSuccess; const auto settingsChildGroups = settings->childGroups(); for (const auto &accountId : settingsChildGroups) { settings->beginGroup(accountId); @@ -111,11 +112,12 @@ bool AccountManager::restore(bool alsoRestoreLegacySettings) } else { qCInfo(lcAccountManager) << "Account" << accountId << "is too new, ignoring"; _additionalBlockedAccountIds.insert(accountId); + result = AccountsRestoreSuccessWithSkipped; } settings->endGroup(); } - return true; + return result; } void AccountManager::backwardMigrationSettingsKeys(QStringList *deleteKeys, QStringList *ignoreKeys) diff --git a/src/gui/accountmanager.h b/src/gui/accountmanager.h index c1c56c7cc..2af60aa6c 100644 --- a/src/gui/accountmanager.h +++ b/src/gui/accountmanager.h @@ -27,6 +27,14 @@ class AccountManager : public QObject { Q_OBJECT public: + enum AccountsRestoreResult { + AccountsRestoreFailure = 0, + AccountsRestoreSuccess, + AccountsRestoreSuccessFromLegacyVersion, + AccountsRestoreSuccessWithSkipped + }; + Q_ENUM (AccountsRestoreResult); + static AccountManager *instance(); ~AccountManager() override = default; @@ -41,7 +49,7 @@ public: * Returns false if there was an error reading the settings, * but note that settings not existing is not an error. */ - bool restore(bool alsoRestoreLegacySettings = true); + AccountsRestoreResult restore(const bool alsoRestoreLegacySettings = true); /** * Add this account in the list of saved accounts. diff --git a/src/gui/application.cpp b/src/gui/application.cpp index 8f5a2a722..767b5fc34 100644 --- a/src/gui/application.cpp +++ b/src/gui/application.cpp @@ -377,12 +377,16 @@ Application::Application(int &argc, char **argv) connect(this, &SharedTools::QtSingleApplication::messageReceived, this, &Application::slotParseMessage); - if (!AccountManager::instance()->restore(cfg.overrideServerUrl().isEmpty())) { + const auto tryMigrate = cfg.overrideServerUrl().isEmpty(); + auto accountsRestoreResult = AccountManager::AccountsRestoreFailure; + if (accountsRestoreResult = AccountManager::instance()->restore(tryMigrate); + accountsRestoreResult == AccountManager::AccountsRestoreFailure) { // If there is an error reading the account settings, try again // after a couple of seconds, if that fails, give up. // (non-existence is not an error) Utility::sleep(5); - if (!AccountManager::instance()->restore(cfg.overrideServerUrl().isEmpty())) { + if (accountsRestoreResult = AccountManager::instance()->restore(tryMigrate); + accountsRestoreResult == AccountManager::AccountsRestoreFailure) { qCCritical(lcApplication) << "Could not read the account settings, quitting"; QMessageBox::critical( nullptr, -- 2.39.5