Make edits replace the previous notification on Linux
This commit is contained in:
parent
bccab87a5c
commit
eb1e54c8df
|
@ -82,8 +82,14 @@ NotificationsManager::postNotification(const mtx::responses::Notification ¬if
|
||||||
const auto event_id = QString::fromStdString(mtx::accessors::event_id(notification.event));
|
const auto event_id = QString::fromStdString(mtx::accessors::event_id(notification.event));
|
||||||
const auto room_name = QString::fromStdString(cache::singleRoomInfo(notification.room_id).name);
|
const auto room_name = QString::fromStdString(cache::singleRoomInfo(notification.room_id).name);
|
||||||
|
|
||||||
auto postNotif = [this, room_id, event_id, room_name, icon](QString text) {
|
const auto replaces_event_id =
|
||||||
emit systemPostNotificationCb(room_id, event_id, room_name, text, icon);
|
QString::fromStdString(mtx::accessors::relations(notification.event).replaces().value_or(""));
|
||||||
|
|
||||||
|
auto postNotif = [this, room_id, event_id, room_name, icon, replaces_event_id](QString text) {
|
||||||
|
if (replaces_event_id.isEmpty())
|
||||||
|
emit systemPostNotificationCb(room_id, event_id, room_name, text, icon);
|
||||||
|
else
|
||||||
|
emit systemPostNotificationCb(room_id, replaces_event_id, room_name, text, icon);
|
||||||
};
|
};
|
||||||
|
|
||||||
QString template_ = getMessageTemplate(notification);
|
QString template_ = getMessageTemplate(notification);
|
||||||
|
@ -149,12 +155,25 @@ NotificationsManager::systemPostNotification(const QString &room_id,
|
||||||
hints["desktop-entry"] = "nheko";
|
hints["desktop-entry"] = "nheko";
|
||||||
hints["category"] = "im.received";
|
hints["category"] = "im.received";
|
||||||
|
|
||||||
|
uint replace_id = 0;
|
||||||
|
if (!event_id.isEmpty()) {
|
||||||
|
for (auto elem = notificationIds.begin(); elem != notificationIds.end(); ++elem) {
|
||||||
|
if (elem.value().roomId != room_id)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (elem.value().eventId == event_id) {
|
||||||
|
replace_id = elem.key();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QList<QVariant> argumentList;
|
QList<QVariant> argumentList;
|
||||||
argumentList << "nheko"; // app_name
|
argumentList << "nheko"; // app_name
|
||||||
argumentList << (uint)0; // replace_id
|
argumentList << (uint)replace_id; // replace_id
|
||||||
argumentList << ""; // app_icon
|
argumentList << ""; // app_icon
|
||||||
argumentList << roomName; // summary
|
argumentList << roomName; // summary
|
||||||
argumentList << text; // body
|
argumentList << text; // body
|
||||||
|
|
||||||
// The list of actions has always the action name and then a localized version of that
|
// The list of actions has always the action name and then a localized version of that
|
||||||
// action. Currently we just use an empty string for that.
|
// action. Currently we just use an empty string for that.
|
||||||
|
|
Loading…
Reference in New Issue