diff --git a/src/controller.cpp b/src/controller.cpp index 86c6028a3..35ed7b2ac 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -273,23 +273,19 @@ QKeychain::ReadPasswordJob *Controller::loadAccessTokenFromKeyChain(const QStrin return job; } -bool Controller::saveAccessTokenToKeyChain(const QString &userId, const QByteArray &accessToken) +void Controller::saveAccessTokenToKeyChain(const QString &userId, const QByteArray &accessToken) { qDebug() << "Save the access token to the keychain for " << userId; - QKeychain::WritePasswordJob job(qAppName()); - job.setAutoDelete(false); - job.setKey(userId); - job.setBinaryData(accessToken); - QEventLoop loop; - QKeychain::WritePasswordJob::connect(&job, &QKeychain::Job::finished, &loop, &QEventLoop::quit); - job.start(); - loop.exec(); - - if (job.error()) { - qWarning() << "Could not save access token to the keychain: " << qPrintable(job.errorString()); - return false; - } - return true; + auto job = new QKeychain::WritePasswordJob(qAppName()); + job->setAutoDelete(true); + job->setKey(userId); + job->setBinaryData(accessToken); + connect(job, &QKeychain::WritePasswordJob::finished, this, [job]() { + if (job->error()) { + qWarning() << "Could not save access token to the keychain: " << qPrintable(job->errorString()); + } + }); + job->start(); } bool Controller::supportSystemTray() const diff --git a/src/controller.h b/src/controller.h index 4527082cd..7fe12e456 100644 --- a/src/controller.h +++ b/src/controller.h @@ -86,7 +86,7 @@ public: /** * @brief Save an access token to the keychain for the given account. */ - bool saveAccessTokenToKeyChain(const QString &userId, const QByteArray &accessToken); + void saveAccessTokenToKeyChain(const QString &userId, const QByteArray &accessToken); [[nodiscard]] bool supportSystemTray() const; diff --git a/src/login.cpp b/src/login.cpp index 334ef95eb..afe7ee5fa 100644 --- a/src/login.cpp +++ b/src/login.cpp @@ -78,9 +78,7 @@ void LoginHelper::init() account.setHomeserver(m_connection->homeserver()); account.setDeviceId(m_connection->deviceId()); account.setDeviceName(m_deviceName); - if (!Controller::instance().saveAccessTokenToKeyChain(account.userId(), m_connection->accessToken())) { - qWarning() << "Couldn't save access token"; - } + Controller::instance().saveAccessTokenToKeyChain(account.userId(), m_connection->accessToken()); account.sync(); Controller::instance().addConnection(m_connection); Controller::instance().setActiveConnection(m_connection); diff --git a/src/registration.cpp b/src/registration.cpp index f2160905f..7ed9cd059 100644 --- a/src/registration.cpp +++ b/src/registration.cpp @@ -106,9 +106,7 @@ void Registration::registerAccount() account.setHomeserver(connection->homeserver()); account.setDeviceId(connection->deviceId()); account.setDeviceName(displayName); - if (!Controller::instance().saveAccessTokenToKeyChain(account.userId(), connection->accessToken())) { - qWarning() << "Couldn't save access token"; - } + Controller::instance().saveAccessTokenToKeyChain(account.userId(), connection->accessToken()); account.sync(); Controller::instance().addConnection(connection); Controller::instance().setActiveConnection(connection);