diff options
| author | Jonathan Feenstra <26406078+JonathanFeenstra@users.noreply.github.com> | 2024-10-30 16:20:39 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-30 16:20:39 +0100 |
| commit | 91912f5fef80d870fe8ef3041076306843da6153 (patch) | |
| tree | 7b25873fd0e9bd957a4d0afcfc657662e2e0e59e | |
| parent | f42a9f1cef66907086edaa7bb005d434758f6326 (diff) | |
(Un-)endorse & (un-)track mods from the same source (#2141)
| -rw-r--r-- | src/mainwindow.cpp | 14 | ||||
| -rw-r--r-- | src/modinforegular.cpp | 43 |
2 files changed, 32 insertions, 25 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index f346a3e4..04ea7543 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -3068,12 +3068,14 @@ void MainWindow::nxmEndorsementsAvailable(QVariant userData, QVariant resultData ModInfo::getByModID(result->first, result->second.first); for (auto mod : modsList) { - if (result->second.second == "Endorsed") - mod->setIsEndorsed(true); - else if (result->second.second == "Abstained") - mod->setNeverEndorse(); - else - mod->setIsEndorsed(false); + if (mod->endorsedState() != EndorsedState::ENDORSED_NEVER) { + if (result->second.second == "Endorsed") + mod->setIsEndorsed(true); + else if (result->second.second == "Abstained") + mod->setNeverEndorse(); + else + mod->setIsEndorsed(false); + } } if (Settings::instance().nexus().endorsementIntegration()) { diff --git a/src/modinforegular.cpp b/src/modinforegular.cpp index d3ff6547..b33bbc44 100644 --- a/src/modinforegular.cpp +++ b/src/modinforegular.cpp @@ -369,26 +369,33 @@ void ModInfoRegular::nxmDescriptionAvailable(QString, int, QVariant, void ModInfoRegular::nxmEndorsementToggled(QString, int, QVariant, QVariant resultData) { QMap results = resultData.toMap(); - if (results["status"].toString().compare("Endorsed") == 0) { - m_EndorsedState = EndorsedState::ENDORSED_TRUE; - } else if (results["status"].toString().compare("Abstained") == 0) { - m_EndorsedState = EndorsedState::ENDORSED_NEVER; - } else { - m_EndorsedState = EndorsedState::ENDORSED_FALSE; + QMutexLocker locker(&s_Mutex); + for (auto& mod : s_Collection) { + if (mod->gameName().compare(m_GameName, Qt::CaseInsensitive) == 0 && + mod->nexusId() == m_NexusID) { + if (results["status"].toString().compare("Endorsed") == 0) { + mod->setIsEndorsed(true); + } else if (results["status"].toString().compare("Abstained") == 0) { + mod->setNeverEndorse(); + } else { + mod->setIsEndorsed(false); + } + mod->saveMeta(); + } } - m_MetaInfoChanged = true; - saveMeta(); emit modDetailsUpdated(true); } void ModInfoRegular::nxmTrackingToggled(QString, int, QVariant, bool tracked) { - if (tracked) - m_TrackedState = TrackedState::TRACKED_TRUE; - else - m_TrackedState = TrackedState::TRACKED_FALSE; - m_MetaInfoChanged = true; - saveMeta(); + QMutexLocker locker(&s_Mutex); + for (auto& mod : s_Collection) { + if (mod->gameName().compare(m_GameName, Qt::CaseInsensitive) == 0 && + mod->nexusId() == m_NexusID) { + mod->setIsTracked(tracked); + mod->saveMeta(); + } + } emit modDetailsUpdated(true); } @@ -583,11 +590,9 @@ void ModInfoRegular::addNexusCategory(int categoryID) void ModInfoRegular::setIsEndorsed(bool endorsed) { - if (m_EndorsedState != EndorsedState::ENDORSED_NEVER) { - m_EndorsedState = - endorsed ? EndorsedState::ENDORSED_TRUE : EndorsedState::ENDORSED_FALSE; - m_MetaInfoChanged = true; - } + m_EndorsedState = + endorsed ? EndorsedState::ENDORSED_TRUE : EndorsedState::ENDORSED_FALSE; + m_MetaInfoChanged = true; } void ModInfoRegular::setNeverEndorse() |
