clean stuff up?
This commit is contained in:
parent
a4ac9eab66
commit
164a95ea29
|
|
@ -1536,9 +1536,12 @@ sort order of ${prevState.sortOrder}. This should never happen...''');
|
|||
),
|
||||
);
|
||||
} else {
|
||||
if (stateEvent.relationshipType != RelationshipTypes.edit
|
||||
|| {room.lastEvent.eventId,room.lastEvent.relationshipEventId}
|
||||
.contains(stateEvent.relationshipEventId)) {
|
||||
if (stateEvent.type != EventTypes.Message ||
|
||||
stateEvent.relationshipType != RelationshipTypes.edit ||
|
||||
stateEvent.relationshipEventId == room.lastEvent.eventId ||
|
||||
((room.lastEvent.relationshipType == RelationshipTypes.edit &&
|
||||
stateEvent.relationshipEventId ==
|
||||
room.lastEvent.relationshipEventId))) {
|
||||
room.setState(stateEvent);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -851,30 +851,25 @@ class FamedlySdkHiveDatabase extends DatabaseApi {
|
|||
eventUpdate.content['type'],
|
||||
).toString();
|
||||
final Map stateMap = await _roomStateBox.get(key) ?? {};
|
||||
// store state events and new messages, that either are not an edit or an edit of the lastest message
|
||||
// An edit is an event, that has an edit relation to the latest event. In some cases for the second edit, we need to compare if both have an edit relation to the same event instead.
|
||||
if (!eventUpdate.content['content'].containsKey('m.relates_to')) {
|
||||
stateMap[eventUpdate.content['state_key']] = eventUpdate.content;
|
||||
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();
|
||||
if (eventsInRoomStateBox != null) {
|
||||
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;
|
||||
await _roomStateBox.put(key, stateMap);
|
||||
} else {
|
||||
final String editedEventRelationshipEventId =
|
||||
eventUpdate.content['content']['m.relates_to']['event_id'];
|
||||
if (eventUpdate.content['type'] != EventTypes.Message ||
|
||||
eventUpdate.content['content']['m.relates_to']['rel_type'] !=
|
||||
RelationshipTypes.edit ||
|
||||
editedEventRelationshipEventId == stateMap['']?.eventId ||
|
||||
((stateMap['']?.relationshipType == RelationshipTypes.edit &&
|
||||
editedEventRelationshipEventId ==
|
||||
stateMap['']?.relationshipEventId))) {
|
||||
stateMap[eventUpdate.content['state_key']] = eventUpdate.content;
|
||||
await _roomStateBox.put(key, stateMap);
|
||||
}
|
||||
}
|
||||
await _roomStateBox.put(key, stateMap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue