Clear typing notifications when the user list is empty

fixes #304
This commit is contained in:
Konstantinos Sideris 2018-04-24 14:50:47 +03:00
parent 0028fdfe6c
commit 649d73a7bd
2 changed files with 17 additions and 14 deletions

View File

@ -136,6 +136,9 @@ private:
//! Update the room with the new notification count. //! Update the room with the new notification count.
void updateRoomNotificationCount(const QString &room_id, uint16_t notification_count); void updateRoomNotificationCount(const QString &room_id, uint16_t notification_count);
QStringList generateTypingUsers(const QString &room_id,
const std::vector<std::string> &typing_users);
QHBoxLayout *topLayout_; QHBoxLayout *topLayout_;
Splitter *splitter; Splitter *splitter;

View File

@ -754,32 +754,32 @@ ChatPage::updateTypingUsers(const QString &roomid, const std::vector<std::string
if (!userSettings_->isTypingNotificationsEnabled()) if (!userSettings_->isTypingNotificationsEnabled())
return; return;
if (user_ids.empty()) { typingUsers_[roomid] = generateTypingUsers(roomid, user_ids);
typingUsers_[roomid] = {};
return; if (current_room_ == roomid)
typingDisplay_->setUsers(typingUsers_[roomid]);
} }
QStringList
ChatPage::generateTypingUsers(const QString &room_id, const std::vector<std::string> &typing_users)
{
QStringList users; QStringList users;
QSettings settings; 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) { for (const auto &uid : typing_users) {
auto user = QString::fromStdString(uid); const auto remote_user = QString::fromStdString(uid);
if (user == user_id) if (remote_user == local_user)
continue; continue;
users.append(Cache::displayName(roomid, user)); users.append(Cache::displayName(room_id, remote_user));
} }
users.sort(); users.sort();
if (current_room_ == roomid) { return users;
typingDisplay_->setUsers(users);
}
typingUsers_.emplace(roomid, users);
} }
void void