REmove getAuthor as no longer needed
This commit is contained in:
@@ -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());
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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(),
|
||||||
|
|||||||
Reference in New Issue
Block a user