From a1a542d98ef68f5d1ab81518264e4a56aea7270e Mon Sep 17 00:00:00 2001 From: Krille Date: Mon, 6 May 2024 09:42:05 +0200 Subject: [PATCH] refactor: Create StrippedStateEvents for invite rooms when loading from db --- lib/src/database/hive_collections_database.dart | 8 ++++++-- lib/src/database/hive_database.dart | 8 ++++++-- lib/src/database/matrix_sdk_database.dart | 4 +++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/lib/src/database/hive_collections_database.dart b/lib/src/database/hive_collections_database.dart index e583e4df..7401500d 100644 --- a/lib/src/database/hive_collections_database.dart +++ b/lib/src/database/hive_collections_database.dart @@ -589,7 +589,9 @@ class HiveCollectionsDatabase extends DatabaseApi { for (final states in statesList) { if (states == null) continue; final stateEvents = states.values - .map((raw) => Event.fromJson(copyMap(raw), room)) + .map((raw) => room.membership == Membership.invite + ? StrippedStateEvent.fromJson(copyMap(raw)) + : Event.fromJson(copyMap(raw), room)) .toList(); for (final state in stateEvents) { room.setState(state); @@ -635,7 +637,9 @@ class HiveCollectionsDatabase extends DatabaseApi { if (members != null) { for (final member in members) { if (member == null) continue; - room.setState(Event.fromJson(copyMap(member), room)); + room.setState(room.membership == Membership.invite + ? StrippedStateEvent.fromJson(copyMap(member)) + : Event.fromJson(copyMap(member), room)); } } } diff --git a/lib/src/database/hive_database.dart b/lib/src/database/hive_database.dart index f5a16bdb..023078a6 100644 --- a/lib/src/database/hive_database.dart +++ b/lib/src/database/hive_database.dart @@ -618,7 +618,9 @@ class FamedlySdkHiveDatabase extends DatabaseApi with ZoneTransactionMixin { Logs().w('Unable to post load member $userId'); continue; } - room.setState(Event.fromJson(convertToJson(state), room)); + room.setState(room.membership == Membership.invite + ? StrippedStateEvent.fromJson(copyMap(raw)) + : Event.fromJson(convertToJson(state), room)); } // Get the "important" room states. All other states will be loaded once @@ -628,7 +630,9 @@ class FamedlySdkHiveDatabase extends DatabaseApi with ZoneTransactionMixin { .get(MultiKey(room.id, type).toString()) as Map?; if (states == null) continue; final stateEvents = states.values - .map((raw) => Event.fromJson(convertToJson(raw), room)) + .map((raw) => room.membership == Membership.invite + ? StrippedStateEvent.fromJson(copyMap(raw)) + : Event.fromJson(convertToJson(raw), room)) .toList(); for (final state in stateEvents) { room.setState(state); diff --git a/lib/src/database/matrix_sdk_database.dart b/lib/src/database/matrix_sdk_database.dart index 96b6e28e..b2e02072 100644 --- a/lib/src/database/matrix_sdk_database.dart +++ b/lib/src/database/matrix_sdk_database.dart @@ -572,7 +572,9 @@ class MatrixSdkDatabase extends DatabaseApi with DatabaseFileStorage { } final states = entry.value; final stateEvents = states.values - .map((raw) => Event.fromJson(copyMap(raw), room)) + .map((raw) => room.membership == Membership.invite + ? StrippedStateEvent.fromJson(copyMap(raw)) + : Event.fromJson(copyMap(raw), room)) .toList(); for (final state in stateEvents) { room.setState(state);