diff --git a/imports/NeoChat/Component/Timeline/EventDelegate.qml b/imports/NeoChat/Component/Timeline/EventDelegate.qml index 49542d8b4..f8ef4f372 100644 --- a/imports/NeoChat/Component/Timeline/EventDelegate.qml +++ b/imports/NeoChat/Component/Timeline/EventDelegate.qml @@ -42,9 +42,7 @@ DelegateChooser { DelegateChoice { roleValue: "sticker" - delegate: ImageDelegate { - cardBackground: false - } + delegate: ImageDelegate {} } DelegateChoice { diff --git a/src/messageeventmodel.cpp b/src/messageeventmodel.cpp index 808562649..4d8fb1ab3 100644 --- a/src/messageeventmodel.cpp +++ b/src/messageeventmodel.cpp @@ -542,12 +542,17 @@ QVariant MessageEventModel::data(const QModelIndex &idx, int role) const } if (role == MimeTypeRole) { - auto e = eventCast(&evt); - if (!e || !e->hasFileContent()) { - return QVariant(); + if (auto e = eventCast(&evt)) { + if (!e || !e->hasFileContent()) { + return QVariant(); + } + + return e->content()->fileInfo()->mimeType.name(); } - return e->content()->fileInfo()->mimeType.name(); + if (auto e = eventCast(&evt)) { + return e->image().mimeType.name(); + } } if (role == SpecialMarksRole) { @@ -788,7 +793,22 @@ QVariant MessageEventModel::data(const QModelIndex &idx, int role) const return m_currentRoom->makeMediaUrl(e->id(), e->content()->originalJson["url"].toString()); } } + + // Requires https://github.com/quotient-im/libQuotient/pull/570 + // if (auto e = eventCast(&evt)) { + // return m_currentRoom->makeMediaUrl(e->id(), e->url()); + // } #endif + + // Construct link in the same form as urlToDownload as that function doesn't work for stickers + if (auto e = eventCast(&evt)) { + auto url = QUrl(m_currentRoom->connection()->homeserver().toString() + "/_matrix/media/r0/download/" + e->url().toString().remove("mxc://")); + QUrlQuery q(url.query()); + q.addQueryItem("allow_remote", "true"); + url.setQuery(q); + return url; + } + return m_currentRoom->urlToDownload(evt.id()); }