Merge pull request #1985 from famedly/krille/unnecessary-json-serialize-account-data
refactor: Do not unnecessarily serialize and deserialize json for every account data object
This commit is contained in:
commit
5e1ff13821
|
|
@ -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 ?? <BasicEvent>[]) {
|
||||
await database?.storeAccountData(
|
||||
newAccountData.type,
|
||||
jsonEncode(newAccountData.content),
|
||||
newAccountData.content,
|
||||
);
|
||||
accountData[newAccountData.type] = newAccountData;
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@ abstract class DatabaseApi {
|
|||
String syncFilterId,
|
||||
);
|
||||
|
||||
Future storeAccountData(String type, String content);
|
||||
Future storeAccountData(String type, Map<String, Object?> content);
|
||||
|
||||
Future<Map<String, DeviceKeysList>> getUserDeviceKeys(Client client);
|
||||
|
||||
|
|
|
|||
|
|
@ -1073,8 +1073,11 @@ class HiveCollectionsDatabase extends DatabaseApi {
|
|||
}
|
||||
|
||||
@override
|
||||
Future<void> storeAccountData(String type, String content) async {
|
||||
await _accountDataBox.put(type, copyMap(jsonDecode(content)));
|
||||
Future<void> storeAccountData(
|
||||
String type,
|
||||
Map<String, Object?> content,
|
||||
) async {
|
||||
await _accountDataBox.put(type, copyMap(content));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1032,10 +1032,13 @@ class FamedlySdkHiveDatabase extends DatabaseApi with ZoneTransactionMixin {
|
|||
}
|
||||
|
||||
@override
|
||||
Future<void> storeAccountData(String type, String content) async {
|
||||
Future<void> storeAccountData(
|
||||
String type,
|
||||
Map<String, Object?> content,
|
||||
) async {
|
||||
await _accountDataBox.put(
|
||||
type.toHiveKey,
|
||||
convertToJson(jsonDecode(content)),
|
||||
convertToJson(content),
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1036,8 +1036,11 @@ class MatrixSdkDatabase extends DatabaseApi with DatabaseFileStorage {
|
|||
}
|
||||
|
||||
@override
|
||||
Future<void> storeAccountData(String type, String content) async {
|
||||
await _accountDataBox.put(type, jsonDecode(content));
|
||||
Future<void> storeAccountData(
|
||||
String type,
|
||||
Map<String, Object?> content,
|
||||
) async {
|
||||
await _accountDataBox.put(type, content);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue