From 42f9b3666713814007145a2a87cce8ceb84f6696 Mon Sep 17 00:00:00 2001 From: James Graham Date: Sun, 5 Jan 2025 18:52:18 +0000 Subject: [PATCH] Get rid of the m_memberObjects store in MessageModel Get rid of the m_memberObjects store in MessageModel which was missed in the last mr. Also clean up the code for NeoChatMembers --- src/models/messagefiltermodel.cpp | 1 - src/models/messagemodel.cpp | 10 +++------- src/models/messagemodel.h | 2 -- src/neochatroom.cpp | 4 ++++ 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/models/messagefiltermodel.cpp b/src/models/messagefiltermodel.cpp index 1851e7ea3..e7be90890 100644 --- a/src/models/messagefiltermodel.cpp +++ b/src/models/messagefiltermodel.cpp @@ -9,7 +9,6 @@ #include "enums/delegatetype.h" #include "messagecontentmodel.h" #include "neochatconfig.h" -#include "neochatroommember.h" #include "timelinemessagemodel.h" using namespace Quotient; diff --git a/src/models/messagemodel.cpp b/src/models/messagemodel.cpp index 827745f44..0f606c90c 100644 --- a/src/models/messagemodel.cpp +++ b/src/models/messagemodel.cpp @@ -18,6 +18,7 @@ #include "eventhandler.h" #include "events/pollevent.h" #include "models/reactionmodel.h" +#include "neochatroommember.h" using namespace Quotient; @@ -147,11 +148,11 @@ QVariant MessageModel::data(const QModelIndex &idx, int role) const mId = event.value().get().senderId(); } - if (!m_memberObjects.contains(mId)) { + if (!m_room->isMember(mId)) { return QVariant::fromValue(emptyNeochatRoomMember); } - return QVariant::fromValue(m_memberObjects.at(mId).get()); + return QVariant::fromValue(m_room->qmlSafeMember(mId)); } if (role == HighlightRole) { @@ -427,10 +428,6 @@ void MessageModel::createEventObjects(const Quotient::RoomEvent *event, bool isP senderId = m_room->localMember().id(); } - if (!m_memberObjects.contains(senderId)) { - m_memberObjects[senderId] = std::unique_ptr(new NeochatRoomMember(m_room, senderId)); - } - if (!m_contentModels.contains(eventId) && !m_contentModels.contains(event->transactionId())) { if (!event->isStateEvent() || event->matrixType() == u"org.matrix.msc3672.beacon_info"_s) { m_contentModels[eventId] = std::unique_ptr(new MessageContentModel(m_room, eventId, false, isPending)); @@ -516,7 +513,6 @@ void MessageModel::clearModel() void MessageModel::clearEventObjects() { - m_memberObjects.clear(); m_contentModels.clear(); m_reactionModels.clear(); m_readMarkerModels.clear(); diff --git a/src/models/messagemodel.h b/src/models/messagemodel.h index 8437e8dbf..6d55a6544 100644 --- a/src/models/messagemodel.h +++ b/src/models/messagemodel.h @@ -9,7 +9,6 @@ #include "messagecontentmodel.h" #include "neochatroom.h" -#include "neochatroommember.h" #include "pollhandler.h" #include "readmarkermodel.h" #include "threadmodel.h" @@ -154,7 +153,6 @@ private: bool resetting = false; bool movingEvent = false; - std::map> m_memberObjects; std::map> m_contentModels; QMap> m_readMarkerModels; QMap> m_threadModels; diff --git a/src/neochatroom.cpp b/src/neochatroom.cpp index fdca96199..f68405f21 100644 --- a/src/neochatroom.cpp +++ b/src/neochatroom.cpp @@ -1743,6 +1743,10 @@ void NeoChatRoom::setRoomState(const QString &type, const QString &stateKey, con NeochatRoomMember *NeoChatRoom::qmlSafeMember(const QString &memberId) { + if (!isMember(memberId)) { + return nullptr; + } + if (!m_memberObjects.contains(memberId)) { return m_memberObjects.emplace(memberId, std::make_unique(this, memberId)).first->second.get(); }