Fix crash when creating link to room preview
2 files changed, 5 insertions, 16 deletions
diff --git a/src/timeline/RoomlistModel.cpp b/src/timeline/RoomlistModel.cpp
index 1869d2e0..fe4e7850 100644
--- a/src/timeline/RoomlistModel.cpp
+++ b/src/timeline/RoomlistModel.cpp
@@ -645,15 +645,8 @@ void
RoomlistModel::joinPreview(QString roomid)
{
if (previewedRooms.contains(roomid)) {
- std::vector<std::string> vias;
- auto parents = cache::client()->getParentRoomIds(roomid.toStdString());
- for (const auto &p : parents) {
- auto child = cache::client()->getStateEvent<mtx::events::state::space::Child>(
- p, roomid.toStdString());
- if (child && child->content.via)
- vias.insert(vias.end(), child->content.via->begin(), child->content.via->end());
- }
- ChatPage::instance()->joinRoomVia(roomid.toStdString(), vias, false);
+ ChatPage::instance()->joinRoomVia(
+ roomid.toStdString(), utils::roomVias(roomid.toStdString()), false);
}
}
void
diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp
index 5818d9d8..c60940a7 100644
--- a/src/timeline/TimelineModel.cpp
+++ b/src/timeline/TimelineModel.cpp
@@ -1813,16 +1813,12 @@ TimelineModel::getRoomVias(const QString &roomId)
{
QStringList vias;
- vias.push_back(QStringLiteral("via=%1").arg(QString(
- QUrl::toPercentEncoding(QString::fromStdString(http::client()->user_id().hostname())))));
- auto members = cache::getMembers(roomId.toStdString(), 0, 100);
- for (const auto &m : members) {
+ for (const auto &m : utils::roomVias(roomId.toStdString())) {
if (vias.size() >= 4)
break;
- auto user_id = mtx::identifiers::parse<mtx::identifiers::User>(m.user_id.toStdString());
- QString server = QStringLiteral("via=%1").arg(
- QString(QUrl::toPercentEncoding(QString::fromStdString(user_id.hostname()))));
+ QString server =
+ QStringLiteral("via=%1").arg(QString(QUrl::toPercentEncoding(QString::fromStdString(m))));
if (!vias.contains(server))
vias.push_back(server);
|