diff options
author | LordMZTE <lord@mzte.de> | 2021-04-11 21:47:20 +0200 |
---|---|---|
committer | LordMZTE <lord@mzte.de> | 2021-04-11 21:47:20 +0200 |
commit | 2e597263a22b9dc3916d75839746bdd81a39a329 (patch) | |
tree | 415474b87003cb646e53e929e12ec4ec178f2049 /src/timeline/InputBar.cpp | |
parent | Improve sorting a bit and fix some bugs in edge cases (diff) | |
download | nheko-2e597263a22b9dc3916d75839746bdd81a39a329.tar.xz |
add notice and rainbownotice commands
Diffstat (limited to 'src/timeline/InputBar.cpp')
-rw-r--r-- | src/timeline/InputBar.cpp | 33 |
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); } } |