summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSilarn <jrim@rimpo.org>2019-02-04 00:59:05 -0600
committerSilarn <jrim@rimpo.org>2019-02-18 21:31:19 -0600
commit177f5c0446ab09f4010c86e9d8e1d3d02a8a76a9 (patch)
treedf7fb6c3a9ee3deaeb0e213b685d0bb406f01889 /src
parent91e909bc45e8b33b0a774c71ed28175243f0cccf (diff)
Fix issues with duplicate requests, expand parallel requests to 6
Diffstat (limited to 'src')
-rw-r--r--src/mainwindow.cpp10
-rw-r--r--src/modinfo.cpp4
-rw-r--r--src/modinforegular.cpp5
-rw-r--r--src/nexusinterface.h2
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: