From 4b75e7d588ae35a1f30bb87993f09fef476d7373 Mon Sep 17 00:00:00 2001 From: Tobias Fella Date: Wed, 28 Jul 2021 00:21:33 +0200 Subject: [PATCH] Make login more robust --- src/login.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/login.cpp b/src/login.cpp index 6dae9c817..8cdbf06b7 100644 --- a/src/login.cpp +++ b/src/login.cpp @@ -29,18 +29,15 @@ void Login::init() connect(this, &Login::matrixIdChanged, this, [=]() { setHomeserverReachable(false); - if (m_connection) { - delete m_connection; - m_connection = nullptr; - } - if (m_matrixId == "@") { return; } m_testing = true; Q_EMIT testingChanged(); - m_connection = new Connection(this); + if(!m_connection) { + m_connection = new Connection(this); + } m_connection->resolveServer(m_matrixId); connect(m_connection, &Connection::loginFlowsChanged, this, [=]() { setHomeserverReachable(true); @@ -108,7 +105,6 @@ void Login::login() setDeviceName("NeoChat " + QSysInfo::machineHostName() + " " + QSysInfo::productType() + " " + QSysInfo::productVersion() + " " + QSysInfo::currentCpuArchitecture()); - m_connection = new Connection(this); m_connection->resolveServer(m_matrixId); connect(m_connection, &Connection::loginFlowsChanged, this, [=]() { @@ -129,6 +125,7 @@ void Login::login() account.sync(); Controller::instance().addConnection(m_connection); Controller::instance().setActiveConnection(m_connection); + m_connection = nullptr; }); connect(m_connection, &Connection::networkError, [=](QString error, const QString &, int, int) { Q_EMIT Controller::instance().globalErrorOccured(i18n("Network Error"), std::move(error)); @@ -169,6 +166,8 @@ QUrl Login::ssoUrl() const void Login::loginWithSso() { + m_connection->resolveServer(m_matrixId); + SsoSession *session = m_connection->prepareForSso("NeoChat " + QSysInfo::machineHostName() + " " + QSysInfo::productType() + " " + QSysInfo::productVersion() + " " + QSysInfo::currentCpuArchitecture()); m_ssoUrl = session->ssoUrl(); @@ -187,6 +186,7 @@ void Login::loginWithSso() account.sync(); Controller::instance().addConnection(m_connection); Controller::instance().setActiveConnection(m_connection); + m_connection = nullptr; }); connect(m_connection, &Connection::syncDone, this, [=]() { Q_EMIT initialSyncFinished();