diff --git a/src/timeline/TimelineViewManager.cpp b/src/timeline/TimelineViewManager.cpp index 33af1825..648b499d 100644 --- a/src/timeline/TimelineViewManager.cpp +++ b/src/timeline/TimelineViewManager.cpp @@ -454,20 +454,18 @@ TimelineViewManager::openLink(QString link) const QUrl url(link); if (url.scheme() == "https" && url.host() == "matrix.to") { // handle matrix.to links internally - QString p = url.fragment(QUrl::FullyDecoded); + QString p = url.fragment(QUrl::FullyEncoded); if (p.startsWith("/")) p.remove(0, 1); auto temp = p.split("?"); QString query; if (temp.size() >= 2) - query = temp.takeAt(1); + query = QUrl::fromPercentEncoding(temp.takeAt(1).toUtf8()); temp = temp.first().split("/"); - auto identifier = temp.first(); - QString eventId; - if (temp.size() >= 2) - eventId = temp.takeAt(1); + auto identifier = QUrl::fromPercentEncoding(temp.takeFirst().toUtf8()); + QString eventId = QUrl::fromPercentEncoding(temp.join('/').toUtf8()); if (!identifier.isEmpty()) { if (identifier.startsWith("@")) { QByteArray uri =