Skip to content
Snippets Groups Projects
Verified Commit 2192e8be authored by Loren Burkholder's avatar Loren Burkholder Committed by Nicolas Werner
Browse files

Better handle encrypted notifications

parent 9168c2c7
No related branches found
No related tags found
No related merge requests found
......@@ -11,6 +11,7 @@
#include <QTextDocumentFragment>
#include <functional>
#include <variant>
#include <mtx/responses/notifications.hpp>
......@@ -194,6 +195,13 @@ NotificationsManager::formatNotification(const mtx::responses::Notification &not
const auto sender =
cache::displayName(QString::fromStdString(notification.room_id),
QString::fromStdString(mtx::accessors::sender(notification.event)));
// TODO: decrypt this message if the decryption setting is on in the UserSettings
if (auto msg = std::get_if<mtx::events::EncryptedEvent<mtx::events::msg::Encrypted>>(
&notification.event);
msg != nullptr)
return tr("%1 sent an encrypted message").arg(sender);
const auto messageLeadIn =
((mtx::accessors::msg_type(notification.event) == mtx::events::MessageType::Emote)
? "* " + sender + " "
......
......@@ -9,6 +9,8 @@
#include <mtx/responses/notifications.hpp>
#include <variant>
QString
NotificationsManager::formatNotification(const mtx::responses::Notification &notification)
{
......@@ -37,22 +39,25 @@ NotificationsManager::postNotification(const mtx::responses::Notification &notif
cache::displayName(QString::fromStdString(notification.room_id),
QString::fromStdString(mtx::accessors::sender(notification.event)));
const QString messageInfo =
QString("%1 %2 a message")
.arg(sender)
.arg((utils::isReply(notification.event)
? tr("replied to",
"Used to denote that this message is a reply to another "
"message. Displayed as 'foo replied to a message'.")
: tr("sent",
"Used to denote that this message is a normal message. Displayed as 'foo "
"sent a message'.")));
QString text = formatNotification(notification);
QImage *image = nullptr;
if (mtx::accessors::msg_type(notification.event) == mtx::events::MessageType::Image)
image = new QImage{cacheImage(notification.event)};
objCxxPostNotification(room_name, messageInfo, text, image);
const auto isEncrypted =
std::get_if<mtx::events::EncryptedEvent<mtx::events::msg::Encrypted>>(
&notification.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 messageInfo = (isReply ? tr("%1 replied with an encrypted message")
: tr("%1 sent an encrypted message"))
.arg(sender);
objCxxPostNotification(room_name, messageInfo, "", image);
} else {
const QString messageInfo =
(isReply ? tr("%1 replied to a message") : tr("%1 sent a message")).arg(sender);
objCxxPostNotification(
room_name, messageInfo, formatNotification(notification), image);
}
}
......@@ -9,6 +9,8 @@
#include <QStandardPaths>
#include <QTextDocumentFragment>
#include <variant>
#include "Cache.h"
#include "EventAccessors.h"
#include "Utils.h"
......@@ -52,7 +54,21 @@ NotificationsManager::postNotification(const mtx::responses::Notification &notif
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<mtx::events::EncryptedEvent<mtx::events::msg::Encrypted>>(
&notification.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 &not
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>.+\\<\\/mx-reply\\>)"), ""))
.toPlainText()
.prepend((mtx::accessors::msg_type(notification.event) == mtx::events::MessageType::Emote)
? "* " + sender + " "
: "");
.prepend(messageLeadIn);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment