diff options
| author | Silarn <jrim@rimpo.org> | 2019-02-04 00:59:05 -0600 |
|---|---|---|
| committer | Silarn <jrim@rimpo.org> | 2019-02-18 21:31:19 -0600 |
| commit | 177f5c0446ab09f4010c86e9d8e1d3d02a8a76a9 (patch) | |
| tree | df7fb6c3a9ee3deaeb0e213b685d0bb406f01889 /src | |
| parent | 91e909bc45e8b33b0a774c71ed28175243f0cccf (diff) | |
Fix issues with duplicate requests, expand parallel requests to 6
Diffstat (limited to 'src')
| -rw-r--r-- | src/mainwindow.cpp | 10 | ||||
| -rw-r--r-- | src/modinfo.cpp | 4 | ||||
| -rw-r--r-- | src/modinforegular.cpp | 5 | ||||
| -rw-r--r-- | src/nexusinterface.h | 2 |
4 files changed, 14 insertions, 7 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index fecf8704..cdf363cc 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -5489,6 +5489,7 @@ void MainWindow::nxmUpdatesAvailable(QString gameName, int modID, QVariant userD } std::vector<ModInfo::Ptr> modsList = ModInfo::getByModID(gameNameReal, modID); + bool requiresInfo = false; for (auto mod : modsList) { bool foundUpdate = false; bool oldFile = false; @@ -5544,13 +5545,18 @@ void MainWindow::nxmUpdatesAvailable(QString gameName, int modID, QVariant userD if (foundUpdate) { // Just get the standard data updates for endorsements and descriptions mod->setLastNexusUpdate(QDateTime::currentDateTimeUtc()); - mod->updateNXMInfo(); } else { // Scrape mod data here so we can use the mod version if no file update was located - NexusInterface::instance(&m_PluginContainer)->requestModInfo(gameName, modID, this, QVariant(), QString()); + requiresInfo = true; } + + if (mod->getLastNexusQuery().addDays(1) <= QDateTime::currentDateTime()) + requiresInfo = true; } + if (requiresInfo) + NexusInterface::instance(&m_PluginContainer)->requestModInfo(gameName, modID, this, QVariant(), QString()); + if (--m_ModsToUpdate <= 0) { statusBar()->hide(); } else { diff --git a/src/modinfo.cpp b/src/modinfo.cpp index 555dcb68..a1059e24 100644 --- a/src/modinfo.cpp +++ b/src/modinfo.cpp @@ -294,7 +294,7 @@ int ModInfo::checkAllForUpdate(PluginContainer *pluginContainer, QObject *receiv // NexusInterface::instance(pluginContainer)->requestUpdates(game->nexusModOrganizerID(), receiver, QVariant(), game->gameShortName(), QString()); //} - std::multimap<QString, int> organizedGames; + std::set<std::pair<QString, int>> organizedGames; for (auto mod : s_Collection) { if (mod->canBeUpdated()) { organizedGames.insert(std::make_pair<QString, int>(mod->getGameName().toLower(), mod->getNexusID())); @@ -317,7 +317,7 @@ int ModInfo::checkAllForUpdate(PluginContainer *pluginContainer, QObject *receiv int ModInfo::manualUpdateCheck(PluginContainer *pluginContainer, QObject *receiver, std::multimap<QString, int> IDs) { std::vector<QSharedPointer<ModInfo>> mods; - std::multimap<QString, int> organizedGames; + std::set<std::pair<QString, int>> organizedGames; for (auto ID : IDs) { auto matchedMods = getByModID(ID.first, ID.second); diff --git a/src/modinforegular.cpp b/src/modinforegular.cpp index 89541a70..8651f15e 100644 --- a/src/modinforegular.cpp +++ b/src/modinforegular.cpp @@ -225,9 +225,9 @@ void ModInfoRegular::nxmDescriptionAvailable(QString, int, QVariant, QVariant re if ((m_EndorsedState != ENDORSED_NEVER) && (result.contains("endorsement"))) { QVariantMap endorsement = result["endorsement"].toMap(); QString endorsementStatus = endorsement["endorse_status"].toString(); - if (endorsementStatus.compare("Endorsed") == 00) + if (endorsementStatus.compare("Endorsed", Qt::CaseInsensitive) == 00) setEndorsedState(ENDORSED_TRUE); - else if (endorsementStatus.compare("Abstained") == 00) + else if (endorsementStatus.compare("Abstained", Qt::CaseInsensitive) == 00) setEndorsedState(ENDORSED_NEVER); else setEndorsedState(ENDORSED_FALSE); @@ -235,6 +235,7 @@ void ModInfoRegular::nxmDescriptionAvailable(QString, int, QVariant, QVariant re m_LastNexusQuery = QDateTime::currentDateTimeUtc(); m_MetaInfoChanged = true; saveMeta(); + disconnect(sender(), SIGNAL(nxmDescriptionAvailable(QString, int, QVariant, QVariant))); emit modDetailsUpdated(true); } diff --git a/src/nexusinterface.h b/src/nexusinterface.h index db4ebfd6..1c283335 100644 --- a/src/nexusinterface.h +++ b/src/nexusinterface.h @@ -435,7 +435,7 @@ private: static QAtomicInt s_NextID; }; - static const int MAX_ACTIVE_DOWNLOADS = 2; + static const int MAX_ACTIVE_DOWNLOADS = 6; private: |
