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/mainwindow.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/mainwindow.cpp')
| -rw-r--r-- | src/mainwindow.cpp | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index add1ef7f..9003d6b2 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -392,8 +392,8 @@ MainWindow::MainWindow(QSettings &initSettings connect(NexusInterface::instance(&pluginContainer), SIGNAL(requestNXMDownload(QString)), &m_OrganizerCore, SLOT(downloadRequestedNXM(QString))); connect(NexusInterface::instance(&pluginContainer), SIGNAL(nxmDownloadURLsAvailable(QString,int,int,QVariant,QVariant,int)), this, SLOT(nxmDownloadURLs(QString,int,int,QVariant,QVariant,int))); - connect(NexusInterface::instance(&pluginContainer), SIGNAL(needLogin()), &m_OrganizerCore, SLOT(nexusLogin())); - connect(NexusInterface::instance(&pluginContainer)->getAccessManager(), SIGNAL(loginFailed(QString)), this, SLOT(loginFailed(QString))); + connect(NexusInterface::instance(&pluginContainer), SIGNAL(needLogin()), &m_OrganizerCore, SLOT(nexusApi())); + connect(NexusInterface::instance(&pluginContainer)->getAccessManager(), SIGNAL(validateFailed(QString)), this, SLOT(validationFailed(QString))); connect(NexusInterface::instance(&pluginContainer)->getAccessManager(), SIGNAL(credentialsReceived(const QString&, bool)), this, SLOT(updateWindowTitle(const QString&, bool))); @@ -2695,7 +2695,7 @@ void MainWindow::endorseMod(ModInfo::Ptr mod) } else { QString apiKey; if (m_OrganizerCore.settings().getNexusApiKey(apiKey)) { - m_OrganizerCore.doAfterLogin(boost::bind(&MainWindow::endorseMod, this, mod)); + m_OrganizerCore.doAfterLogin([&]() { this->endorseMod(mod); }); NexusInterface::instance(&m_PluginContainer)->getAccessManager()->apiCheck(apiKey); } else { MessageDialog::showMessage(tr("You need to be logged in with Nexus to endorse"), this); @@ -2708,21 +2708,21 @@ void MainWindow::endorse_clicked() { QItemSelectionModel *selection = ui->modList->selectionModel(); if (selection->hasSelection() && selection->selectedRows().count() > 1) { - if (NexusInterface::instance(&m_PluginContainer)->getAccessManager()->loggedIn()) { + if (NexusInterface::instance(&m_PluginContainer)->getAccessManager()->validated()) { MessageDialog::showMessage(tr("Endorsing multiple mods will take a while. Please wait..."), this); for (QModelIndex idx : selection->selectedRows()) { ModInfo::getByIndex(idx.data(Qt::UserRole + 1).toInt())->endorse(true); } } else { - QString username, password; - if (m_OrganizerCore.settings().getNexusLogin(username, password)) { + QString apiKey; + if (m_OrganizerCore.settings().getNexusApiKey(apiKey)) { MessageDialog::showMessage(tr("Endorsing multiple mods will take a while. Please wait..."), this); for (QModelIndex idx : selection->selectedRows()) { ModInfo::Ptr modInfo = ModInfo::getByIndex(idx.data(Qt::UserRole + 1).toInt()); - m_OrganizerCore.doAfterLogin(boost::bind(&MainWindow::endorseMod, this, modInfo)); + m_OrganizerCore.doAfterLogin([&]() { this->endorseMod(modInfo); }); } - NexusInterface::instance(&m_PluginContainer)->getAccessManager()->login(username, password); + NexusInterface::instance(&m_PluginContainer)->getAccessManager()->apiCheck(apiKey); } else { MessageDialog::showMessage(tr("You need to be logged in with Nexus to endorse"), this); return; @@ -2750,12 +2750,12 @@ void MainWindow::dontendorse_clicked() void MainWindow::unendorseMod(ModInfo::Ptr mod) { - QString apiKey; if (NexusInterface::instance(&m_PluginContainer)->getAccessManager()->validated()) { ModInfo::getByIndex(m_ContextRow)->endorse(false); } else { + QString apiKey; if (m_OrganizerCore.settings().getNexusApiKey(apiKey)) { - m_OrganizerCore.doAfterLogin([this] () { this->unendorse_clicked(); }); + m_OrganizerCore.doAfterLogin([&]() { this->unendorseMod(mod); }); NexusInterface::instance(&m_PluginContainer)->getAccessManager()->apiCheck(apiKey); } else { MessageDialog::showMessage(tr("You need to be logged in with Nexus to endorse"), this); @@ -2768,21 +2768,20 @@ void MainWindow::unendorse_clicked() { QItemSelectionModel *selection = ui->modList->selectionModel(); if (selection->hasSelection() && selection->selectedRows().count() > 1) { - if (NexusInterface::instance(&m_PluginContainer)->getAccessManager()->loggedIn()) { + if (NexusInterface::instance(&m_PluginContainer)->getAccessManager()->validated()) { MessageDialog::showMessage(tr("Unendorsing multiple mods will take a while. Please wait..."), this); for (QModelIndex idx : selection->selectedRows()) { ModInfo::getByIndex(idx.data(Qt::UserRole + 1).toInt())->endorse(false); } - } - else { - QString username, password; - if (m_OrganizerCore.settings().getNexusLogin(username, password)) { + } else { + QString apiKey; + if (m_OrganizerCore.settings().getNexusApiKey(apiKey)) { MessageDialog::showMessage(tr("Unendorsing multiple mods will take a while. Please wait..."), this); for (QModelIndex idx : selection->selectedRows()) { ModInfo::Ptr modInfo = ModInfo::getByIndex(idx.data(Qt::UserRole + 1).toInt()); - m_OrganizerCore.doAfterLogin(boost::bind(&MainWindow::unendorseMod, this, modInfo)); + m_OrganizerCore.doAfterLogin([&]() { this->unendorseMod(modInfo); }); } - NexusInterface::instance(&m_PluginContainer)->getAccessManager()->login(username, password); + NexusInterface::instance(&m_PluginContainer)->getAccessManager()->apiCheck(apiKey); } else { MessageDialog::showMessage(tr("You need to be logged in with Nexus to endorse"), this); return; @@ -2794,9 +2793,9 @@ void MainWindow::unendorse_clicked() } } -void MainWindow::loginFailed(const QString &error) +void MainWindow::validationFailed(const QString &error) { - qDebug("login failed: %s", qUtf8Printable(error)); + qDebug("Nexus API validation failed: %s", qUtf8Printable(error)); statusBar()->hide(); } |
