mirror of
https://github.com/nextcloud/desktop.git
synced 2025-10-26 11:17:43 +00:00
chore(migration): remove duplicated code when copying legacy config to new path.
Signed-off-by: Camila Ayres <hello@camilasan.com>
This commit is contained in:
parent
43d7ff7df5
commit
a6745bc594
@ -262,54 +262,21 @@ Application::Application(int &argc, char **argv)
|
||||
setWindowIcon(_theme->applicationIcon());
|
||||
|
||||
if (!ConfigFile().exists()) {
|
||||
setApplicationName(_theme->appNameGUI());
|
||||
QString legacyDir = QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + "/" + APPLICATION_CONFIG_NAME;
|
||||
|
||||
if (legacyDir.endsWith('/')) {
|
||||
legacyDir.chop(1); // macOS 10.11.x does not like trailing slash for rename/move.
|
||||
}
|
||||
setApplicationName(_theme->appName());
|
||||
if (QFileInfo(legacyDir).isDir()) {
|
||||
auto confDir = ConfigFile().configPath();
|
||||
|
||||
// macOS 10.11.x does not like trailing slash for rename/move.
|
||||
if (confDir.endsWith('/')) {
|
||||
confDir.chop(1);
|
||||
}
|
||||
|
||||
qCInfo(lcApplication) << "Migrating old config from" << legacyDir << "to" << confDir;
|
||||
|
||||
if (!QFile::rename(legacyDir, confDir)) {
|
||||
qCWarning(lcApplication) << "Failed to move the old config directory to its new location (" << legacyDir << "to" << confDir << ")";
|
||||
|
||||
// Try to move the files one by one
|
||||
if (QFileInfo(confDir).isDir() || QDir().mkdir(confDir)) {
|
||||
const QStringList filesList = QDir(legacyDir).entryList(QDir::Files);
|
||||
qCInfo(lcApplication) << "Will move the individual files" << filesList;
|
||||
for (const auto &name : filesList) {
|
||||
if (!QFile::rename(legacyDir + "/" + name, confDir + "/" + name)) {
|
||||
qCWarning(lcApplication) << "Fallback move of " << name << "also failed";
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
#ifndef Q_OS_WIN
|
||||
// Create a symbolic link so a downgrade of the client would still find the config.
|
||||
QFile::link(confDir, legacyDir);
|
||||
#endif
|
||||
}
|
||||
if (const auto genericConfigLocation = QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation) + "/" + APPLICATION_CONFIG_NAME;
|
||||
setupConfigFolderFromLegacyLocation(genericConfigLocation)) {
|
||||
qCWarning(lcApplication) << "Setup of config folder and files from legacy location" << genericConfigLocation << "failed.";
|
||||
}
|
||||
} else {
|
||||
setupConfigFile();
|
||||
if (const auto appDataLocation = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
|
||||
setupConfigFolderFromLegacyLocation(appDataLocation)) {
|
||||
qCWarning(lcApplication) << "Setup of config folder and files from legacy location" << appDataLocation << "failed.";
|
||||
}
|
||||
}
|
||||
|
||||
if (_theme->doNotUseProxy()) {
|
||||
ConfigFile().setProxyType(QNetworkProxy::NoProxy);
|
||||
for (const auto &accountState : AccountManager::instance()->accounts()) {
|
||||
if (accountState && accountState->account()) {
|
||||
accountState->account()->setNetworkProxySetting(Account::AccountNetworkProxySetting::GlobalProxy);
|
||||
}
|
||||
}
|
||||
// try to migrate legacy accounts and folders from a previous client version
|
||||
// only copy the settings and check what should be skipped
|
||||
if (ConfigFile().exists() && !configVersionMigration()) {
|
||||
qCWarning(lcApplication) << "Config version migration was not possible.";
|
||||
}
|
||||
|
||||
parseOptions(arguments());
|
||||
@ -342,12 +309,6 @@ Application::Application(int &argc, char **argv)
|
||||
setupLogging();
|
||||
setupTranslations();
|
||||
|
||||
// try to migrate legacy accounts and folders from a previous client version
|
||||
// only copy the settings and check what should be skipped
|
||||
if (!configVersionMigration()) {
|
||||
qCWarning(lcApplication) << "Config version migration was not possible.";
|
||||
}
|
||||
|
||||
ConfigFile cfg;
|
||||
{
|
||||
auto shouldExit = false;
|
||||
@ -423,6 +384,14 @@ Application::Application(int &argc, char **argv)
|
||||
_gui->setupCloudProviders();
|
||||
#endif
|
||||
|
||||
if (_theme->doNotUseProxy()) {
|
||||
ConfigFile().setProxyType(QNetworkProxy::NoProxy);
|
||||
for (const auto &accountState : AccountManager::instance()->accounts()) {
|
||||
if (accountState && accountState->account()) {
|
||||
accountState->account()->setNetworkProxySetting(Account::AccountNetworkProxySetting::GlobalProxy);
|
||||
}
|
||||
}
|
||||
}
|
||||
_proxy.setupQtProxyFromConfig(); // folders have to be defined first, than we set up the Qt proxy.
|
||||
|
||||
connect(AccountManager::instance(), &AccountManager::accountAdded,
|
||||
@ -546,7 +515,7 @@ void Application::setupAccountsAndFolders()
|
||||
}
|
||||
}
|
||||
|
||||
void Application::setupConfigFile()
|
||||
bool Application::setupConfigFolderFromLegacyLocation(const QString &legacyLocation) const
|
||||
{
|
||||
// Migrate from version <= 2.4
|
||||
setApplicationName(_theme->appNameGUI());
|
||||
@ -558,42 +527,41 @@ void Application::setupConfigFile()
|
||||
QT_WARNING_POP
|
||||
setApplicationName(_theme->appName());
|
||||
|
||||
auto oldDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
|
||||
|
||||
// macOS 10.11.x does not like trailing slash for rename/move.
|
||||
if (oldDir.endsWith('/')) {
|
||||
oldDir.chop(1);
|
||||
auto legacyDir = legacyLocation;
|
||||
if (legacyDir.endsWith('/')) {
|
||||
legacyDir.chop(1); // macOS 10.11.x does not like trailing slash for rename/move.
|
||||
}
|
||||
|
||||
if (!QFileInfo(oldDir).isDir()) {
|
||||
return;
|
||||
if (!QFileInfo(legacyDir).isDir()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
auto confDir = ConfigFile().configPath();
|
||||
|
||||
// macOS 10.11.x does not like trailing slash for rename/move.
|
||||
if (confDir.endsWith('/')) {
|
||||
confDir.chop(1);
|
||||
}
|
||||
|
||||
qCInfo(lcApplication) << "Migrating old config from" << oldDir << "to" << confDir;
|
||||
if (!QFile::rename(oldDir, confDir)) {
|
||||
qCWarning(lcApplication) << "Failed to move the old config directory to its new location (" << oldDir << "to" << confDir << ")";
|
||||
|
||||
// Try to move the files one by one
|
||||
qCInfo(lcApplication) << "Migrating old config from" << legacyDir << "to" << confDir;
|
||||
if (!QFile::rename(legacyDir, confDir)) {
|
||||
qCWarning(lcApplication) << "Failed to move the old config directory" << legacyDir << "to new location" << confDir;
|
||||
if (QFileInfo(confDir).isDir() || QDir().mkdir(confDir)) {
|
||||
const QStringList filesList = QDir(oldDir).entryList(QDir::Files);
|
||||
qCInfo(lcApplication) << "Will move the individual files" << filesList;
|
||||
const QStringList filesList = QDir(legacyDir).entryList(QDir::Files);
|
||||
qCInfo(lcApplication) << "Will move the individual files:" << filesList;
|
||||
auto setupCompleted = false;
|
||||
for (const auto &name : filesList) {
|
||||
if (!QFile::rename(oldDir + "/" + name, confDir + "/" + name)) {
|
||||
qCWarning(lcApplication) << "Fallback move of " << name << "also failed";
|
||||
if (!QFile::rename(legacyDir + "/" + name, confDir + "/" + name)) {
|
||||
qCDebug(lcApplication) << "Fallback move of " << name << "also failed";
|
||||
continue;
|
||||
}
|
||||
setupCompleted = true;
|
||||
qCInfo(lcApplication) << "Move of " << name << "succeeded.";
|
||||
}
|
||||
return setupCompleted;
|
||||
}
|
||||
} else {
|
||||
#ifndef Q_OS_WIN
|
||||
// Create a symbolic link so a downgrade of the client would still find the config.
|
||||
QFile::link(confDir, oldDir);
|
||||
return QFile::link(confDir, legacyDir);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@ -113,7 +113,7 @@ private:
|
||||
void handleEditLocallyFromOptions();
|
||||
|
||||
AccountManager::AccountsRestoreResult restoreLegacyAccount();
|
||||
void setupConfigFile();
|
||||
bool setupConfigFolderFromLegacyLocation(const QString &legacyLocation) const;
|
||||
void setupAccountsAndFolders();
|
||||
|
||||
/**
|
||||
|
||||
Loading…
Reference in New Issue
Block a user