diff options
author | Nicolas Werner <nicolas.werner@hotmail.de> | 2020-01-11 14:07:51 +0100 |
---|---|---|
committer | Nicolas Werner <nicolas.werner@hotmail.de> | 2020-01-11 14:07:51 +0100 |
commit | 2b3dc3d8b9d1108c3f6ad226ad65060bd3999033 (patch) | |
tree | 42419bdee5b28c98eaafb44724c64f351a275199 /src | |
parent | try to make appveyor happy (diff) | |
download | nheko-2b3dc3d8b9d1108c3f6ad226ad65060bd3999033.tar.xz |
Implement fancy reply rendering
This currently assumes the event, that is replied to, is already fetched. If it isn't, it will render an empty reply. In the future we should fetch replies before rendering them.
Diffstat (limited to 'src')
-rw-r--r-- | src/timeline/TimelineModel.cpp | 16 | ||||
-rw-r--r-- | src/timeline/TimelineModel.h | 1 |
2 files changed, 14 insertions, 3 deletions
diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp index 0e7f5259..41d864bd 100644 --- a/src/timeline/TimelineModel.cpp +++ b/src/timeline/TimelineModel.cpp @@ -212,6 +212,14 @@ TimelineModel::rowCount(const QModelIndex &parent) const return (int)this->eventOrder.size(); } +QVariantMap +TimelineModel::getDump(QString eventId) const +{ + if (events.contains(eventId)) + return data(index(idToIndex(eventId), 0), Dump).toMap(); + return {}; +} + QVariant TimelineModel::data(const QModelIndex &index, int role) const { @@ -263,11 +271,13 @@ TimelineModel::data(const QModelIndex &index, int role) const return QVariant(toRoomEventType(event)); case Body: return QVariant(utils::replaceEmoji(QString::fromStdString(body(event)))); - case FormattedBody: + case FormattedBody: { + const static QRegularExpression replyFallback( + "<mx-reply>.*</mx-reply>", QRegularExpression::DotMatchesEverythingOption); return QVariant( utils::replaceEmoji(utils::linkifyMessage(formattedBodyWithFallback(event))) - .remove("<mx-reply>") - .remove("</mx-reply>")); + .remove(replyFallback)); + } case Url: return QVariant(QString::fromStdString(url(event))); case ThumbnailUrl: diff --git a/src/timeline/TimelineModel.h b/src/timeline/TimelineModel.h index 0f18f7ef..61dd6b69 100644 --- a/src/timeline/TimelineModel.h +++ b/src/timeline/TimelineModel.h @@ -181,6 +181,7 @@ public slots: void setCurrentIndex(int index); int currentIndex() const { return idToIndex(currentId); } void markEventsAsRead(const std::vector<QString> &event_ids); + QVariantMap getDump(QString eventId) const; private slots: // Add old events at the top of the timeline. |