diff --git a/lib/src/client.dart b/lib/src/client.dart index 54cd1f05..227edaae 100644 --- a/lib/src/client.dart +++ b/lib/src/client.dart @@ -2474,10 +2474,10 @@ class Client extends MatrixApi { onPresenceChanged.add(cachedPresence); await database?.storePresence(newPresence.senderId, cachedPresence); } - for (final newAccountData in sync.accountData ?? []) { + for (final newAccountData in sync.accountData ?? []) { await database?.storeAccountData( newAccountData.type, - jsonEncode(newAccountData.content), + newAccountData.content, ); accountData[newAccountData.type] = newAccountData; // ignore: deprecated_member_use_from_same_package diff --git a/lib/src/database/database_api.dart b/lib/src/database/database_api.dart index 3b80888c..dc37a437 100644 --- a/lib/src/database/database_api.dart +++ b/lib/src/database/database_api.dart @@ -127,7 +127,7 @@ abstract class DatabaseApi { String syncFilterId, ); - Future storeAccountData(String type, String content); + Future storeAccountData(String type, Map content); Future> getUserDeviceKeys(Client client); diff --git a/lib/src/database/hive_collections_database.dart b/lib/src/database/hive_collections_database.dart index e30138bc..8d0a6d1b 100644 --- a/lib/src/database/hive_collections_database.dart +++ b/lib/src/database/hive_collections_database.dart @@ -1073,8 +1073,11 @@ class HiveCollectionsDatabase extends DatabaseApi { } @override - Future storeAccountData(String type, String content) async { - await _accountDataBox.put(type, copyMap(jsonDecode(content))); + Future storeAccountData( + String type, + Map content, + ) async { + await _accountDataBox.put(type, copyMap(content)); return; } diff --git a/lib/src/database/hive_database.dart b/lib/src/database/hive_database.dart index e5495a1b..78f46d9c 100644 --- a/lib/src/database/hive_database.dart +++ b/lib/src/database/hive_database.dart @@ -1032,10 +1032,13 @@ class FamedlySdkHiveDatabase extends DatabaseApi with ZoneTransactionMixin { } @override - Future storeAccountData(String type, String content) async { + Future storeAccountData( + String type, + Map content, + ) async { await _accountDataBox.put( type.toHiveKey, - convertToJson(jsonDecode(content)), + convertToJson(content), ); return; } diff --git a/lib/src/database/matrix_sdk_database.dart b/lib/src/database/matrix_sdk_database.dart index a9bfbfc3..7db3bfe5 100644 --- a/lib/src/database/matrix_sdk_database.dart +++ b/lib/src/database/matrix_sdk_database.dart @@ -1036,8 +1036,11 @@ class MatrixSdkDatabase extends DatabaseApi with DatabaseFileStorage { } @override - Future storeAccountData(String type, String content) async { - await _accountDataBox.put(type, jsonDecode(content)); + Future storeAccountData( + String type, + Map content, + ) async { + await _accountDataBox.put(type, content); return; } diff --git a/test/database_api_test.dart b/test/database_api_test.dart index 9393833b..4be5e81d 100644 --- a/test/database_api_test.dart +++ b/test/database_api_test.dart @@ -192,11 +192,11 @@ void main() { await database.getAccountData(); }); test('storeAccountData', () async { - await database.storeAccountData('m.test', '{"foo":"bar"}'); + await database.storeAccountData('m.test', {'foo': 'bar'}); final events = await database.getAccountData(); expect(events.values.single.type, 'm.test'); - await database.storeAccountData('m.abc+de', '{"foo":"bar"}'); + await database.storeAccountData('m.abc+de', {'foo': 'bar'}); final events2 = await database.getAccountData(); expect( events2.values.any((element) => element.type == 'm.abc+de'), @@ -208,7 +208,7 @@ void main() { await database.storeAccountData( 'm.huge_data_test', - jsonEncode(hugeDataObject), + hugeDataObject, ); final events = await database.getAccountData(); @@ -694,7 +694,7 @@ void main() { final database = await getMatrixSdkDatabase(null); await database.storeAccountData( 'm.test.data', - jsonEncode({'foo': 'bar'}), + {'foo': 'bar'}, ); await database.delete();