diff --git a/src/models/messagecontentmodel.cpp b/src/models/messagecontentmodel.cpp index c079f5e2d..068472d2d 100644 --- a/src/models/messagecontentmodel.cpp +++ b/src/models/messagecontentmodel.cpp @@ -144,6 +144,20 @@ void MessageContentModel::initializeModel() connect(NeoChatConfig::self(), &NeoChatConfig::ShowLinkPreviewChanged, this, [this]() { updateComponents(); }); + connect(m_room, &Room::memberNameUpdated, this, [this](RoomMember member) { + if (m_room != nullptr && m_event != nullptr) { + if (m_event->senderId() == member.id()) { + Q_EMIT dataChanged(index(0, 0), index(rowCount() - 1, 0), {AuthorRole}); + } + } + }); + connect(m_room, &Room::memberAvatarUpdated, this, [this](RoomMember member) { + if (m_room != nullptr && m_event != nullptr) { + if (m_event->senderId() == member.id()) { + Q_EMIT dataChanged(index(0, 0), index(rowCount() - 1, 0), {AuthorRole}); + } + } + }); if (m_event != nullptr) { updateReplyModel(); diff --git a/src/models/messageeventmodel.cpp b/src/models/messageeventmodel.cpp index 478bca2ca..ca23adb98 100644 --- a/src/models/messageeventmodel.cpp +++ b/src/models/messageeventmodel.cpp @@ -222,6 +222,23 @@ void MessageEventModel::setRoom(NeoChatRoom *room) beginResetModel(); endResetModel(); }); + connect(m_currentRoom, &Room::memberNameUpdated, this, [this](RoomMember member) { + for (auto it = m_currentRoom->messageEvents().rbegin(); it != m_currentRoom->messageEvents().rend(); ++it) { + auto event = it->event(); + if (event->senderId() == member.id()) { + refreshEventRoles(event->id(), {AuthorRole}); + } + } + }); + connect(m_currentRoom, &Room::memberAvatarUpdated, this, [this](RoomMember member) { + for (auto it = m_currentRoom->messageEvents().rbegin(); it != m_currentRoom->messageEvents().rend(); ++it) { + auto event = it->event(); + if (event->senderId() == member.id()) { + refreshEventRoles(event->id(), {AuthorRole}); + } + } + }); + qCDebug(MessageEvent) << "Connected to room" << room->id() << "as" << room->localMember().id(); } else { lastReadEventId.clear();