roomVisibilityProvider top-level property

dynamic roomVisibilityProvider
final

gives current visibility state of space, return empty if no space is found

Implementation

final roomVisibilityProvider = FutureProvider.family
    .autoDispose<RoomVisibility?, String>((ref, roomId) async {
  final room = await ref.watch(maybeRoomProvider(roomId).future);
  if (room == null) return null;
  final joinRule = room.joinRuleStr();
  final visibility = switch (joinRule) {
    'public' => RoomVisibility.Public,
    'restricted' => RoomVisibility.SpaceVisible,
    'invite' => RoomVisibility.Private,
    _ => null,
  };
  if (visibility == null) {
    _log.warning('Unsupported joinRule for $roomId: $joinRule');
    throw 'Unsupported joinRule $joinRule';
  }
  return visibility;
});