sendError method

  1. @override
Future<void> sendError(
  1. int id,
  2. String topic,
  3. String method,
  4. JsonRpcError error, {
  5. EncodeOptions? encodeOptions,
  6. RpcOptions? rpcOptions,
})
override

Implementation

@override
Future<void> sendError(
  int id,
  String topic,
  String method,
  JsonRpcError error, {
  EncodeOptions? encodeOptions,
  RpcOptions? rpcOptions,
}) async {
  core.logger.t(
    'pairing sendError, id: $id topic: $topic, method: $method, error: $error',
  );

  final Map<String, dynamic> payload = JsonRpcUtils.formatJsonRpcError(
    id,
    error,
  );
  final String? message = await core.crypto.encode(
    topic,
    payload,
    options: encodeOptions,
  );

  if (message == null) {
    return;
  }

  final fallbackMethod = MethodConstants.UNREGISTERED_METHOD;
  final fallbackRpcOpts = MethodConstants.RPC_OPTS[method] ??
      MethodConstants.RPC_OPTS[fallbackMethod]!;
  final fallbackOpts = fallbackRpcOpts['reject'] ?? fallbackRpcOpts['res']!;

  final RpcOptions opts = rpcOptions ?? fallbackOpts;

  await core.relayClient.publish(
    topic: topic,
    message: message,
    ttl: opts.ttl,
    tag: opts.tag,
  );
}