fix: No roomId in BasicRoomEvent stores roomaccountdata silently wrong

This commit is contained in:
Krille 2025-01-08 15:03:35 +01:00
parent 32e051c439
commit 50ac4b55b2
No known key found for this signature in database
GPG Key ID: E067ECD60F1A0652
5 changed files with 8 additions and 7 deletions

View File

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

View File

@ -134,7 +134,7 @@ abstract class DatabaseApi {
Future storeAccountData(String type, Map<String, Object?> content); 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); Future<Map<String, DeviceKeysList>> getUserDeviceKeys(Client client);

View File

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

View File

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

View File

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