Compare commits

...

1 Commits

Author SHA1 Message Date
Joshua Goins
fb63ac5642 Fix a crash when sitting around with no room open
This doesn't check if m_room is null before accessing it's connection.
You can easily reproduce this by sitting around leaving NeoChat open
without entering a room.
2024-09-06 04:55:12 -04:00
2 changed files with 25 additions and 28 deletions

View File

@@ -578,8 +578,8 @@ MessageComponent MessageContentModel::linkPreviewComponent(const QUrl &link)
}
if (linkPreviewer->loaded()) {
return MessageComponent{MessageComponentType::LinkPreview, QString(), {{"link"_ls, link}}};
} else {
connect(linkPreviewer, &LinkPreviewer::loadedChanged, [this, link]() {
}
connect(linkPreviewer, &LinkPreviewer::loadedChanged, this, [this, link]() {
const auto linkPreviewer = dynamic_cast<NeoChatConnection *>(m_room->connection())->previewerForLink(link);
if (linkPreviewer != nullptr && linkPreviewer->loaded()) {
for (auto &component : m_components) {
@@ -593,7 +593,6 @@ MessageComponent MessageContentModel::linkPreviewComponent(const QUrl &link)
}
});
return MessageComponent{MessageComponentType::LinkPreviewLoad, QString(), {{"link"_ls, link}}};
}
}
QList<MessageComponent> MessageContentModel::addLinkPreviews(QList<MessageComponent> inputComponents)

View File

@@ -84,7 +84,6 @@ void MessageEventModel::setRoom(NeoChatRoom *room)
return;
}
if (m_currentRoom) {
// HACK: Reset the model to a null room first to make sure QML dismantles
// last room's objects before the room is actually changed
beginResetModel();
@@ -98,7 +97,6 @@ void MessageEventModel::setRoom(NeoChatRoom *room)
m_contentModels.clear();
m_reactionModels.clear();
m_readMarkerModels.clear();
}
beginResetModel();
m_currentRoom = room;