summary refs log tree commit diff
path: root/src/timeline/InputBar.cpp
diff options
context:
space:
mode:
authorLordMZTE <lord@mzte.de>2021-04-11 21:47:20 +0200
committerLordMZTE <lord@mzte.de>2021-04-11 21:47:20 +0200
commit2e597263a22b9dc3916d75839746bdd81a39a329 (patch)
tree415474b87003cb646e53e929e12ec4ec178f2049 /src/timeline/InputBar.cpp
parentImprove sorting a bit and fix some bugs in edge cases (diff)
downloadnheko-2e597263a22b9dc3916d75839746bdd81a39a329.tar.xz
add notice and rainbownotice commands
Diffstat (limited to 'src/timeline/InputBar.cpp')
-rw-r--r--src/timeline/InputBar.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/timeline/InputBar.cpp b/src/timeline/InputBar.cpp
index 38c08d1c..cda38b75 100644
--- a/src/timeline/InputBar.cpp
+++ b/src/timeline/InputBar.cpp
@@ -350,6 +350,35 @@ InputBar::emote(QString msg, bool rainbowify)
 }
 
 void
+InputBar::notice(QString msg, bool rainbowify)
+{
+        auto html = utils::markdownToHtml(msg, rainbowify);
+
+        mtx::events::msg::Notice notice;
+        notice.body = msg.trimmed().toStdString();
+
+        if (html != msg.trimmed().toHtmlEscaped() &&
+            ChatPage::instance()->userSettings()->markdown()) {
+                notice.formatted_body = html.toStdString();
+                notice.format         = "org.matrix.custom.html";
+                // Remove markdown links by completer
+                notice.body =
+                  msg.trimmed().replace(conf::strings::matrixToMarkdownLink, "\\1").toStdString();
+        }
+
+        if (!room->reply().isEmpty()) {
+                notice.relations.relations.push_back(
+                  {mtx::common::RelationType::InReplyTo, room->reply().toStdString()});
+        }
+        if (!room->edit().isEmpty()) {
+                notice.relations.relations.push_back(
+                  {mtx::common::RelationType::Replace, room->edit().toStdString()});
+        }
+
+        room->sendMessageEvent(notice, mtx::events::EventType::RoomMessage);
+}
+
+void
 InputBar::image(const QString &filename,
                 const std::optional<mtx::crypto::EncryptedFile> &file,
                 const QString &url,
@@ -531,6 +560,10 @@ InputBar::command(QString command, QString args)
                 message(args, MarkdownOverride::ON, true);
         } else if (command == "rainbowme") {
                 emote(args, true);
+        } else if (command == "notice") {
+                notice(args, false);
+        } else if (command == "rainbownotice") {
+                notice(args, true);
         }
 }