diff --git a/lib/src/client.dart b/lib/src/client.dart index 2cd9d9a2..efecef71 100644 --- a/lib/src/client.dart +++ b/lib/src/client.dart @@ -705,6 +705,7 @@ class Client extends MatrixApi { CreateRoomPreset preset = CreateRoomPreset.privateChat, List? initialState, Visibility? visibility, + HistoryVisibility? historyVisibility, bool waitForSync = true, bool groupCall = false, Map? powerLevelContentOverride, @@ -722,6 +723,17 @@ class Client extends MatrixApi { )); } } + if (historyVisibility != null) { + initialState ??= []; + if (!initialState.any((s) => s.type == EventTypes.HistoryVisibility)) { + initialState.add(StateEvent( + content: { + 'history_visibility': historyVisibility.text, + }, + type: EventTypes.HistoryVisibility, + )); + } + } if (groupCall) { powerLevelContentOverride ??= {}; powerLevelContentOverride['events'] = { diff --git a/lib/src/room.dart b/lib/src/room.dart index c4fffd7c..9a067fbf 100644 --- a/lib/src/room.dart +++ b/lib/src/room.dart @@ -45,6 +45,10 @@ const Map _guestAccessMap = { GuestAccess.forbidden: 'forbidden', }; +extension GuestAccessExtension on GuestAccess { + String get text => _guestAccessMap[this]!; +} + const Map _historyVisibilityMap = { HistoryVisibility.invited: 'invited', HistoryVisibility.joined: 'joined', @@ -52,6 +56,10 @@ const Map _historyVisibilityMap = { HistoryVisibility.worldReadable: 'world_readable', }; +extension HistoryVisibilityExtension on HistoryVisibility { + String get text => _historyVisibilityMap[this]!; +} + const String messageSendingStatusKey = 'com.famedly.famedlysdk.message_sending_status'; @@ -2138,7 +2146,7 @@ class Room { EventTypes.GuestAccess, '', { - 'guest_access': _guestAccessMap[guestAccess], + 'guest_access': guestAccess.text, }, ); return; @@ -2163,7 +2171,7 @@ class Room { EventTypes.HistoryVisibility, '', { - 'history_visibility': _historyVisibilityMap[historyVisibility], + 'history_visibility': historyVisibility.text, }, ); return;