roomVisibilityProvider top-level property
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;
});