diff --git a/src/notificationsmanager.cpp b/src/notificationsmanager.cpp index 07180d40d..e02f69828 100644 --- a/src/notificationsmanager.cpp +++ b/src/notificationsmanager.cpp @@ -31,7 +31,12 @@ NotificationsManager::NotificationsManager(QObject *parent) { } -void NotificationsManager::postNotification(NeoChatRoom *room, const QString &sender, const QString &text, const QImage &icon, const QString &replyEventId) +void NotificationsManager::postNotification(NeoChatRoom *room, + const QString &sender, + const QString &text, + const QImage &icon, + const QString &replyEventId, + bool canReply) { if (!NeoChatConfig::self()->showNotifications()) { return; @@ -56,15 +61,17 @@ void NotificationsManager::postNotification(NeoChatRoom *room, const QString &se Q_EMIT Controller::instance().showWindow(); }); - std::unique_ptr replyAction(new KNotificationReplyAction(i18n("Reply"))); - replyAction->setPlaceholderText(i18n("Reply...")); - connect(replyAction.get(), &KNotificationReplyAction::replied, this, [room, replyEventId](const QString &text) { - room->postMessage(text, room->preprocessText(text), RoomMessageEvent::MsgType::Text, replyEventId, QString()); - }); + if (canReply) { + std::unique_ptr replyAction(new KNotificationReplyAction(i18n("Reply"))); + replyAction->setPlaceholderText(i18n("Reply...")); + connect(replyAction.get(), &KNotificationReplyAction::replied, this, [room, replyEventId](const QString &text) { + room->postMessage(text, room->preprocessText(text), RoomMessageEvent::MsgType::Text, replyEventId, QString()); + }); + notification->setReplyAction(std::move(replyAction)); + } notification->setHint(QStringLiteral("x-kde-origin-name"), room->localUser()->id()); - notification->setReplyAction(std::move(replyAction)); notification->sendEvent(); diff --git a/src/notificationsmanager.h b/src/notificationsmanager.h index 6144381b3..17baa8d90 100644 --- a/src/notificationsmanager.h +++ b/src/notificationsmanager.h @@ -19,7 +19,8 @@ class NotificationsManager : public QObject public: static NotificationsManager &instance(); - Q_INVOKABLE void postNotification(NeoChatRoom *room, const QString &sender, const QString &text, const QImage &icon, const QString &replyEventId); + Q_INVOKABLE void + postNotification(NeoChatRoom *room, const QString &sender, const QString &text, const QImage &icon, const QString &replyEventId, bool canReply); void postInviteNotification(NeoChatRoom *room, const QString &title, const QString &sender, const QImage &icon); private: diff --git a/src/roomlistmodel.cpp b/src/roomlistmodel.cpp index 9f09b6188..18b04e8de 100644 --- a/src/roomlistmodel.cpp +++ b/src/roomlistmodel.cpp @@ -239,7 +239,8 @@ void RoomListModel::handleNotifications() sender->displayname(room), notification["event"].toObject()["content"].toObject()["body"].toString(), avatar_image, - notification["event"].toObject()["event_id"].toString()); + notification["event"].toObject()["event_id"].toString(), + true); } } });