diff --git a/lib/src/database/hive_database.dart b/lib/src/database/hive_database.dart index f9696a21..507562da 100644 --- a/lib/src/database/hive_database.dart +++ b/lib/src/database/hive_database.dart @@ -282,8 +282,8 @@ class FamedlySdkHiveDatabase extends DatabaseApi { final accountData = {}; for (final key in _accountDataBox.keys) { final raw = await _accountDataBox.get(key); - accountData[key] = BasicEvent( - type: key, + accountData[key.toString().fromHiveKey] = BasicEvent( + type: key.toString().fromHiveKey, content: convertToJson(raw), ); } @@ -1159,7 +1159,7 @@ class MultiKey { const MultiKey.byParts(this.parts); MultiKey.fromString(String multiKeyString) - : parts = multiKeyString.split('|'); + : parts = multiKeyString.split('|').map((s) => s.fromHiveKey).toList(); @override String toString() => parts.map((s) => s.toHiveKey).join('|'); @@ -1173,3 +1173,7 @@ extension HiveKeyExtension on String { ? '$sigil${Uri.encodeComponent(localpart)}:${Uri.encodeComponent(domain)}' : Uri.encodeComponent(this); } + +extension FromHiveKeyExtension on String { + String get fromHiveKey => Uri.decodeComponent(this); +} diff --git a/test/database_api_test.dart b/test/database_api_test.dart index 12fc5a4d..a370c0d6 100644 --- a/test/database_api_test.dart +++ b/test/database_api_test.dart @@ -155,6 +155,10 @@ void testDatabase(Future futureDatabase, int clientId) { await database.storeAccountData(clientId, 'm.test', '{"foo":"bar"}'); final events = await database.getAccountData(clientId); expect(events.values.single.type, 'm.test'); + + await database.storeAccountData(clientId, 'm.abc+de', '{"foo":"bar"}'); + final events2 = await database.getAccountData(clientId); + expect(events2.values.any((element) => element.type == 'm.abc+de'), true); }); test('storeEventUpdate', () async { await database.storeEventUpdate(