diff --git a/src/app/controller.cpp b/src/app/controller.cpp index 6feeb5c64..504e0c1cb 100644 --- a/src/app/controller.cpp +++ b/src/app/controller.cpp @@ -99,6 +99,7 @@ Controller::Controller(QObject *parent) MessageModel::setHiddenFilter(hiddenEventFilter); RoomListModel::setHiddenFilter(hiddenEventFilter); RoomTreeModel::setHiddenFilter(hiddenEventFilter); + NeoChatRoom::setHiddenFilter(hiddenEventFilter); MediaSizeHelper::setMaxSize(NeoChatConfig::mediaMaxWidth(), NeoChatConfig::mediaMaxHeight()); connect(NeoChatConfig::self(), &NeoChatConfig::MediaMaxWidthChanged, this, []() { diff --git a/src/libneochat/neochatroom.cpp b/src/libneochat/neochatroom.cpp index 0402c1a3e..e08ee4e33 100644 --- a/src/libneochat/neochatroom.cpp +++ b/src/libneochat/neochatroom.cpp @@ -59,6 +59,10 @@ using namespace Quotient; +std::function NeoChatRoom::m_hiddenFilter = [](const Quotient::RoomEvent *) -> bool { + return false; +}; + NeoChatRoom::NeoChatRoom(Connection *connection, QString roomId, JoinState joinState) : Room(connection, std::move(roomId), joinState) { @@ -369,7 +373,7 @@ const RoomEvent *NeoChatRoom::lastEvent(std::function f void NeoChatRoom::cacheLastEvent() { - auto event = lastEvent(); + auto event = lastEvent(m_hiddenFilter); if (event != nullptr) { auto &roomLastMessageProvider = RoomLastMessageProvider::self(); @@ -1718,4 +1722,9 @@ QString NeoChatRoom::rootIdForThread(const QString &eventId) const return rootId; } +void NeoChatRoom::setHiddenFilter(std::function hiddenFilter) +{ + NeoChatRoom::m_hiddenFilter = hiddenFilter; +} + #include "moc_neochatroom.cpp" diff --git a/src/libneochat/neochatroom.h b/src/libneochat/neochatroom.h index c57b8922f..02091bebb 100644 --- a/src/libneochat/neochatroom.h +++ b/src/libneochat/neochatroom.h @@ -587,6 +587,8 @@ public: */ Q_INVOKABLE QString rootIdForThread(const QString &eventId) const; + static void setHiddenFilter(std::function hiddenFilter); + private: bool m_visible = false; @@ -618,6 +620,7 @@ private: void cleanupExtraEvent(const QString &eventId); std::unordered_map> m_memberObjects; + static std::function m_hiddenFilter; private Q_SLOTS: void updatePushNotificationState(QString type);