summaryrefslogtreecommitdiff
path: root/src/mainwindow.cpp
diff options
context:
space:
mode:
authorSilarn <jrim@rimpo.org>2019-01-29 23:47:00 -0600
committerSilarn <jrim@rimpo.org>2019-02-18 21:29:26 -0600
commit5aed35d2b6a43bae284bea958456bc50b8bfda44 (patch)
treecf9c9ddb394a30b87ad06b5d6dba2e2a9ce72a2e /src/mainwindow.cpp
parent04c6c6da5c9387430ea14b062a0bb6712c7b7be3 (diff)
Ensure mainwindow slot doesn't override data we've just set
Diffstat (limited to 'src/mainwindow.cpp')
-rw-r--r--src/mainwindow.cpp33
1 files changed, 20 insertions, 13 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 5237934a..6933efda 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -5558,21 +5558,28 @@ void MainWindow::nxmDescriptionAvailable(QString gameName, int modID, QVariant u
}
std::vector<ModInfo::Ptr> modsList = ModInfo::getByModID(gameNameReal, modID);
for (auto mod : modsList) {
- mod->setNexusDescription(result["description"].toString());
- mod->setNewestVersion(result["version"].toString());
+ QDateTime now = QDateTime::currentDateTimeUtc();
+ QDateTime updateTarget = mod->getLastNexusUpdate().addSecs(3600);
+ QDateTime queryTarget = mod->getLastNexusQuery().addDays(1);
+ if (now >= updateTarget) {
+ mod->setNexusDescription(result["description"].toString());
+ mod->setNewestVersion(result["version"].toString());
+ mod->setLastNexusUpdate(QDateTime::currentDateTimeUtc());
+ }
- if ((mod->endorsedState() != ModInfo::ENDORSED_NEVER) && (result.contains("endorsement"))) {
- QVariantMap endorsement = result["endorsement"].toMap();
- QString endorsementStatus = endorsement["endorse_status"].toString();
- if (endorsementStatus.compare("Endorsed") == 00)
- mod->setIsEndorsed(true);
- else if (endorsementStatus.compare("Abstained") == 00)
- mod->setNeverEndorse();
- else
- mod->setIsEndorsed(false);
+ if (now >= queryTarget) {
+ if ((mod->endorsedState() != ModInfo::ENDORSED_NEVER) && (result.contains("endorsement"))) {
+ QVariantMap endorsement = result["endorsement"].toMap();
+ QString endorsementStatus = endorsement["endorse_status"].toString();
+ if (endorsementStatus.compare("Endorsed") == 00)
+ mod->setIsEndorsed(true);
+ else if (endorsementStatus.compare("Abstained") == 00)
+ mod->setNeverEndorse();
+ else
+ mod->setIsEndorsed(false);
+ }
+ mod->setLastNexusQuery(QDateTime::currentDateTimeUtc());
}
- mod->setLastNexusUpdate(QDateTime::currentDateTimeUtc());
- mod->setLastNexusQuery(QDateTime::currentDateTimeUtc());
mod->saveMeta();
}
}