From 91912f5fef80d870fe8ef3041076306843da6153 Mon Sep 17 00:00:00 2001 From: Jonathan Feenstra <26406078+JonathanFeenstra@users.noreply.github.com> Date: Wed, 30 Oct 2024 16:20:39 +0100 Subject: (Un-)endorse & (un-)track mods from the same source (#2141) --- src/modinforegular.cpp | 43 ++++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 19 deletions(-) (limited to 'src/modinforegular.cpp') 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() -- cgit v1.3.1