summary refs log tree commit diff
path: root/src/timeline
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2022-07-19 18:57:08 +0200
committerNicolas Werner <nicolas.werner@hotmail.de>2022-07-19 18:57:22 +0200
commit07bb95fbcdbbb3da9bf1162792e16f8c4e928949 (patch)
tree53a73833b6c139279d657eac83d1a0188afa48fc /src/timeline
parentFix skipping over all events after a redaction (diff)
downloadnheko-07bb95fbcdbbb3da9bf1162792e16f8c4e928949.tar.xz
Fix crash when creating link to room preview
Diffstat (limited to 'src/timeline')
-rw-r--r--src/timeline/RoomlistModel.cpp11
-rw-r--r--src/timeline/TimelineModel.cpp10
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);