From 6d824ff22d1931342a53e55b9ea0fdc22575a98a Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Wed, 22 May 2019 20:27:42 -0700 Subject: [PATCH] Fix logout --- interface/src/main.cpp | 18 ++++++++++-------- libraries/networking/src/AccountManager.cpp | 14 ++++++++------ libraries/networking/src/AccountManager.h | 4 ++-- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 303d7f210b..80d88c9303 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -122,8 +122,10 @@ int main(int argc, const char* argv[]) { static const QString APPLICATION_CONFIG_FILENAME = "config.json"; QDir applicationDir(applicationPath); - QFile configFile(applicationDir.filePath(APPLICATION_CONFIG_FILENAME)); - bool isConfigFileValid = false; + QString configFileName = applicationDir.filePath(APPLICATION_CONFIG_FILENAME); + QFile configFile(configFileName); + QString launcherPath; + if (configFile.exists()) { if (!configFile.open(QIODevice::ReadOnly)) { qWarning() << "Found application config, but could not open it"; @@ -136,9 +138,8 @@ int main(int argc, const char* argv[]) { qWarning() << "Found application config, but could not parse it: " << error.errorString(); } else { static const QString LAUNCHER_PATH_KEY = "launcherPath"; - QString launcherPath = doc.object()[LAUNCHER_PATH_KEY].toString(); + launcherPath = doc.object()[LAUNCHER_PATH_KEY].toString(); if (!launcherPath.isEmpty()) { - isConfigFileValid = true; if (!parser.isSet(noLauncherOption)) { qDebug() << "Found a launcherPath in application config. Starting launcher."; QProcess launcher; @@ -402,15 +403,16 @@ int main(int argc, const char* argv[]) { printSystemInformation(); - if (isConfigFileValid || parser.isSet(responseTokensOption)) { + if (!launcherPath.isEmpty() || parser.isSet(responseTokensOption)) { auto accountManager = DependencyManager::get(); if (!accountManager.isNull()) { + if (!launcherPath.isEmpty()) { + accountManager->setConfigFileURL(configFileName); + } if (parser.isSet(responseTokensOption)) { QString tokens = QString(parser.value(responseTokensOption)); accountManager->setAccessTokens(tokens); - } else if (isConfigFileValid) { - accountManager->setConfigFileURL(configFile.fileName()); - } + } } } diff --git a/libraries/networking/src/AccountManager.cpp b/libraries/networking/src/AccountManager.cpp index 014ae62aff..3a7d3e0a67 100644 --- a/libraries/networking/src/AccountManager.cpp +++ b/libraries/networking/src/AccountManager.cpp @@ -674,7 +674,7 @@ void AccountManager::setAccessTokens(const QString& response) { emit loginComplete(rootURL); persistAccountToFile(); - + saveLoginStatus(true); requestProfile(); } } else { @@ -931,8 +931,8 @@ void AccountManager::setLimitedCommerce(bool isLimited) { } void AccountManager::saveLoginStatus(bool isLoggedIn) { - if (_configFileURL.isValid()) { - QFile configFile(_configFileURL.toString()); + if (!_configFileURL.isEmpty()) { + QFile configFile(_configFileURL); configFile.open(QIODevice::ReadOnly | QIODevice::Text); QJsonParseError error; QJsonDocument jsonDocument = QJsonDocument::fromJson(configFile.readAll(), &error); @@ -940,12 +940,14 @@ void AccountManager::saveLoginStatus(bool isLoggedIn) { QString launcherPath; if (error.error == QJsonParseError::NoError) { QJsonObject rootObject = jsonDocument.object(); + if (rootObject.contains("launcherPath")) { + launcherPath = rootObject["launcherPath"].toString(); + } if (rootObject.contains("loggedIn")) { rootObject["loggedIn"] = isLoggedIn; } - if (rootObject.contains("laucherPath")) { - launcherPath = rootObject["launcherPath"].isString(); - } + jsonDocument = QJsonDocument(rootObject); + } configFile.open(QFile::WriteOnly | QFile::Text | QFile::Truncate); configFile.write(jsonDocument.toJson()); diff --git a/libraries/networking/src/AccountManager.h b/libraries/networking/src/AccountManager.h index 3fcbff4f99..c2187f79cb 100644 --- a/libraries/networking/src/AccountManager.h +++ b/libraries/networking/src/AccountManager.h @@ -103,7 +103,7 @@ public: void setLimitedCommerce(bool isLimited); void setAccessTokens(const QString& response); - void setConfigFileURL(const QUrl& fileURL) { _configFileURL = fileURL; } + void setConfigFileURL(const QString& fileURL) { _configFileURL = fileURL; } void saveLoginStatus(bool isLoggedIn); public slots: @@ -166,7 +166,7 @@ private: QUuid _sessionID { QUuid::createUuid() }; bool _limitedCommerce { false }; - QUrl _configFileURL; + QString _configFileURL; }; #endif // hifi_AccountManager_h