Merge branch 'krille/fix-update-on-remove-aggregation' into 'main'
Krille/fix update on remove aggregation See merge request famedly/company/frontend/famedlysdk!954
This commit is contained in:
commit
c64e6b9c11
|
|
@ -1,3 +1,6 @@
|
||||||
|
## [0.8.4] - 08nd Feb 2022
|
||||||
|
- fix: Call onChange correctly on redacted aggregation events
|
||||||
|
|
||||||
## [0.8.3] - 07nd Feb 2022
|
## [0.8.3] - 07nd Feb 2022
|
||||||
- fix: Remove onHistoryReceived which was broken anyway
|
- fix: Remove onHistoryReceived which was broken anyway
|
||||||
- fix: Remove aggregation event doesnt trigger onChange
|
- fix: Remove aggregation event doesnt trigger onChange
|
||||||
|
|
|
||||||
|
|
@ -261,13 +261,6 @@ class Timeline {
|
||||||
_removeEventFromSet(events, event);
|
_removeEventFromSet(events, event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (onChange != null) {
|
|
||||||
final relationshipEventId = event.relationshipEventId;
|
|
||||||
if (relationshipEventId != null) {
|
|
||||||
final index = _findEvent(event_id: relationshipEventId);
|
|
||||||
onChange?.call(index);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void _handleEventUpdate(EventUpdate eventUpdate, {bool update = true}) {
|
void _handleEventUpdate(EventUpdate eventUpdate, {bool update = true}) {
|
||||||
|
|
@ -283,18 +276,7 @@ class Timeline {
|
||||||
? eventUpdate.content['unsigned'][messageSendingStatusKey]
|
? eventUpdate.content['unsigned'][messageSendingStatusKey]
|
||||||
: null) ??
|
: null) ??
|
||||||
EventStatus.synced.intValue);
|
EventStatus.synced.intValue);
|
||||||
// Redaction events are handled as modification for existing events.
|
|
||||||
if (eventUpdate.content['type'] == EventTypes.Redaction) {
|
|
||||||
final index = _findEvent(event_id: eventUpdate.content['redacts']);
|
|
||||||
if (index < events.length) {
|
|
||||||
removeAggregatedEvent(events[index]);
|
|
||||||
events[index].setRedactionEvent(Event.fromJson(
|
|
||||||
eventUpdate.content,
|
|
||||||
room,
|
|
||||||
));
|
|
||||||
onChange?.call(index);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (status.isRemoved) {
|
if (status.isRemoved) {
|
||||||
final i = _findEvent(event_id: eventUpdate.content['event_id']);
|
final i = _findEvent(event_id: eventUpdate.content['event_id']);
|
||||||
if (i < events.length) {
|
if (i < events.length) {
|
||||||
|
|
@ -345,6 +327,30 @@ class Timeline {
|
||||||
addAggregatedEvent(newEvent);
|
addAggregatedEvent(newEvent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Handle redaction events
|
||||||
|
if (eventUpdate.content['type'] == EventTypes.Redaction) {
|
||||||
|
final index = _findEvent(event_id: eventUpdate.content['redacts']);
|
||||||
|
if (index < events.length) {
|
||||||
|
removeAggregatedEvent(events[index]);
|
||||||
|
|
||||||
|
// Is the redacted event a reaction? Then update the event this
|
||||||
|
// belongs to:
|
||||||
|
if (onChange != null) {
|
||||||
|
final relationshipEventId = events[index].relationshipEventId;
|
||||||
|
if (relationshipEventId != null) {
|
||||||
|
onChange?.call(_findEvent(event_id: relationshipEventId));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
events[index].setRedactionEvent(Event.fromJson(
|
||||||
|
eventUpdate.content,
|
||||||
|
room,
|
||||||
|
));
|
||||||
|
onChange?.call(index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (update && !_collectHistoryUpdates) {
|
if (update && !_collectHistoryUpdates) {
|
||||||
onUpdate?.call();
|
onUpdate?.call();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
name: matrix
|
name: matrix
|
||||||
description: Matrix Dart SDK
|
description: Matrix Dart SDK
|
||||||
version: 0.8.3
|
version: 0.8.4
|
||||||
homepage: https://famedly.com
|
homepage: https://famedly.com
|
||||||
repository: https://gitlab.com/famedly/company/frontend/famedlysdk.git
|
repository: https://gitlab.com/famedly/company/frontend/famedlysdk.git
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -146,7 +146,7 @@ void main() {
|
||||||
expect(updateCount, 3);
|
expect(updateCount, 3);
|
||||||
expect(insertList, [0, 0, 0]);
|
expect(insertList, [0, 0, 0]);
|
||||||
expect(insertList.length, timeline.events.length);
|
expect(insertList.length, timeline.events.length);
|
||||||
expect(changeList, [1]);
|
expect(changeList, [2]);
|
||||||
expect(removeList, []);
|
expect(removeList, []);
|
||||||
expect(timeline.events.length, 3);
|
expect(timeline.events.length, 3);
|
||||||
expect(timeline.events[2].redacted, true);
|
expect(timeline.events[2].redacted, true);
|
||||||
|
|
@ -215,7 +215,7 @@ void main() {
|
||||||
expect(updateCount, 13);
|
expect(updateCount, 13);
|
||||||
expect(insertList, [0, 0, 0, 0, 0, 0, 1, 2]);
|
expect(insertList, [0, 0, 0, 0, 0, 0, 1, 2]);
|
||||||
expect(insertList.length, timeline.events.length);
|
expect(insertList.length, timeline.events.length);
|
||||||
expect(changeList, [1, 0, 0, 0, 1, 2]);
|
expect(changeList, [2, 0, 0, 0, 1, 2]);
|
||||||
expect(removeList, []);
|
expect(removeList, []);
|
||||||
expect(timeline.events[0].status, EventStatus.error);
|
expect(timeline.events[0].status, EventStatus.error);
|
||||||
expect(timeline.events[1].status, EventStatus.error);
|
expect(timeline.events[1].status, EventStatus.error);
|
||||||
|
|
@ -230,7 +230,7 @@ void main() {
|
||||||
expect(updateCount, 14);
|
expect(updateCount, 14);
|
||||||
|
|
||||||
expect(insertList, [0, 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(changeList, [2, 0, 0, 0, 1, 2]);
|
||||||
expect(removeList, [0]);
|
expect(removeList, [0]);
|
||||||
expect(timeline.events.length, 7);
|
expect(timeline.events.length, 7);
|
||||||
expect(timeline.events[0].status, EventStatus.error);
|
expect(timeline.events[0].status, EventStatus.error);
|
||||||
|
|
@ -277,7 +277,7 @@ void main() {
|
||||||
expect(updateCount, 17);
|
expect(updateCount, 17);
|
||||||
|
|
||||||
expect(insertList, [0, 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(changeList, [2, 0, 0, 0, 1, 2, 0, 0]);
|
||||||
expect(removeList, [0]);
|
expect(removeList, [0]);
|
||||||
expect(timeline.events.length, 1);
|
expect(timeline.events.length, 1);
|
||||||
expect(timeline.events[0].status, EventStatus.sent);
|
expect(timeline.events[0].status, EventStatus.sent);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue