From: Claudio Cambra Date: Wed, 11 Jan 2023 18:22:56 +0000 (+0100) Subject: Correctly parse account server url when migration from legacy config X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~11^2~33^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=c496e73200d9a28e42e569db897a8e0136e596f7;p=nextcloud-desktop.git Correctly parse account server url when migration from legacy config Signed-off-by: Claudio Cambra --- diff --git a/src/gui/accountmanager.cpp b/src/gui/accountmanager.cpp index f27d056ea..a2cfd8d1b 100644 --- a/src/gui/accountmanager.cpp +++ b/src/gui/accountmanager.cpp @@ -188,16 +188,31 @@ bool AccountManager::restoreFromLegacySettings() qCInfo(lcAccountManager) << "Migrate: overrideUrl" << cleanOverrideUrl; if (!cleanOverrideUrl.isEmpty()) { - const auto oCUrl = oCSettings->value(QLatin1String(urlC)).toString(); - const auto cleanOCUrl = oCUrl.endsWith('/') ? oCUrl.chopped(1) : oCUrl; - - // in case the urls are equal reset the settings object to read from - // the ownCloud settings object - qCInfo(lcAccountManager) << "Migrate oC config if " << cleanOCUrl << " == " << cleanOverrideUrl << ":" - << (cleanOCUrl == cleanOverrideUrl ? "Yes" : "No"); - if (cleanOCUrl == cleanOverrideUrl) { - qCInfo(lcAccountManager) << "Copy settings" << oCSettings->allKeys().join(", "); - settings = std::move(oCSettings); + oCSettings->beginGroup(QLatin1String(accountsC)); + const auto accountsChildGroups = oCSettings->childGroups(); + + for (const auto &accountId : accountsChildGroups) { + oCSettings->beginGroup(accountId); + const auto oCUrl = oCSettings->value(QLatin1String(urlC)).toString(); + const auto cleanOCUrl = oCUrl.endsWith('/') ? oCUrl.chopped(1) : oCUrl; + + // in case the urls are equal reset the settings object to read from + // the ownCloud settings object + qCInfo(lcAccountManager) << "Migrate oC config if " << cleanOCUrl << " == " << cleanOverrideUrl << ":" + << (cleanOCUrl == cleanOverrideUrl ? "Yes" : "No"); + if (cleanOCUrl == cleanOverrideUrl) { + qCInfo(lcAccountManager) << "Copy settings" << oCSettings->allKeys().join(", "); + oCSettings->endGroup(); // current accountID group + oCSettings->endGroup(); // accounts group + settings = std::move(oCSettings); + break; + } + + oCSettings->endGroup(); + } + + if (oCSettings) { + oCSettings->endGroup(); } } else { qCInfo(lcAccountManager) << "Copy settings" << oCSettings->allKeys().join(", ");