diff options
| author | Silarn <jrim@rimpo.org> | 2019-01-27 03:43:18 -0600 |
|---|---|---|
| committer | Silarn <jrim@rimpo.org> | 2019-02-18 21:27:32 -0600 |
| commit | 7de78b6697b60ac20add32b5b9140b04da973be8 (patch) | |
| tree | 44664f89b93a416cafe39fa5c114ba50cdf81431 /src/settingsdialog.cpp | |
| parent | 9fe2f6126dc7b9396d188b57ccb097f0035f57b7 (diff) | |
Several Nexus API-related changes
* Added 30-second ping so Nexus doesn't close our connection
* Set an overall 5 minute timeout before we give up listening for auth
* Fixed some old signal and slot connections
* Added a button to revoke the current API authorization
* Updated bulk endorsement function with new API changes
Diffstat (limited to 'src/settingsdialog.cpp')
| -rw-r--r-- | src/settingsdialog.cpp | 48 |
1 files changed, 35 insertions, 13 deletions
diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp index 4843dea5..f63b1a10 100644 --- a/src/settingsdialog.cpp +++ b/src/settingsdialog.cpp @@ -62,6 +62,7 @@ SettingsDialog::SettingsDialog(PluginContainer *pluginContainer, QWidget *parent connect(m_nexusLogin, SIGNAL(connected()), this, SLOT(dispatchLogin())); connect(m_nexusLogin, SIGNAL(textMessageReceived(const QString &)), this, SLOT(receiveApiKey(const QString &))); connect(m_nexusLogin, SIGNAL(disconnected()), this, SLOT(completeApiConnection())); + m_loginTimer.callOnTimeout(this, &SettingsDialog::loginPing); } SettingsDialog::~SettingsDialog() @@ -124,18 +125,18 @@ bool SettingsDialog::getResetGeometries() return ui->resetGeometryBtn->isChecked(); } -void SettingsDialog::on_loginCheckBox_toggled(bool checked) -{ - QLineEdit *usernameEdit = findChild<QLineEdit*>("usernameEdit"); - QLineEdit *passwordEdit = findChild<QLineEdit*>("passwordEdit"); - if (checked) { - passwordEdit->setEnabled(true); - usernameEdit->setEnabled(true); - } else { - passwordEdit->setEnabled(false); - usernameEdit->setEnabled(false); - } -} +//void SettingsDialog::on_loginCheckBox_toggled(bool checked) +//{ +// QLineEdit *usernameEdit = findChild<QLineEdit*>("usernameEdit"); +// QLineEdit *passwordEdit = findChild<QLineEdit*>("passwordEdit"); +// if (checked) { +// passwordEdit->setEnabled(true); +// usernameEdit->setEnabled(true); +// } else { +// passwordEdit->setEnabled(false); +// usernameEdit->setEnabled(false); +// } +//} void SettingsDialog::on_categoriesBtn_clicked() { @@ -337,7 +338,7 @@ void SettingsDialog::on_resetDialogsButton_clicked() void SettingsDialog::on_nexusConnect_clicked() { - ui->nexusConnect->setText("Connecting the API..."); + ui->nexusConnect->setText("Connecting the API. Please login within the browser and accept the request. This will time out after 5 minutes."); ui->nexusConnect->setDisabled(true); QUrl url = QUrl("wss://sso.nexusmods.com:8443"); m_nexusLogin->open(url); @@ -354,6 +355,20 @@ void SettingsDialog::dispatchLogin() QString finalMessage(loginDoc.toJson()); m_nexusLogin->sendTextMessage(finalMessage); QDesktopServices::openUrl(QUrl(QString("https://www.nexusmods.com/sso?id=") + QString(boost::uuids::to_string(sessionId).c_str()))); + m_loginTimer.start(30000); +} + +void SettingsDialog::loginPing() +{ + if (m_nexusLogin->isValid()) { + m_nexusLogin->ping(); + m_totalPings++; + } + if (m_totalPings >= 10) { + m_loginTimer.stop(); + m_totalPings = 0; + m_nexusLogin->close(QWebSocketProtocol::CloseCodeGoingAway, "Timeout: No response received after five minutes. Cancelling request."); + } } void SettingsDialog::receiveApiKey(const QString &apiKey) @@ -361,6 +376,8 @@ void SettingsDialog::receiveApiKey(const QString &apiKey) emit processApiKey(apiKey); m_nexusLogin->close(); ui->nexusConnect->setText("Nexus API Key Stored"); + m_loginTimer.stop(); + m_totalPings = 0; } void SettingsDialog::completeApiConnection() @@ -435,6 +452,11 @@ void SettingsDialog::on_clearCacheButton_clicked() NexusInterface::instance(m_PluginContainer)->clearCache(); } +void SettingsDialog::on_revokeNexusAuthButton_clicked() +{ + emit revokeApiKey(ui->nexusConnect); +} + void SettingsDialog::normalizePath(QLineEdit *lineEdit) { QString text = lineEdit->text(); |
