From 50ac4b55b2baa5e57daebaaa745399ef319eb1aa Mon Sep 17 00:00:00 2001 From: Krille Date: Wed, 8 Jan 2025 15:03:35 +0100 Subject: [PATCH] fix: No roomId in BasicRoomEvent stores roomaccountdata silently wrong --- lib/src/client.dart | 4 ++-- lib/src/database/database_api.dart | 2 +- lib/src/database/hive_collections_database.dart | 4 ++-- lib/src/database/matrix_sdk_database.dart | 4 ++-- test/database_api_test.dart | 1 + 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/src/client.dart b/lib/src/client.dart index 27af631c..8164177f 100644 --- a/lib/src/client.dart +++ b/lib/src/client.dart @@ -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; } } diff --git a/lib/src/database/database_api.dart b/lib/src/database/database_api.dart index d47e61fd..39991243 100644 --- a/lib/src/database/database_api.dart +++ b/lib/src/database/database_api.dart @@ -134,7 +134,7 @@ abstract class DatabaseApi { Future storeAccountData(String type, Map content); - Future storeRoomAccountData(BasicRoomEvent event); + Future storeRoomAccountData(String roomId, BasicRoomEvent event); Future> getUserDeviceKeys(Client client); diff --git a/lib/src/database/hive_collections_database.dart b/lib/src/database/hive_collections_database.dart index 973ac330..8487f5c2 100644 --- a/lib/src/database/hive_collections_database.dart +++ b/lib/src/database/hive_collections_database.dart @@ -1096,9 +1096,9 @@ class HiveCollectionsDatabase extends DatabaseApi { } @override - Future storeRoomAccountData(BasicRoomEvent event) async { + Future storeRoomAccountData(String roomId, BasicRoomEvent event) async { await _roomAccountDataBox.put( - TupleKey(event.roomId ?? '', event.type).toString(), + TupleKey(roomId, event.type).toString(), copyMap(event.toJson()), ); return; diff --git a/lib/src/database/matrix_sdk_database.dart b/lib/src/database/matrix_sdk_database.dart index f4ded7e0..4b6ac47f 100644 --- a/lib/src/database/matrix_sdk_database.dart +++ b/lib/src/database/matrix_sdk_database.dart @@ -1084,9 +1084,9 @@ class MatrixSdkDatabase extends DatabaseApi with DatabaseFileStorage { } @override - Future storeRoomAccountData(BasicRoomEvent event) async { + Future storeRoomAccountData(String roomId, BasicRoomEvent event) async { await _roomAccountDataBox.put( - TupleKey(event.roomId ?? '', event.type).toString(), + TupleKey(roomId, event.type).toString(), event.toJson(), ); return; diff --git a/test/database_api_test.dart b/test/database_api_test.dart index 80c07f55..cee598bb 100644 --- a/test/database_api_test.dart +++ b/test/database_api_test.dart @@ -256,6 +256,7 @@ void main() { ); await database.storeRoomAccountData( + roomid, BasicRoomEvent( content: {'foo': 'bar'}, type: 'm.test',