From 5aed35d2b6a43bae284bea958456bc50b8bfda44 Mon Sep 17 00:00:00 2001 From: Silarn Date: Tue, 29 Jan 2019 23:47:00 -0600 Subject: Ensure mainwindow slot doesn't override data we've just set --- src/mainwindow.cpp | 37 ++++++++++++++++++++++--------------- src/modinforegular.cpp | 2 +- 2 files changed, 23 insertions(+), 16 deletions(-) (limited to 'src') 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 modsList = ModInfo::getByModID(gameNameReal, modID); for (auto mod : modsList) { - mod->setNexusDescription(result["description"].toString()); - mod->setNewestVersion(result["version"].toString()); - - 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->setLastNexusUpdate(QDateTime::currentDateTimeUtc()); - mod->setLastNexusQuery(QDateTime::currentDateTimeUtc()); + 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 (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->saveMeta(); } } diff --git a/src/modinforegular.cpp b/src/modinforegular.cpp index 57c4baad..f2844084 100644 --- a/src/modinforegular.cpp +++ b/src/modinforegular.cpp @@ -266,7 +266,7 @@ void ModInfoRegular::nxmRequestFailed(QString, int, int, QVariant userData, QNet bool ModInfoRegular::updateNXMInfo() { QDateTime time = QDateTime::currentDateTimeUtc(); - QDateTime target = m_LastNexusQuery.addSecs(3600); + QDateTime target = m_LastNexusQuery.addDays(1); if (m_NexusID > 0 && time >= target) { m_NexusBridge.requestDescription(m_GameName, m_NexusID, QVariant()); return true; -- cgit v1.3.1