From db943766917eba7be3a6f89d41794c2d26363ab7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Blin?= <sebastien.blin@savoirfairelinux.com> Date: Thu, 25 Jun 2020 10:57:30 -0400 Subject: [PATCH] conversationmodel: only set displayed for latest interaction This avoids some spam about displayed messages daemon side Change-Id: I0df255671e63c0aece14109875c8662758fbf87d --- src/conversationmodel.cpp | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/conversationmodel.cpp b/src/conversationmodel.cpp index 81bedf9e..e7dac7fe 100644 --- a/src/conversationmodel.cpp +++ b/src/conversationmodel.cpp @@ -1177,22 +1177,25 @@ ConversationModel::clearUnreadInteractions(const QString& convId) { return; } bool emitUpdated = false; + QString lastDisplayed; { std::lock_guard<std::mutex> lk(pimpl_->interactionsLocks[convId]); auto& interactions = pimpl_->conversations[conversationIdx].interactions; std::for_each(interactions.begin(), interactions.end(), - [&] (decltype(*interactions.begin())& it) { - if (!it.second.isRead) { - emitUpdated = true; - it.second.isRead = true; - if (owner.profileInfo.type != profile::Type::SIP) { - auto daemonId = storage::getDaemonIdByInteractionId(pimpl_->db, QString::number(it.first)); - ConfigurationManager::instance().setMessageDisplayed(owner.id, pimpl_->conversations[conversationIdx].participants.front(), daemonId, 3); - } - storage::setInteractionRead(pimpl_->db, it.first); - } - }); - } + [&] (decltype(*interactions.begin())& it) { + if (!it.second.isRead) { + emitUpdated = true; + it.second.isRead = true; + if (owner.profileInfo.type != profile::Type::SIP) + lastDisplayed = storage::getDaemonIdByInteractionId(pimpl_->db, QString::number(it.first)); + storage::setInteractionRead(pimpl_->db, it.first); + } + }); + } + if (!lastDisplayed.isEmpty()) + ConfigurationManager::instance().setMessageDisplayed( + owner.id, pimpl_->conversations[conversationIdx].participants.front(), lastDisplayed, 3 + ); if (emitUpdated) { pimpl_->conversations[conversationIdx].unreadMessages = 0; pimpl_->dirtyConversations = {true, true}; -- GitLab