From 846d5b0f46854270c1feb3757163087d8c0736f4 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Thu, 3 Feb 2022 13:52:07 +0100 Subject: [PATCH] fix: Add redaction events to timeline The redaction events should not be displayed in the GUI but it is the job of the app to hide them from the timeline while the SDK should offer an accurate list of ALL timeline events by default. --- lib/src/timeline.dart | 3 ++- test/timeline_test.dart | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/lib/src/timeline.dart b/lib/src/timeline.dart index 4fc20b6c..6b9a01f6 100644 --- a/lib/src/timeline.dart +++ b/lib/src/timeline.dart @@ -286,7 +286,8 @@ class Timeline { )); onChange?.call(index); } - } else if (status.isRemoved) { + } + if (status.isRemoved) { final i = _findEvent(event_id: eventUpdate.content['event_id']); if (i < events.length) { removeAggregatedEvent(events[i]); diff --git a/test/timeline_test.dart b/test/timeline_test.dart index d396de3b..0f4d2672 100644 --- a/test/timeline_test.dart +++ b/test/timeline_test.dart @@ -146,12 +146,12 @@ void main() { await Future.delayed(Duration(milliseconds: 50)); expect(updateCount, 3); - expect(insertList, [0, 0]); + expect(insertList, [0, 0, 0]); expect(insertList.length, timeline.events.length); expect(changeList, [1]); expect(removeList, []); - expect(timeline.events.length, 2); - expect(timeline.events[1].redacted, true); + expect(timeline.events.length, 3); + expect(timeline.events[2].redacted, true); }); test('Send message', () async { @@ -160,7 +160,7 @@ void main() { await Future.delayed(Duration(milliseconds: 50)); expect(updateCount, 5); - expect(insertList, [0, 0, 0]); + expect(insertList, [0, 0, 0, 0]); expect(insertList.length, timeline.events.length); final eventId = timeline.events[0].eventId; expect(eventId.startsWith('\$event'), true); @@ -183,7 +183,7 @@ void main() { await Future.delayed(Duration(milliseconds: 50)); expect(updateCount, 6); - expect(insertList, [0, 0, 0]); + expect(insertList, [0, 0, 0, 0]); expect(insertList.length, timeline.events.length); expect(timeline.events[0].eventId, eventId); expect(timeline.events[0].status, EventStatus.synced); @@ -215,7 +215,7 @@ void main() { await Future.delayed(Duration(milliseconds: 50)); expect(updateCount, 13); - expect(insertList, [0, 0, 0, 0, 0, 1, 2]); + expect(insertList, [0, 0, 0, 0, 0, 0, 1, 2]); expect(insertList.length, timeline.events.length); expect(changeList, [1, 0, 0, 0, 1, 2]); expect(removeList, []); @@ -231,10 +231,10 @@ void main() { expect(updateCount, 14); - expect(insertList, [0, 0, 0, 0, 0, 1, 2]); + expect(insertList, [0, 0, 0, 0, 0, 0, 1, 2]); expect(changeList, [1, 0, 0, 0, 1, 2]); expect(removeList, [0]); - expect(timeline.events.length, 6); + expect(timeline.events.length, 7); expect(timeline.events[0].status, EventStatus.error); }); @@ -278,7 +278,7 @@ void main() { expect(updateCount, 17); - expect(insertList, [0, 0, 0, 0, 0, 1, 2, 0]); + expect(insertList, [0, 0, 0, 0, 0, 0, 1, 2, 0]); expect(changeList, [1, 0, 0, 0, 1, 2, 0, 0]); expect(removeList, [0]); expect(timeline.events.length, 1); @@ -293,7 +293,7 @@ void main() { await Future.delayed(Duration(milliseconds: 50)); expect(updateCount, 20); - expect(insertList, [0, 0, 0, 0, 0, 1, 2, 0]); + expect(insertList, [0, 0, 0, 0, 0, 0, 1, 2, 0]); expect(historyRequestList, []); expect(timeline.events.length, 3); expect(timeline.events[0].eventId, '3143273582443PhrSn:example.org');