diff options
| author | Silarn <jrim@rimpo.org> | 2019-01-29 23:47:00 -0600 |
|---|---|---|
| committer | Silarn <jrim@rimpo.org> | 2019-02-18 21:29:26 -0600 |
| commit | 5aed35d2b6a43bae284bea958456bc50b8bfda44 (patch) | |
| tree | cf9c9ddb394a30b87ad06b5d6dba2e2a9ce72a2e /src/mainwindow.cpp | |
| parent | 04c6c6da5c9387430ea14b062a0bb6712c7b7be3 (diff) | |
Ensure mainwindow slot doesn't override data we've just set
Diffstat (limited to 'src/mainwindow.cpp')
| -rw-r--r-- | src/mainwindow.cpp | 33 |
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(); } } |
