fix: Also update last event on redaction in store

This commit is contained in:
Krille 2023-05-16 13:08:59 +02:00
parent ac0fdc1deb
commit 8f38006c18
No known key found for this signature in database
2 changed files with 18 additions and 2 deletions

View File

@ -990,7 +990,8 @@ class HiveCollectionsDatabase extends DatabaseApi {
Future<void> storeEventUpdate(EventUpdate eventUpdate, Client client) async { Future<void> storeEventUpdate(EventUpdate eventUpdate, Client client) async {
// Ephemerals should not be stored // Ephemerals should not be stored
if (eventUpdate.type == EventUpdateType.ephemeral) return; if (eventUpdate.type == EventUpdateType.ephemeral) return;
final tmpRoom = Room(id: eventUpdate.roomID, client: client); final tmpRoom = client.getRoomById(eventUpdate.roomID) ??
Room(id: eventUpdate.roomID, client: client);
// In case of this is a redaction event // In case of this is a redaction event
if (eventUpdate.content['type'] == EventTypes.Redaction) { if (eventUpdate.content['type'] == EventTypes.Redaction) {
@ -1002,6 +1003,13 @@ class HiveCollectionsDatabase extends DatabaseApi {
await _eventsBox.put( await _eventsBox.put(
TupleKey(eventUpdate.roomID, event.eventId).toString(), TupleKey(eventUpdate.roomID, event.eventId).toString(),
event.toJson()); event.toJson());
if (tmpRoom.lastEvent?.eventId == event.eventId) {
await _roomStateBox.put(
TupleKey(eventUpdate.roomID, event.type).toString(),
{'': event.toJson()},
);
}
} }
} }

View File

@ -935,7 +935,8 @@ class FamedlySdkHiveDatabase extends DatabaseApi {
// In case of this is a redaction event // In case of this is a redaction event
if (eventUpdate.content['type'] == EventTypes.Redaction) { if (eventUpdate.content['type'] == EventTypes.Redaction) {
final tmpRoom = Room(id: eventUpdate.roomID, client: client); final tmpRoom = client.getRoomById(eventUpdate.roomID) ??
Room(id: eventUpdate.roomID, client: client);
final eventId = eventUpdate.content.tryGet<String>('redacts'); final eventId = eventUpdate.content.tryGet<String>('redacts');
final event = final event =
eventId != null ? await getEventById(eventId, tmpRoom) : null; eventId != null ? await getEventById(eventId, tmpRoom) : null;
@ -944,6 +945,13 @@ class FamedlySdkHiveDatabase extends DatabaseApi {
await _eventsBox.put( await _eventsBox.put(
MultiKey(eventUpdate.roomID, event.eventId).toString(), MultiKey(eventUpdate.roomID, event.eventId).toString(),
event.toJson()); event.toJson());
if (tmpRoom.lastEvent?.eventId == event.eventId) {
await _roomStateBox.put(
MultiKey(eventUpdate.roomID, event.type).toString(),
{'': event.toJson()},
);
}
} }
} }