summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Feenstra <26406078+JonathanFeenstra@users.noreply.github.com>2024-10-30 16:20:39 +0100
committerGitHub <noreply@github.com>2024-10-30 16:20:39 +0100
commit91912f5fef80d870fe8ef3041076306843da6153 (patch)
tree7b25873fd0e9bd957a4d0afcfc657662e2e0e59e
parentf42a9f1cef66907086edaa7bb005d434758f6326 (diff)
(Un-)endorse & (un-)track mods from the same source (#2141)
-rw-r--r--src/mainwindow.cpp14
-rw-r--r--src/modinforegular.cpp43
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()