REmove getAuthor as no longer needed

This commit is contained in:
James Graham
2024-07-23 14:15:19 +01:00
parent 0f72ccd00c
commit dba88fe2b7
8 changed files with 45 additions and 69 deletions

View File

@@ -36,8 +36,6 @@ private Q_SLOTS:
void eventId(); void eventId();
void nullEventId(); void nullEventId();
void author();
void nullAuthor();
void authorDisplayName(); void authorDisplayName();
void nullAuthorDisplayName(); void nullAuthorDisplayName();
void singleLineSidplayName(); void singleLineSidplayName();
@@ -96,32 +94,6 @@ void EventHandlerTest::nullEventId()
QCOMPARE(noEventHandler.getId(), QString()); QCOMPARE(noEventHandler.getId(), QString());
} }
void EventHandlerTest::author()
{
auto event = room->messageEvents().at(0).get();
auto author = room->member(event->senderId());
EventHandler eventHandler(room, event);
auto eventHandlerAuthor = eventHandler.getAuthor();
QCOMPARE(eventHandlerAuthor.isLocalMember(), author.id() == room->localMember().id());
QCOMPARE(eventHandlerAuthor.id(), author.id());
QCOMPARE(eventHandlerAuthor.displayName(), author.displayName());
QCOMPARE(eventHandlerAuthor.avatarUrl(), author.avatarUrl());
QCOMPARE(eventHandlerAuthor.avatarMediaId(), author.avatarMediaId());
QCOMPARE(eventHandlerAuthor.color(), author.color());
}
void EventHandlerTest::nullAuthor()
{
QTest::ignoreMessage(QtWarningMsg, "getAuthor called with m_room set to nullptr.");
QCOMPARE(emptyHandler.getAuthor(), RoomMember());
EventHandler noEventHandler(room, nullptr);
QTest::ignoreMessage(QtWarningMsg, "getAuthor called with m_event set to nullptr. Returning empty user.");
QCOMPARE(noEventHandler.getAuthor(), RoomMember());
}
void EventHandlerTest::authorDisplayName() void EventHandlerTest::authorDisplayName()
{ {
EventHandler eventHandler(room, room->messageEvents().at(1).get()); EventHandler eventHandler(room, room->messageEvents().at(1).get());

View File

@@ -61,20 +61,6 @@ MessageComponentType::Type EventHandler::messageComponentType() const
return MessageComponentType::typeForEvent(*m_event); return MessageComponentType::typeForEvent(*m_event);
} }
Quotient::RoomMember EventHandler::getAuthor(bool isPending) const
{
if (m_room == nullptr) {
qCWarning(EventHandling) << "getAuthor called with m_room set to nullptr.";
return {};
}
if (m_event == nullptr) {
qCWarning(EventHandling) << "getAuthor called with m_event set to nullptr. Returning empty user.";
return {};
}
return isPending ? m_room->localMember() : m_room->member(m_event->senderId());
}
QString EventHandler::getAuthorDisplayName(bool isPending) const QString EventHandler::getAuthorDisplayName(bool isPending) const
{ {
if (m_room == nullptr) { if (m_room == nullptr) {

View File

@@ -53,25 +53,10 @@ public:
*/ */
MessageComponentType::Type messageComponentType() const; MessageComponentType::Type messageComponentType() const;
/**
* @brief Get the author of the event in context of the room.
*
* An empty Quotient::RoomMember will be returned if the EventHandler hasn't had
* the room or event initialised.
*
* @param isPending if the event is pending, i.e. has not been confirmed by
* the server.
*
* @return a Quotient::RoomMember object for the user.
*
* @sa Quotient::RoomMember
*/
Quotient::RoomMember getAuthor(bool isPending = false) const;
/** /**
* @brief Get the display name of the event author. * @brief Get the display name of the event author.
* *
* This method is separate from getAuthor() and special in that it will return * This method is special in that it will return
* the old display name of the author if the current event is one that caused it * the old display name of the author if the current event is one that caused it
* to change. This allows for scenarios where the UI wishes to notify that a * to change. This allows for scenarios where the UI wishes to notify that a
* user's display name has changed and what it changed from. * user's display name has changed and what it changed from.

View File

@@ -3,6 +3,7 @@
#include "messagecontentmodel.h" #include "messagecontentmodel.h"
#include "neochatconfig.h" #include "neochatconfig.h"
#include "neochatroommember.h"
#include <QImageReader> #include <QImageReader>
@@ -35,10 +36,10 @@ MessageContentModel::MessageContentModel(NeoChatRoom *room, const Quotient::Room
, m_room(room) , m_room(room)
, m_eventId(event != nullptr ? event->id() : QString()) , m_eventId(event != nullptr ? event->id() : QString())
, m_eventSenderId(event != nullptr ? event->senderId() : QString()) , m_eventSenderId(event != nullptr ? event->senderId() : QString())
, m_event(loadEvent<RoomEvent>(event->fullJson()))
, m_isPending(isPending) , m_isPending(isPending)
, m_isReply(isReply) , m_isReply(isReply)
{ {
intiializeEvent(event);
initializeModel(); initializeModel();
} }
@@ -62,8 +63,7 @@ void MessageContentModel::initializeModel()
Quotient::connectUntil(m_room.get(), &NeoChatRoom::extraEventLoaded, this, [this](const QString &eventId) { Quotient::connectUntil(m_room.get(), &NeoChatRoom::extraEventLoaded, this, [this](const QString &eventId) {
if (m_room != nullptr) { if (m_room != nullptr) {
if (eventId == m_eventId) { if (eventId == m_eventId) {
m_event = loadEvent<RoomEvent>(m_room->getEvent(eventId)->fullJson()); intiializeEvent(eventId);
Q_EMIT eventUpdated();
updateReplyModel(); updateReplyModel();
resetContent(); resetContent();
return true; return true;
@@ -81,8 +81,7 @@ void MessageContentModel::initializeModel()
if (m_eventId == serverEvent->id()) { if (m_eventId == serverEvent->id()) {
beginResetModel(); beginResetModel();
m_isPending = false; m_isPending = false;
m_event = loadEvent<RoomEvent>(serverEvent->fullJson()); intiializeEvent(serverEvent);
Q_EMIT eventUpdated();
endResetModel(); endResetModel();
} }
} }
@@ -91,8 +90,7 @@ void MessageContentModel::initializeModel()
if (m_room != nullptr && m_event != nullptr) { if (m_room != nullptr && m_event != nullptr) {
if (m_eventId == newEvent->id()) { if (m_eventId == newEvent->id()) {
beginResetModel(); beginResetModel();
m_event = loadEvent<RoomEvent>(newEvent->fullJson()); intiializeEvent(newEvent);
Q_EMIT eventUpdated();
endResetModel(); endResetModel();
} }
} }
@@ -154,6 +152,21 @@ void MessageContentModel::initializeModel()
resetModel(); resetModel();
} }
void MessageContentModel::intiializeEvent(const QString &eventId)
{
const auto newEvent = m_room->getEvent(eventId);
if (newEvent != nullptr) {
intiializeEvent(newEvent);
}
}
void MessageContentModel::intiializeEvent(const Quotient::RoomEvent *event)
{
m_event = loadEvent<RoomEvent>(event->fullJson());
m_eventSenderObject = std::unique_ptr<NeochatRoomMember>(new NeochatRoomMember(m_room, event->senderId()));
Q_EMIT eventUpdated();
}
bool MessageContentModel::showAuthor() const bool MessageContentModel::showAuthor() const
{ {
return m_showAuthor; return m_showAuthor;
@@ -239,7 +252,7 @@ QVariant MessageContentModel::data(const QModelIndex &index, int role) const
return eventHandler.getTimeString(false, QLocale::ShortFormat, m_isPending, lastUpdated); return eventHandler.getTimeString(false, QLocale::ShortFormat, m_isPending, lastUpdated);
} }
if (role == AuthorRole) { if (role == AuthorRole) {
return QVariant::fromValue(eventHandler.getAuthor(m_isPending)); return QVariant::fromValue<NeochatRoomMember *>(m_eventSenderObject.get());
} }
if (role == MediaInfoRole) { if (role == MediaInfoRole) {
return eventHandler.getMediaInfo(); return eventHandler.getMediaInfo();

View File

@@ -6,11 +6,13 @@
#include <QAbstractListModel> #include <QAbstractListModel>
#include <QQmlEngine> #include <QQmlEngine>
#include <Quotient/events/roomevent.h>
#include <Quotient/room.h> #include <Quotient/room.h>
#include "enums/messagecomponenttype.h" #include "enums/messagecomponenttype.h"
#include "eventhandler.h" #include "eventhandler.h"
#include "itinerarymodel.h" #include "itinerarymodel.h"
#include "neochatroommember.h"
struct MessageComponent { struct MessageComponent {
MessageComponentType::Type type = MessageComponentType::Other; MessageComponentType::Type type = MessageComponentType::Other;
@@ -115,6 +117,7 @@ private:
QPointer<NeoChatRoom> m_room; QPointer<NeoChatRoom> m_room;
QString m_eventId; QString m_eventId;
QString m_eventSenderId; QString m_eventSenderId;
std::unique_ptr<NeochatRoomMember> m_eventSenderObject;
Quotient::RoomEventPtr m_event; Quotient::RoomEventPtr m_event;
bool m_isPending; bool m_isPending;
@@ -122,6 +125,8 @@ private:
bool m_isReply; bool m_isReply;
void initializeModel(); void initializeModel();
void intiializeEvent(const QString &eventId);
void intiializeEvent(const Quotient::RoomEvent *event);
QList<MessageComponent> m_components; QList<MessageComponent> m_components;
void resetModel(); void resetModel();

View File

@@ -7,6 +7,7 @@
#include "eventhandler.h" #include "eventhandler.h"
#include "models/messagecontentmodel.h" #include "models/messagecontentmodel.h"
#include "neochatroom.h" #include "neochatroom.h"
#include "neochatroommember.h"
#include <QGuiApplication> #include <QGuiApplication>
@@ -66,7 +67,17 @@ void SearchModel::search()
m_job = job; m_job = job;
connect(job, &BaseJob::finished, this, [this, job] { connect(job, &BaseJob::finished, this, [this, job] {
beginResetModel(); beginResetModel();
m_memberObjects.clear();
m_result = job->searchCategories().roomEvents; m_result = job->searchCategories().roomEvents;
if (m_result.has_value()) {
for (const auto &result : m_result.value().results) {
if (!m_memberObjects.contains(result.result->senderId())) {
m_memberObjects[result.result->senderId()] = std::unique_ptr<NeochatRoomMember>(new NeochatRoomMember(m_room, result.result->senderId()));
}
}
}
endResetModel(); endResetModel();
setSearching(false); setSearching(false);
m_job = nullptr; m_job = nullptr;
@@ -83,7 +94,7 @@ QVariant SearchModel::data(const QModelIndex &index, int role) const
switch (role) { switch (role) {
case AuthorRole: case AuthorRole:
return QVariant::fromValue(eventHandler.getAuthor()); return QVariant::fromValue<NeochatRoomMember *>(m_memberObjects.at(event.senderId()).get());
case ShowSectionRole: case ShowSectionRole:
if (row == 0) { if (row == 0) {
return true; return true;

View File

@@ -9,6 +9,8 @@
#include <Quotient/csapi/search.h> #include <Quotient/csapi/search.h>
#include "neochatroommember.h"
namespace Quotient namespace Quotient
{ {
class Connection; class Connection;
@@ -123,4 +125,6 @@ private:
std::optional<Quotient::SearchJob::ResultRoomEvents> m_result = std::nullopt; std::optional<Quotient::SearchJob::ResultRoomEvents> m_result = std::nullopt;
Quotient::SearchJob *m_job = nullptr; Quotient::SearchJob *m_job = nullptr;
bool m_searching = false; bool m_searching = false;
std::map<QString, std::unique_ptr<NeochatRoomMember>> m_memberObjects;
}; };

View File

@@ -209,7 +209,7 @@ void RoomManager::viewEventMenu(const QString &eventId, NeoChatRoom *room, const
if (eventHandler.getMediaInfo().contains("mimeType"_ls)) { if (eventHandler.getMediaInfo().contains("mimeType"_ls)) {
Q_EMIT showFileMenu(eventId, Q_EMIT showFileMenu(eventId,
eventHandler.getAuthor(), room->member(event.senderId()),
eventHandler.messageComponentType(), eventHandler.messageComponentType(),
eventHandler.getPlainBody(), eventHandler.getPlainBody(),
eventHandler.getMediaInfo()["mimeType"_ls].toString(), eventHandler.getMediaInfo()["mimeType"_ls].toString(),
@@ -218,7 +218,7 @@ void RoomManager::viewEventMenu(const QString &eventId, NeoChatRoom *room, const
} }
Q_EMIT showMessageMenu(eventId, Q_EMIT showMessageMenu(eventId,
eventHandler.getAuthor(), room->member(event.senderId()),
eventHandler.messageComponentType(), eventHandler.messageComponentType(),
eventHandler.getPlainBody(), eventHandler.getPlainBody(),
eventHandler.getRichBody(), eventHandler.getRichBody(),