From 5aff3e43098f1e730afe0202c737a93e90346c9b Mon Sep 17 00:00:00 2001 From: Konstantinos Sideris Date: Mon, 7 May 2018 12:00:49 +0300 Subject: [PATCH] Don't send notification for the room that is currently open --- include/ChatPage.h | 6 ++++++ src/ChatPage.cc | 7 +++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/include/ChatPage.h b/include/ChatPage.h index f659163c..6e0cf2d9 100644 --- a/include/ChatPage.h +++ b/include/ChatPage.h @@ -117,6 +117,12 @@ private slots: private: static ChatPage *instance_; + //! Check if the given room is currently open. + bool isRoomActive(const QString &room_id) + { + return isActiveWindow() && currentRoom() == room_id; + } + using UserID = QString; using Membership = mtx::events::StateEvent; using Memberships = std::map; diff --git a/src/ChatPage.cc b/src/ChatPage.cc index b4691fdd..1f5fa995 100644 --- a/src/ChatPage.cc +++ b/src/ChatPage.cc @@ -868,15 +868,18 @@ ChatPage::sendDesktopNotifications(const mtx::responses::Notifications &res) if (!cache_->isNotificationSent(event_id)) { const auto room_id = QString::fromStdString(item.room_id); const auto user_id = utils::event_sender(item.event); - const auto body = utils::event_body(item.event); // We should only sent one notification per event. cache_->markSentNotification(event_id); + // Don't send a notification when the current room is opened. + if (isRoomActive(room_id)) + continue; + NotificationsManager::postNotification( QString::fromStdString(cache_->singleRoomInfo(item.room_id).name), Cache::displayName(room_id, user_id), - body); + utils::event_body(item.event)); } } catch (const lmdb::error &e) { qWarning() << e.what();