broadcastServerState method

Future<void> broadcastServerState(
  1. WorldBloc world
)

Implementation

Future<void> broadcastServerState(WorldBloc world) async {
  if (_closing) return;
  final viewers = world.players
      .where((channel) => userManager.getUser(channel) != null)
      .toList(growable: false);
  final needsBannedUsers = viewers.any(
    (channel) => rolesAllowPermission(
      userManager.getUser(channel)!.roles,
      ServerPermission.banPlayers,
      configManager.serverRoles,
    ),
  );
  final bannedUsers = needsBannedUsers
      ? await userManager.getBannedUsers()
      : const <SetonixUser>[];
  await Future.wait(
    viewers.map(
      (channel) => sendEvent(
        ServerStateUpdated(
          buildServerState(channel, world, bannedUsers: bannedUsers),
        ),
        target: channel,
        worldName: world.worldName,
      ),
    ),
  );
}