fix resetting of message content components

and don't reset whole Moessage content when author changes
This commit is contained in:
Andreas Gattringer
2024-07-14 00:27:29 +02:00
parent 145bf0298b
commit 7848274ba1

View File

@@ -179,10 +179,20 @@ void MessageContentModel::setShowAuthor(bool showAuthor)
if (showAuthor == m_showAuthor) { if (showAuthor == m_showAuthor) {
return; return;
} }
m_showAuthor = showAuthor; m_showAuthor = showAuthor;
if (m_event != nullptr) {
if (showAuthor) {
beginInsertRows({}, 0, 0);
m_components.prepend(MessageComponent{MessageComponentType::Author, QString(), {}});
endInsertRows();
} else {
beginRemoveRows({}, 0, 0);
m_components.remove(0, 1);
endRemoveRows();
}
}
Q_EMIT showAuthorChanged(); Q_EMIT showAuthorChanged();
resetModel();
} }
static LinkPreviewer *emptyLinkPreview = new LinkPreviewer; static LinkPreviewer *emptyLinkPreview = new LinkPreviewer;
@@ -343,9 +353,11 @@ void MessageContentModel::resetModel()
void MessageContentModel::resetContent(bool isEditing) void MessageContentModel::resetContent(bool isEditing)
{ {
Q_ASSERT(m_event != nullptr);
const auto startRow = m_components[0].type == MessageComponentType::Author ? 1 : 0; const auto startRow = m_components[0].type == MessageComponentType::Author ? 1 : 0;
beginRemoveRows({}, startRow, rowCount() - 1 - startRow); beginRemoveRows({}, startRow, rowCount() - 1);
m_components.remove(startRow, rowCount() - 1 - startRow); m_components.remove(startRow, rowCount() - startRow);
endRemoveRows(); endRemoveRows();
const auto newComponents = messageContentComponents(isEditing); const auto newComponents = messageContentComponents(isEditing);
@@ -364,13 +376,11 @@ QList<MessageComponent> MessageContentModel::messageContentComponents(bool isEdi
if (eventCast<const Quotient::RoomMessageEvent>(m_event) if (eventCast<const Quotient::RoomMessageEvent>(m_event)
&& eventCast<const Quotient::RoomMessageEvent>(m_event)->rawMsgtype() == QStringLiteral("m.key.verification.request")) { && eventCast<const Quotient::RoomMessageEvent>(m_event)->rawMsgtype() == QStringLiteral("m.key.verification.request")) {
newComponents += MessageComponent{MessageComponentType::Verification, QString(), {}}; newComponents += MessageComponent{MessageComponentType::Verification, QString(), {}};
endResetModel();
return newComponents; return newComponents;
} }
if (m_event->isRedacted()) { if (m_event->isRedacted()) {
newComponents += MessageComponent{MessageComponentType::Text, QString(), {}}; newComponents += MessageComponent{MessageComponentType::Text, QString(), {}};
endResetModel();
return newComponents; return newComponents;
} }
@@ -528,7 +538,6 @@ void MessageContentModel::closeLinkPreview(int row)
m_components.remove(row); m_components.remove(row);
m_components.squeeze(); m_components.squeeze();
resetContent(); resetContent();
endResetModel();
} }
} }