From 2192e8bea85e78435830fcb9c8a98c50637c86f8 Mon Sep 17 00:00:00 2001 From: Loren Burkholder Date: Fri, 26 Feb 2021 15:33:27 -0500 Subject: Better handle encrypted notifications --- src/notifications/ManagerWin.cpp | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) (limited to 'src/notifications/ManagerWin.cpp') diff --git a/src/notifications/ManagerWin.cpp b/src/notifications/ManagerWin.cpp index b17c6e3b..5b134c0b 100644 --- a/src/notifications/ManagerWin.cpp +++ b/src/notifications/ManagerWin.cpp @@ -9,6 +9,8 @@ #include #include +#include + #include "Cache.h" #include "EventAccessors.h" #include "Utils.h" @@ -52,7 +54,21 @@ NotificationsManager::postNotification(const mtx::responses::Notification ¬if const auto sender = cache::displayName(QString::fromStdString(notification.room_id), QString::fromStdString(mtx::accessors::sender(notification.event))); - const auto text = formatNotification(notification); + + const auto isEncrypted = + std::get_if>( + ¬ification.event) != nullptr; + const auto isReply = utils::isReply(notification.event); + + if (isEncrypted) { + // TODO: decrypt this message if the decryption setting is on in the UserSettings + const QString text = (isReply ? tr("%1 replied with an encrypted message") + : tr("%1 sent an encrypted message")) + .arg(sender); + systemPostNotification(room_name, sender, text, icon); + } else { + systemPostNotification(room_name, sender, formatNotification(notification), icon); + } systemPostNotification(room_name, sender, text, icon); } @@ -98,11 +114,20 @@ NotificationsManager::formatNotification(const mtx::responses::Notification ¬ cache::displayName(QString::fromStdString(notification.room_id), QString::fromStdString(mtx::accessors::sender(notification.event))); + const auto messageLeadIn = + ((mtx::accessors::msg_type(notification.event) == mtx::events::MessageType::Emote) + ? "* " + sender + " " + : sender + + (utils::isReply(notification.event) + ? tr(" replied", + "Used to denote that this message is a reply to another " + "message. Displayed as 'foo replied: message'.") + : "") + + ": "); + return QTextDocumentFragment::fromHtml( mtx::accessors::formattedBodyWithFallback(notification.event) .replace(QRegularExpression("(.+\\<\\/mx-reply\\>)"), "")) .toPlainText() - .prepend((mtx::accessors::msg_type(notification.event) == mtx::events::MessageType::Emote) - ? "* " + sender + " " - : ""); + .prepend(messageLeadIn); } -- cgit 1.5.1