fix: lastEvent in room preview now crespects edits order

This commit is contained in:
Jayesh Nirve 2021-08-17 04:39:55 +05:30 committed by td
parent 93c689fd4d
commit 38235415eb
2 changed files with 27 additions and 2 deletions

View File

@ -1536,7 +1536,12 @@ sort order of ${prevState.sortOrder}. This should never happen...''');
),
);
} else {
room.setState(stateEvent);
stateEvent.relationshipType != RelationshipTypes.edit
? room.setState(stateEvent)
: {room.lastEvent.eventId, room.lastEvent.relationshipEventId}
.contains(stateEvent.relationshipEventId)
? room.setState(stateEvent)
: null;
}
break;
case EventUpdateType.accountData:

View File

@ -852,7 +852,27 @@ class FamedlySdkHiveDatabase extends DatabaseApi {
).toString();
final Map stateMap = await _roomStateBox.get(key) ?? {};
stateMap[eventUpdate.content['state_key']] = eventUpdate.content;
await _roomStateBox.put(key, stateMap);
final room = Room(
id: eventUpdate.roomID,
);
final Map states = await _roomStateBox
.get(MultiKey(eventUpdate.roomID, EventTypes.Message).toString());
final eventsInRoomStateBox = states.values
.map((raw) => Event.fromJson(convertToJson(raw), room))
.toList();
for (final event in eventsInRoomStateBox) {
if (event.type == 'm.room.message') {
stateMap.values.first['content']['m.relates_to'] == null
? await _roomStateBox.put(key, stateMap)
: {event.eventId, event.relationshipEventId}.contains(stateMap
.values.first['content']['m.relates_to']['event_id'])
? await _roomStateBox.put(key, stateMap)
: null;
} else {
await _roomStateBox.put(key, stateMap);
}
}
}
}