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);
|
onPresenceChanged.add(cachedPresence);
|
||||||
await database?.storePresence(newPresence.senderId, cachedPresence);
|
await database?.storePresence(newPresence.senderId, cachedPresence);
|
||||||
}
|
}
|
||||||
for (final newAccountData in sync.accountData ?? []) {
|
for (final newAccountData in sync.accountData ?? <BasicEvent>[]) {
|
||||||
await database?.storeAccountData(
|
await database?.storeAccountData(
|
||||||
newAccountData.type,
|
newAccountData.type,
|
||||||
jsonEncode(newAccountData.content),
|
newAccountData.content,
|
||||||
);
|
);
|
||||||
accountData[newAccountData.type] = newAccountData;
|
accountData[newAccountData.type] = newAccountData;
|
||||||
// ignore: deprecated_member_use_from_same_package
|
// ignore: deprecated_member_use_from_same_package
|
||||||
|
|
|
||||||
|
|
@ -127,7 +127,7 @@ abstract class DatabaseApi {
|
||||||
String syncFilterId,
|
String syncFilterId,
|
||||||
);
|
);
|
||||||
|
|
||||||
Future storeAccountData(String type, String content);
|
Future storeAccountData(String type, Map<String, Object?> content);
|
||||||
|
|
||||||
Future<Map<String, DeviceKeysList>> getUserDeviceKeys(Client client);
|
Future<Map<String, DeviceKeysList>> getUserDeviceKeys(Client client);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1073,8 +1073,11 @@ class HiveCollectionsDatabase extends DatabaseApi {
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> storeAccountData(String type, String content) async {
|
Future<void> storeAccountData(
|
||||||
await _accountDataBox.put(type, copyMap(jsonDecode(content)));
|
String type,
|
||||||
|
Map<String, Object?> content,
|
||||||
|
) async {
|
||||||
|
await _accountDataBox.put(type, copyMap(content));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1032,10 +1032,13 @@ class FamedlySdkHiveDatabase extends DatabaseApi with ZoneTransactionMixin {
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> storeAccountData(String type, String content) async {
|
Future<void> storeAccountData(
|
||||||
|
String type,
|
||||||
|
Map<String, Object?> content,
|
||||||
|
) async {
|
||||||
await _accountDataBox.put(
|
await _accountDataBox.put(
|
||||||
type.toHiveKey,
|
type.toHiveKey,
|
||||||
convertToJson(jsonDecode(content)),
|
convertToJson(content),
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1036,8 +1036,11 @@ class MatrixSdkDatabase extends DatabaseApi with DatabaseFileStorage {
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> storeAccountData(String type, String content) async {
|
Future<void> storeAccountData(
|
||||||
await _accountDataBox.put(type, jsonDecode(content));
|
String type,
|
||||||
|
Map<String, Object?> content,
|
||||||
|
) async {
|
||||||
|
await _accountDataBox.put(type, content);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -192,11 +192,11 @@ void main() {
|
||||||
await database.getAccountData();
|
await database.getAccountData();
|
||||||
});
|
});
|
||||||
test('storeAccountData', () async {
|
test('storeAccountData', () async {
|
||||||
await database.storeAccountData('m.test', '{"foo":"bar"}');
|
await database.storeAccountData('m.test', {'foo': 'bar'});
|
||||||
final events = await database.getAccountData();
|
final events = await database.getAccountData();
|
||||||
expect(events.values.single.type, 'm.test');
|
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();
|
final events2 = await database.getAccountData();
|
||||||
expect(
|
expect(
|
||||||
events2.values.any((element) => element.type == 'm.abc+de'),
|
events2.values.any((element) => element.type == 'm.abc+de'),
|
||||||
|
|
@ -208,7 +208,7 @@ void main() {
|
||||||
|
|
||||||
await database.storeAccountData(
|
await database.storeAccountData(
|
||||||
'm.huge_data_test',
|
'm.huge_data_test',
|
||||||
jsonEncode(hugeDataObject),
|
hugeDataObject,
|
||||||
);
|
);
|
||||||
|
|
||||||
final events = await database.getAccountData();
|
final events = await database.getAccountData();
|
||||||
|
|
@ -694,7 +694,7 @@ void main() {
|
||||||
final database = await getMatrixSdkDatabase(null);
|
final database = await getMatrixSdkDatabase(null);
|
||||||
await database.storeAccountData(
|
await database.storeAccountData(
|
||||||
'm.test.data',
|
'm.test.data',
|
||||||
jsonEncode({'foo': 'bar'}),
|
{'foo': 'bar'},
|
||||||
);
|
);
|
||||||
await database.delete();
|
await database.delete();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue