summary refs log tree commit diff
path: root/src/TimelineView.cc
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2017-09-02 16:47:59 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2017-09-02 16:47:59 +0300
commita44a4f36af67c016e207b1cbd63817c6751ed89d (patch)
tree13a8cbee8ae04b081fcbc4999a4e9efe8d9a0ffe /src/TimelineView.cc
parentLinkify URLs in room topics (diff)
downloadnheko-a44a4f36af67c016e207b1cbd63817c6751ed89d.tar.xz
Add read support for m.emote events (#41)
Diffstat (limited to 'src/TimelineView.cc')
-rw-r--r--src/TimelineView.cc29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/TimelineView.cc b/src/TimelineView.cc

index 114e5fda..4dd63604 100644 --- a/src/TimelineView.cc +++ b/src/TimelineView.cc
@@ -274,6 +274,28 @@ TimelineView::parseMessageEvent(const QJsonObject &event, TimelineDirection dire updateLastSender(img.sender(), direction); return createTimelineItem(img, with_sender); + } else if (msg_type == events::MessageEventType::Emote) { + events::MessageEvent<msgs::Emote> emote; + + try { + emote.deserialize(event); + } catch (const DeserializationException &e) { + qWarning() << e.what() << event; + return nullptr; + } + + if (isDuplicate(emote.eventId())) + return nullptr; + + eventIds_[emote.eventId()] = true; + + // TODO Check if it's a message waiting for validation + + auto with_sender = isSenderRendered(emote.sender(), direction); + + updateLastSender(emote.sender(), direction); + + return createTimelineItem(emote, with_sender); } else if (msg_type == events::MessageEventType::Unknown) { qWarning() << "Unknown message type" << event; return nullptr; @@ -403,6 +425,13 @@ TimelineView::createTimelineItem(const events::MessageEvent<msgs::Text> &event, return item; } +TimelineItem * +TimelineView::createTimelineItem(const events::MessageEvent<msgs::Emote> &event, bool with_sender) +{ + TimelineItem *item = new TimelineItem(event, with_sender, scroll_widget_); + return item; +} + void TimelineView::addTimelineItem(TimelineItem *item, TimelineDirection direction) {