From c28750d0fbe63ead872a33c9d9e5b82876430396 Mon Sep 17 00:00:00 2001 From: LostDragonist Date: Fri, 8 Mar 2019 23:14:52 -0600 Subject: Improve timeout behavior when logging in to Nexus --- src/nxmaccessmanager.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'src/nxmaccessmanager.cpp') diff --git a/src/nxmaccessmanager.cpp b/src/nxmaccessmanager.cpp index 88d38b9e..68ab24a6 100644 --- a/src/nxmaccessmanager.cpp +++ b/src/nxmaccessmanager.cpp @@ -52,6 +52,7 @@ NXMAccessManager::NXMAccessManager(QObject *parent, const QString &moVersion) { m_ValidateTimeout.setSingleShot(true); m_ValidateTimeout.setInterval(30000); + connect(&m_ValidateTimeout, SIGNAL(timeout()), this, SLOT(validateTimeout())); setCookieJar(new PersistentCookieJar( QDir::fromNativeSeparators(Settings::instance().getCacheDirectory() + "/nexus_cookies.dat"))); @@ -142,7 +143,9 @@ bool NXMAccessManager::validated() const { if (m_ValidateState == VALIDATE_CHECKING) { QProgressDialog progress; - progress.setLabelText(tr("Verifying Nexus login")); + progress.setLabelText(tr("Validating Nexus Connection")); + QList buttons = m_ProgressDialog->findChildren(); + buttons.at(0)->setEnabled(false); progress.show(); while (m_ValidateState == VALIDATE_CHECKING) { QCoreApplication::processEvents(); @@ -214,12 +217,20 @@ QString NXMAccessManager::apiKey() const void NXMAccessManager::validateTimeout() { - m_ValidateReply->deleteLater(); - m_ValidateReply = nullptr; - m_ValidateAttempted = false; // this usually means we might have success later + if (m_ProgressDialog != nullptr) { + m_ProgressDialog->hide(); + m_ProgressDialog->deleteLater(); + m_ProgressDialog = nullptr; + } m_ApiKey.clear(); m_ValidateState = VALIDATE_NOT_VALID; + if (m_ValidateReply != nullptr) { + m_ValidateReply->deleteLater(); + m_ValidateReply = nullptr; + m_ValidateAttempted = false; // this usually means we might have success later + } + emit validateFailed(tr("There was a timeout during the request")); } @@ -228,6 +239,7 @@ void NXMAccessManager::validateError(QNetworkReply::NetworkError) { qDebug("login error"); if (m_ProgressDialog != nullptr) { + m_ProgressDialog->hide(); m_ProgressDialog->deleteLater(); m_ProgressDialog = nullptr; } -- cgit v1.3.1