Remove the dependency on NeoChatConfig from EventHandler
This commit is contained in:
@@ -27,7 +27,6 @@
|
|||||||
#include "events/locationbeaconevent.h"
|
#include "events/locationbeaconevent.h"
|
||||||
#include "events/pollevent.h"
|
#include "events/pollevent.h"
|
||||||
#include "events/widgetevent.h"
|
#include "events/widgetevent.h"
|
||||||
#include "neochatconfig.h"
|
|
||||||
#include "neochatroom.h"
|
#include "neochatroom.h"
|
||||||
#include "texthandler.h"
|
#include "texthandler.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
@@ -149,7 +148,7 @@ bool EventHandler::isHighlighted(const NeoChatRoom *room, const Quotient::RoomEv
|
|||||||
return !room->isDirectChat() && room->isEventHighlighted(event);
|
return !room->isDirectChat() && room->isEventHighlighted(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EventHandler::isHidden(const NeoChatRoom *room, const Quotient::RoomEvent *event)
|
bool EventHandler::isHidden(const NeoChatRoom *room, const Quotient::RoomEvent *event, std::function<bool(const Quotient::RoomEvent *)> filter)
|
||||||
{
|
{
|
||||||
if (room == nullptr) {
|
if (room == nullptr) {
|
||||||
qCWarning(EventHandling) << "isHidden called with room set to nullptr.";
|
qCWarning(EventHandling) << "isHidden called with room set to nullptr.";
|
||||||
@@ -160,22 +159,10 @@ bool EventHandler::isHidden(const NeoChatRoom *room, const Quotient::RoomEvent *
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event->isStateEvent() && !NeoChatConfig::self()->showStateEvent()) {
|
if (filter && filter(event)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (auto roomMemberEvent = eventCast<const RoomMemberEvent>(event)) {
|
|
||||||
if ((roomMemberEvent->isJoin() || roomMemberEvent->isLeave()) && !NeoChatConfig::self()->showLeaveJoinEvent()) {
|
|
||||||
return true;
|
|
||||||
} else if (roomMemberEvent->isRename() && roomMemberEvent->prevContent() && roomMemberEvent->prevContent()->membership == roomMemberEvent->membership()
|
|
||||||
&& !NeoChatConfig::self()->showRename()) {
|
|
||||||
return true;
|
|
||||||
} else if (roomMemberEvent->isAvatarUpdate() && !roomMemberEvent->isJoin() && !roomMemberEvent->isLeave()
|
|
||||||
&& !NeoChatConfig::self()->showAvatarUpdate()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (event->isStateEvent() && eventCast<const StateEvent>(event)->repeatsState()) {
|
if (event->isStateEvent() && eventCast<const StateEvent>(event)->repeatsState()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ public:
|
|||||||
* user has hidden all state events or if the sender has been ignored by the local
|
* user has hidden all state events or if the sender has been ignored by the local
|
||||||
* user.
|
* user.
|
||||||
*/
|
*/
|
||||||
static bool isHidden(const NeoChatRoom *room, const Quotient::RoomEvent *event);
|
static bool isHidden(const NeoChatRoom *room, const Quotient::RoomEvent *event, std::function<bool(const Quotient::RoomEvent *)> filter = {});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief The input format of the body in the message.
|
* @brief The input format of the body in the message.
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
#include "threadmodel.h"
|
#include "threadmodel.h"
|
||||||
|
|
||||||
#include <Quotient/events/encryptedevent.h>
|
#include <Quotient/events/encryptedevent.h>
|
||||||
|
#include <Quotient/events/roommemberevent.h>
|
||||||
#include <Quotient/events/roommessageevent.h>
|
#include <Quotient/events/roommessageevent.h>
|
||||||
#include <Quotient/events/stickerevent.h>
|
#include <Quotient/events/stickerevent.h>
|
||||||
#if Quotient_VERSION_MINOR > 9 || (Quotient_VERSION_MINOR == 9 && Quotient_VERSION_PATCH > 1)
|
#if Quotient_VERSION_MINOR > 9 || (Quotient_VERSION_MINOR == 9 && Quotient_VERSION_PATCH > 1)
|
||||||
@@ -175,7 +176,22 @@ QVariant MessageModel::data(const QModelIndex &idx, int role) const
|
|||||||
return pendingIt->deliveryStatus();
|
return pendingIt->deliveryStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (EventHandler::isHidden(m_room, &event.value().get())) {
|
if (EventHandler::isHidden(m_room, &event.value().get(), [](const RoomEvent *event) -> bool {
|
||||||
|
if (event->isStateEvent() && !NeoChatConfig::showStateEvent()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (auto roomMemberEvent = eventCast<const RoomMemberEvent>(event)) {
|
||||||
|
if ((roomMemberEvent->isJoin() || roomMemberEvent->isLeave()) && !NeoChatConfig::showLeaveJoinEvent()) {
|
||||||
|
return true;
|
||||||
|
} else if (roomMemberEvent->isRename() && !roomMemberEvent->isJoin() && !roomMemberEvent->isLeave() && !NeoChatConfig::showRename()) {
|
||||||
|
return true;
|
||||||
|
} else if (roomMemberEvent->isAvatarUpdate() && !roomMemberEvent->isJoin() && !roomMemberEvent->isLeave()
|
||||||
|
&& !NeoChatConfig::showAvatarUpdate()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
})) {
|
||||||
return EventStatus::Hidden;
|
return EventStatus::Hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user