leaveRoom method

Future<void> leaveRoom({
  1. required String endpointSocket,
  2. String? idChannel,
})

Implementation

Future<void> leaveRoom(
    {required String endpointSocket, String? idChannel}) async {
  try {
    if (!_channels.containsKey(endpointSocket)) return;

    if (idChannel != null) {
      if (lstIdChannel[endpointSocket]?.contains(idChannel) ?? false) {
        lstIdChannel[endpointSocket]!.remove(idChannel);
        _sendLeaveRoom(endpointSocket, idChannel);
      }
    } else {
      // Si no se especifica idChannel, se sale de todos los canales
      for (final id in lstIdChannel[endpointSocket] ?? []) {
        _sendLeaveRoom(endpointSocket, id);
      }
      lstIdChannel[endpointSocket]?.clear();
    }
  } catch (error) {
    WSocketDataProvider.logDebug('_leaveRoom...error::: $error');
  }
}