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
This commit is contained in:
James Graham
2025-01-05 18:52:18 +00:00
parent c21e9f2114
commit 42f9b36667
4 changed files with 7 additions and 10 deletions

View File

@@ -9,7 +9,6 @@
#include "enums/delegatetype.h"
#include "messagecontentmodel.h"
#include "neochatconfig.h"
#include "neochatroommember.h"
#include "timelinemessagemodel.h"
using namespace Quotient;

View File

@@ -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<NeochatRoomMember *>(emptyNeochatRoomMember);
}
return QVariant::fromValue<NeochatRoomMember *>(m_memberObjects.at(mId).get());
return QVariant::fromValue<NeochatRoomMember *>(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<NeochatRoomMember>(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<MessageContentModel>(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();

View File

@@ -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<QString, std::unique_ptr<NeochatRoomMember>> m_memberObjects;
std::map<QString, std::unique_ptr<MessageContentModel>> m_contentModels;
QMap<QString, QSharedPointer<ReadMarkerModel>> m_readMarkerModels;
QMap<QString, QSharedPointer<ThreadModel>> m_threadModels;

View File

@@ -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<NeochatRoomMember>(this, memberId)).first->second.get();
}