summaryrefslogtreecommitdiffstats
path: root/src/timeline/TimelineView.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/timeline/TimelineView.cc')
-rw-r--r--src/timeline/TimelineView.cc61
1 files changed, 16 insertions, 45 deletions
diff --git a/src/timeline/TimelineView.cc b/src/timeline/TimelineView.cc
index ded5ad2c..2fef0952 100644
--- a/src/timeline/TimelineView.cc
+++ b/src/timeline/TimelineView.cc
@@ -163,10 +163,8 @@ TimelineView::addBackwardsEvents(const QString &room_id, const mtx::responses::M
isTimelineFinished = false;
// Queue incoming messages to be rendered later.
- for (auto const &e : msgs.chunk) {
- if (isViewable(e))
- topMessages_.emplace_back(e);
- }
+ for (auto const &e : msgs.chunk)
+ topMessages_.emplace_back(e);
// The RoomList message preview will be updated only if this
// is the first batch of messages received through /messages
@@ -202,7 +200,18 @@ TimelineView::parseMessageEvent(const mtx::events::collections::TimelineEvents &
using TextEvent = mtx::events::RoomEvent<msg::Text>;
using VideoEvent = mtx::events::RoomEvent<msg::Video>;
- if (mpark::holds_alternative<mtx::events::RoomEvent<msg::Audio>>(event)) {
+ if (mpark::holds_alternative<mtx::events::RedactionEvent<msg::Redaction>>(event)) {
+ auto redaction_event =
+ mpark::get<mtx::events::RedactionEvent<msg::Redaction>>(event);
+ const auto event_id = QString::fromStdString(redaction_event.redacts);
+
+ QTimer::singleShot(0, this, [event_id, this]() {
+ if (eventIds_.contains(event_id))
+ removeEvent(event_id);
+ });
+
+ return nullptr;
+ } else if (mpark::holds_alternative<mtx::events::RoomEvent<msg::Audio>>(event)) {
auto audio = mpark::get<mtx::events::RoomEvent<msg::Audio>>(event);
return processMessageEvent<AudioEvent, AudioItem>(audio, direction);
} else if (mpark::holds_alternative<mtx::events::RoomEvent<msg::Emote>>(event)) {
@@ -300,15 +309,8 @@ TimelineView::addEvents(const mtx::responses::Timeline &timeline)
isInitialSync = false;
}
- for (const auto &e : timeline.events) {
- // Save the message if it can be rendered.
- if (isViewable(e))
- bottomMessages_.push_back(e);
-
- // Calculate notifications.
- /* if (isNotifiable(e)) */
- /* sendNotification() */
- }
+ for (const auto &e : timeline.events)
+ bottomMessages_.push_back(e);
if (!bottomMessages_.empty())
notifyForLastEvent(bottomMessages_[bottomMessages_.size() - 1]);
@@ -326,37 +328,6 @@ TimelineView::addEvents(const mtx::responses::Timeline &timeline)
}
}
-inline bool
-TimelineView::isViewable(const TimelineEvent &event) const
-{
- namespace msg = mtx::events::msg;
-
- return mpark::holds_alternative<mtx::events::RoomEvent<msg::Audio>>(event) ||
- mpark::holds_alternative<mtx::events::RoomEvent<msg::Emote>>(event) ||
- mpark::holds_alternative<mtx::events::RoomEvent<msg::File>>(event) ||
- mpark::holds_alternative<mtx::events::RoomEvent<msg::Image>>(event) ||
- mpark::holds_alternative<mtx::events::RoomEvent<msg::Notice>>(event) ||
- mpark::holds_alternative<mtx::events::RoomEvent<msg::Text>>(event) ||
- mpark::holds_alternative<mtx::events::RoomEvent<msg::Video>>(event);
-}
-
-inline bool
-TimelineView::isNotifiable(const TimelineEvent &event) const
-{
- namespace msg = mtx::events::msg;
-
- if (local_user_ == getEventSender(event))
- return false;
-
- return mpark::holds_alternative<mtx::events::RoomEvent<msg::Audio>>(event) ||
- mpark::holds_alternative<mtx::events::RoomEvent<msg::Emote>>(event) ||
- mpark::holds_alternative<mtx::events::RoomEvent<msg::File>>(event) ||
- mpark::holds_alternative<mtx::events::RoomEvent<msg::Image>>(event) ||
- mpark::holds_alternative<mtx::events::RoomEvent<msg::Notice>>(event) ||
- mpark::holds_alternative<mtx::events::RoomEvent<msg::Text>>(event) ||
- mpark::holds_alternative<mtx::events::RoomEvent<msg::Video>>(event);
-}
-
void
TimelineView::init()
{