Merge pull request #1997 from famedly/krille/room-id-null-in-basic-room-event

fix: No roomId in BasicRoomEvent stores roomaccountdata silently wrong
This commit is contained in:
Krille-chan 2025-01-08 15:50:32 +01:00 committed by GitHub
commit a6ee302d64
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 8 additions and 7 deletions

View File

@ -2670,7 +2670,7 @@ class Client extends MatrixApi {
final accountData = syncRoomUpdate.accountData;
if (accountData != null && accountData.isNotEmpty) {
for (final event in accountData) {
await database?.storeRoomAccountData(event);
await database?.storeRoomAccountData(room.id, event);
room.roomAccountData[event.type] = event;
}
}
@ -2739,7 +2739,7 @@ class Client extends MatrixApi {
roomId: room.id,
content: receiptStateContent.toJson(),
);
await database?.storeRoomAccountData(event);
await database?.storeRoomAccountData(room.id, event);
room.roomAccountData[event.type] = event;
}
}

View File

@ -134,7 +134,7 @@ abstract class DatabaseApi {
Future storeAccountData(String type, Map<String, Object?> content);
Future storeRoomAccountData(BasicRoomEvent event);
Future storeRoomAccountData(String roomId, BasicRoomEvent event);
Future<Map<String, DeviceKeysList>> getUserDeviceKeys(Client client);

View File

@ -1096,9 +1096,9 @@ class HiveCollectionsDatabase extends DatabaseApi {
}
@override
Future<void> storeRoomAccountData(BasicRoomEvent event) async {
Future<void> storeRoomAccountData(String roomId, BasicRoomEvent event) async {
await _roomAccountDataBox.put(
TupleKey(event.roomId ?? '', event.type).toString(),
TupleKey(roomId, event.type).toString(),
copyMap(event.toJson()),
);
return;

View File

@ -1084,9 +1084,9 @@ class MatrixSdkDatabase extends DatabaseApi with DatabaseFileStorage {
}
@override
Future<void> storeRoomAccountData(BasicRoomEvent event) async {
Future<void> storeRoomAccountData(String roomId, BasicRoomEvent event) async {
await _roomAccountDataBox.put(
TupleKey(event.roomId ?? '', event.type).toString(),
TupleKey(roomId, event.type).toString(),
event.toJson(),
);
return;

View File

@ -256,6 +256,7 @@ void main() {
);
await database.storeRoomAccountData(
roomid,
BasicRoomEvent(
content: {'foo': 'bar'},
type: 'm.test',