Skip to content

Commit 489ace4

Browse files
committed
refactor(migration): move backup config files logic from Application to ConfigFile.
Signed-off-by: Camila Ayres <hello@camilasan.com>
1 parent 99d2a87 commit 489ace4

3 files changed

Lines changed: 35 additions & 40 deletions

File tree

src/gui/application.cpp

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -153,25 +153,9 @@ bool Application::configVersionMigration()
153153
// default is now off to displaying dialog warning user of too many files deletion
154154
configFile.setPromptDeleteFiles(false);
155155

156-
// back up all old config files
157-
QStringList backupFilesList;
158-
QDir configDir(configFile.configPath());
159-
const auto anyConfigFileNameList = configDir.entryInfoList({"*.cfg"}, QDir::Files);
160-
for (const auto &oldConfig : anyConfigFileNameList) {
161-
const auto oldConfigFileName = oldConfig.fileName();
162-
const auto oldConfigFilePath = oldConfig.filePath();
163-
const auto newConfigFileName = configFile.configFile();
164-
backupFilesList.append(configFile.backup(oldConfigFileName));
165-
if (oldConfigFilePath != newConfigFileName) {
166-
if (!QFile::rename(oldConfigFilePath, newConfigFileName)) {
167-
qCWarning(lcApplication) << "Failed to rename configuration file from" << oldConfigFilePath << "to" << newConfigFileName;
168-
}
169-
}
170-
}
171-
172-
// We want to message the user either for destructive changes,
156+
// back up all old config files and message the user either for destructive changes,
173157
// or if we're ignoring something and the client version changed.
174-
if (configFile.showConfigBackupWarning() && backupFilesList.count() > 0) {
158+
if (const auto backupFilesList = configFile.backupConfigFiles(); configFile.showConfigBackupWarning() && backupFilesList.count() > 0) {
175159
QMessageBox box(
176160
QMessageBox::Warning,
177161
APPLICATION_SHORTNAME,
@@ -181,7 +165,7 @@ bool Application::configVersionMigration()
181165
"Continuing will mean <b>%2 these settings</b>.<br>"
182166
"<br>"
183167
"The current configuration file was already backed up to <i>%3</i>.")
184-
.arg((Migration().isDowngrade() ? tr("newer", "newer software version") : tr("older", "older software version")),
168+
.arg((configFile.migration().isDowngrade() ? tr("newer", "newer software version") : tr("older", "older software version")),
185169
deleteKeys.isEmpty()? tr("ignoring") : tr("deleting"),
186170
backupFilesList.join("<br>")));
187171
box.addButton(tr("Quit"), QMessageBox::AcceptRole);

src/libsync/configfile.cpp

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@ namespace chrono = std::chrono;
9292
Q_LOGGING_CATEGORY(lcConfigFile, "nextcloud.sync.configfile", QtInfoMsg)
9393

9494
QString ConfigFile::_confDir = {};
95-
QString ConfigFile::_discoveredLegacyConfigPath = {};
9695
Migration ConfigFile::_migration = Migration{};
9796

9897
static chrono::milliseconds millisecondsValue(const QSettings &setting, const char *key,
@@ -382,7 +381,7 @@ QString ConfigFile::excludeFile(Scope scope) const
382381
return ConfigFile::excludeFileFromSystem();
383382
}
384383

385-
const auto excludeFilePath = scope == LegacyScope ? discoveredLegacyConfigPath() : configPath();
384+
const auto excludeFilePath = scope == LegacyScope ? _migration.discoveredLegacyConfigPath() : configPath();
386385

387386
// prefer sync-exclude.lst, but if it does not exist, check for exclude.lst
388387
QFileInfo exclFileInfo(excludeFilePath, syncExclFile);
@@ -1302,20 +1301,6 @@ void ConfigFile::setupDefaultExcludeFilePaths(ExcludedFiles &excludedFiles)
13021301
excludedFiles.addExcludeFilePath(userList);
13031302
}
13041303

1305-
QString ConfigFile::discoveredLegacyConfigPath()
1306-
{
1307-
return _discoveredLegacyConfigPath;
1308-
}
1309-
1310-
void ConfigFile::setDiscoveredLegacyConfigPath(const QString &discoveredLegacyConfigPath)
1311-
{
1312-
if (_discoveredLegacyConfigPath == discoveredLegacyConfigPath) {
1313-
return;
1314-
}
1315-
1316-
_discoveredLegacyConfigPath = discoveredLegacyConfigPath;
1317-
}
1318-
13191304
void ConfigFile::removeFileProviderDomainMapping()
13201305
{
13211306
QSettings settings(configFile(), QSettings::IniFormat);
@@ -1336,6 +1321,35 @@ void ConfigFile::setFileProviderDomainsAppSandboxMigrationCompleted(const bool c
13361321
settings.setValue(fileProviderDomainsAppSandboxMigrationCompletedC, completed);
13371322
}
13381323

1324+
QStringList ConfigFile::backupConfigFiles() const
1325+
{
1326+
// 'Launch on system startup' defaults to true > 3.11.x
1327+
const auto theme = Theme::instance();
1328+
ConfigFile().setLaunchOnSystemStartup(ConfigFile().launchOnSystemStartup());
1329+
Utility::setLaunchOnStartup(theme->appName(), theme->appNameGUI(), ConfigFile().launchOnSystemStartup());
1330+
1331+
// default is now off to displaying dialog warning user of too many files deletion
1332+
ConfigFile().setPromptDeleteFiles(false);
1333+
1334+
// back up all old config files
1335+
QStringList backupFilesList;
1336+
QDir configDir(ConfigFile().configPath());
1337+
const auto anyConfigFileNameList = configDir.entryInfoList({"*.cfg"}, QDir::Files);
1338+
for (const auto &oldConfig : anyConfigFileNameList) {
1339+
const auto oldConfigFileName = oldConfig.fileName();
1340+
const auto oldConfigFilePath = oldConfig.filePath();
1341+
const auto newConfigFileName = ConfigFile().configFile();
1342+
backupFilesList.append(backup(oldConfigFileName));
1343+
if (oldConfigFilePath != newConfigFileName) {
1344+
if (!QFile::rename(oldConfigFilePath, newConfigFileName)) {
1345+
qCWarning(lcConfigFile) << "Failed to rename configuration file from" << oldConfigFilePath << "to" << newConfigFileName;
1346+
}
1347+
}
1348+
}
1349+
1350+
return backupFilesList;
1351+
}
1352+
13391353
Migration &ConfigFile::migration() {
13401354
return _migration;
13411355
}

src/libsync/configfile.h

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -254,10 +254,6 @@ class OWNCLOUDSYNC_EXPORT ConfigFile
254254
/// Add the system and user exclude file path to the ExcludedFiles instance.
255255
static void setupDefaultExcludeFilePaths(ExcludedFiles &excludedFiles);
256256

257-
/// Set during first time migration of legacy accounts in AccountManager
258-
[[nodiscard]] static QString discoveredLegacyConfigPath();
259-
static void setDiscoveredLegacyConfigPath(const QString &discoveredLegacyConfigPath);
260-
261257
/// File Provider Domain UUID to Account ID mapping
262258

263259
/**
@@ -268,7 +264,9 @@ class OWNCLOUDSYNC_EXPORT ConfigFile
268264
/// File Provider app sandbox migration flag
269265
[[nodiscard]] bool fileProviderDomainsAppSandboxMigrationCompleted() const;
270266
void setFileProviderDomainsAppSandboxMigrationCompleted(bool completed);
267+
271268
[[nodiscard]] static Migration &migration();
269+
[[nodiscard]] QStringList backupConfigFiles() const;
272270

273271
static constexpr char unbrandedAppName[] = "Nextcloud";
274272
static constexpr char legacyAppName[] = "Owncloud";
@@ -314,7 +312,6 @@ class OWNCLOUDSYNC_EXPORT ConfigFile
314312
using SharedCreds = QSharedPointer<AbstractCredentials>;
315313

316314
static QString _confDir;
317-
static QString _discoveredLegacyConfigPath;
318315
static Migration _migration;
319316
};
320317
}

0 commit comments

Comments
 (0)