summary refs log tree commit diff
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2024-06-13 04:36:34 +0200
committerNicolas Werner <nicolas.werner@hotmail.de>2024-06-13 04:36:34 +0200
commitb39ffc2f1a641d01dcfbf1d2bd8712a68bcf250a (patch)
tree275df0e77eaed1731a61855c70b99e9910bbd021
parentWorkaround fuzzy matching on package list API (diff)
downloadnheko-b39ffc2f1a641d01dcfbf1d2bd8712a68bcf250a.tar.xz
Fix disabling a room ping
-rw-r--r--src/timeline/InputBar.cpp15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/timeline/InputBar.cpp b/src/timeline/InputBar.cpp
index 2d15d01a..57c1263b 100644
--- a/src/timeline/InputBar.cpp
+++ b/src/timeline/InputBar.cpp
@@ -187,9 +187,6 @@ InputBar::addMention(QString mention, QString text)
         mentionTexts_.push_back(text);
 
         emit mentionsChanged();
-        if (mention == u"@room") {
-            this->containsAtRoom_ = true;
-        }
     }
 }
 
@@ -200,9 +197,6 @@ InputBar::removeMention(QString mention)
         mentions_.removeAt(idx);
         mentionTexts_.removeAt(idx);
         emit mentionsChanged();
-        if (mention == u"@room") {
-            this->containsAtRoom_ = false;
-        }
     }
 }
 
@@ -244,6 +238,7 @@ InputBar::updateTextContentProperties(const QString &t, bool charDeleted)
     auto roomMention = containsRoomMention(t) && this->room->permissions()->canPingRoom();
 
     if (roomMention != this->containsAtRoom_) {
+        this->containsAtRoom_ = roomMention;
         if (roomMention)
             addMention(QStringLiteral(u"@room"), QStringLiteral(u"@room"));
         else
@@ -500,8 +495,11 @@ mtx::common::Mentions
 InputBar::generateMentions()
 {
     std::vector<std::string> userMentions;
+    bool atRoom = false;
     for (const auto &m : mentions_)
-        if (m != u"@room")
+        if (m == u"@room")
+            atRoom = true;
+        else
             userMentions.push_back(m.toStdString());
 
     if (!room->reply().isEmpty()) {
@@ -515,7 +513,8 @@ InputBar::generateMentions()
 
     auto mention = mtx::common::Mentions{
       .user_ids = userMentions,
-      .room     = containsAtRoom_,
+      // We use the atRoom from the mentions list to allow suppressing a room mention
+      .room = atRoom,
     };
 
     // this->containsAtRoom_ = false;