connect method

void connect(
  1. String processId
)

Implementation

void connect(String processId) {
  if (_socket != null && _socket!.connected) return;

  _socket = io.io(
    socketURL,
    io.OptionBuilder().setTransports(['polling']).setExtraHeaders(
        {'x-public-key': options.client.getPublicKey()}).build(),
  );

  _socket?.onConnect((_) {
    debugPrint('Socket.io Conectado.');
    _socket?.emit('process:connect', {'processId': processId});
  });

  _socket?.on('process:message', (data) {
    final response = _SocketResponse.fromJson(data);

    if (!response.success) {
      return options.onError?.call(ClientError.fromError(response.toJson()));
    }

    if (response.event == SocketEvents.partialPayment) {
      return options.onPartialPayment?.call(ClientResponse(
        code: ClientCode.paymentPartial,
        message: response.message,
        result: PartialPaymentResponseData.fromJson(response.result),
      ));
    }

    if (response.event == SocketEvents.fundsReceived) {
      return options.onSuccess?.call(ClientResponse(
        code: ClientCode.paymentSuccess,
        message: response.message,
        result: QrResponseData.fromJson(response.result),
      ));
    }
  });

  _socket?.onConnectError((error) {
    options.onError?.call(ClientError.fromError(
      error,
      code: ClientCode.socketConnectionError,
      message: I18n.t.errors.socketConnectionError,
    ));
    disconnect();
  });

  _socket?.onDisconnect((reason) {
    debugPrint('Socket.io Desconectado: $reason');
    _socket = null;
  });
}