From b2f722e4a1cfa93f05f1444a73c708080bb577d0 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Sun, 6 Aug 2023 21:34:52 +0200 Subject: [PATCH] Fix wrong label updating counts after article marked. --- .../services/abstract/serviceroot.cpp | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/src/librssguard/services/abstract/serviceroot.cpp b/src/librssguard/services/abstract/serviceroot.cpp index 067fe747e..fc1e29219 100644 --- a/src/librssguard/services/abstract/serviceroot.cpp +++ b/src/librssguard/services/abstract/serviceroot.cpp @@ -853,16 +853,30 @@ bool ServiceRoot::onAfterSetMessagesRead(RootItem* selected_item, // 4. Labels assigned. if (labelsNode() != nullptr) { auto db = qApp->database()->driver()->connection(metaObject()->className()); - auto lbls = DatabaseQueries::getCountOfAssignedLabelsToMessages(db, messages, accountId()); + QStringList lbls; // = DatabaseQueries::getCountOfAssignedLabelsToMessages(db, messages, accountId()); - for (const QString& lbl_custom_id : lbls.keys()) { - auto* lbl = labelsNode()->labelById(lbl_custom_id); - - if (lbl != nullptr) { - lbl->setCountOfUnreadMessages(lbls.value(lbl_custom_id).m_unread); - to_update << lbl; + for (const Message& msg : messages) { + for (const QString& lbl : msg.m_assignedLabelsIds) { + if (!lbls.contains(lbl)) { + lbls.append(lbl); + } } } + + for (const QString& lbl : lbls) { + Label* l = labelsNode()->labelById(lbl); + l->updateCounts(false); + to_update << l; + } + /* + for (const QString& lbl_custom_id : lbls.keys()) { + auto* lbl = labelsNode()->labelById(lbl_custom_id); + + if (lbl != nullptr) { + lbl->setCountOfUnreadMessages(lbls.value(lbl_custom_id).m_unread); + to_update << lbl; + } + }*/ } }