Merge pull request #1787 from famedly/krille/create-stripped-state-events-in-db

refactor: Create StrippedStateEvents for invite rooms when loading from db
This commit is contained in:
Nicolas Werner 2024-05-06 11:38:34 +02:00 committed by GitHub
commit 7637f9b65c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 15 additions and 5 deletions

View File

@ -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));
}
}
}

View File

@ -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);

View File

@ -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);