diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp index bcb89a03..27019ba3 100644 --- a/src/ChatPage.cpp +++ b/src/ChatPage.cpp @@ -266,6 +266,18 @@ ChatPage::ChatPage(QSharedPointer userSettings, QObject *parent) relatedEvents; for (const auto &event : room.timeline.events) { + auto event_id = mtx::accessors::event_id(event); + + // skip already read events + if (currentReadMarker && + currentReadMarker > cache::getEventIndex(room_id, event_id)) + continue; + + // skip our messages + auto sender = mtx::accessors::sender(event); + if (sender == http::client()->user_id().to_string()) + continue; + mtx::events::collections::TimelineEvent te{event}; std::visit([room_id = room_id](auto &event_) { event_.room_id = room_id; }, te.data); @@ -304,13 +316,6 @@ ChatPage::ChatPage(QSharedPointer userSettings, QObject *parent) actions.end(), mtx::pushrules::actions::Action{ mtx::pushrules::actions::notify{}}) != actions.end()) { - auto event_id = mtx::accessors::event_id(event); - - // skip already read events - if (currentReadMarker && - currentReadMarker > cache::getEventIndex(room_id, event_id)) - continue; - if (!cache::isNotificationSent(event_id)) { // We should only send one notification per event. cache::markSentNotification(event_id); diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp index 46f8e57c..b9725ecc 100644 --- a/src/timeline/TimelineModel.cpp +++ b/src/timeline/TimelineModel.cpp @@ -747,6 +747,11 @@ TimelineModel::data(const mtx::events::collections::TimelineEvents &event, int r case Notificationlevel: { const auto &push = ChatPage::instance()->pushruleEvaluator(); if (push) { + // skip our messages + auto sender = mtx::accessors::sender(event); + if (sender == http::client()->user_id().to_string()) + return qml_mtx_events::NotificationLevel::Nothing; + const auto &id = event_id(event); std::vector> relatedEvents;