From 649d73a7bddfabfe969019609a62c90475c8fe7f Mon Sep 17 00:00:00 2001 From: Konstantinos Sideris Date: Tue, 24 Apr 2018 14:50:47 +0300 Subject: [PATCH] Clear typing notifications when the user list is empty fixes #304 --- include/ChatPage.h | 3 +++ src/ChatPage.cc | 28 ++++++++++++++-------------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/include/ChatPage.h b/include/ChatPage.h index c09675fb..c456b66f 100644 --- a/include/ChatPage.h +++ b/include/ChatPage.h @@ -136,6 +136,9 @@ private: //! Update the room with the new notification count. void updateRoomNotificationCount(const QString &room_id, uint16_t notification_count); + QStringList generateTypingUsers(const QString &room_id, + const std::vector &typing_users); + QHBoxLayout *topLayout_; Splitter *splitter; diff --git a/src/ChatPage.cc b/src/ChatPage.cc index 59fcdc13..f2efb684 100644 --- a/src/ChatPage.cc +++ b/src/ChatPage.cc @@ -754,32 +754,32 @@ ChatPage::updateTypingUsers(const QString &roomid, const std::vectorisTypingNotificationsEnabled()) return; - if (user_ids.empty()) { - typingUsers_[roomid] = {}; - return; - } + typingUsers_[roomid] = generateTypingUsers(roomid, user_ids); + if (current_room_ == roomid) + typingDisplay_->setUsers(typingUsers_[roomid]); +} + +QStringList +ChatPage::generateTypingUsers(const QString &room_id, const std::vector &typing_users) +{ QStringList users; QSettings settings; - QString user_id = settings.value("auth/user_id").toString(); + QString local_user = settings.value("auth/user_id").toString(); - for (const auto &uid : user_ids) { - auto user = QString::fromStdString(uid); + for (const auto &uid : typing_users) { + const auto remote_user = QString::fromStdString(uid); - if (user == user_id) + if (remote_user == local_user) continue; - users.append(Cache::displayName(roomid, user)); + users.append(Cache::displayName(room_id, remote_user)); } users.sort(); - if (current_room_ == roomid) { - typingDisplay_->setUsers(users); - } - - typingUsers_.emplace(roomid, users); + return users; } void