fetchBlockIO method

Result<List<List>, bool> fetchBlockIO(
  1. ComponentData blockData
)

Implementation

Result<List<List<dynamic>>, bool> fetchBlockIO(ComponentData blockData) {
  List<Map<String, dynamic>> inputs = [];
  List<String> outputs = [];
  bool asEmptyMandatory = false;
  for (var portId in blockData.childrenIds) {
    var port = canvasReader.model.getComponent(portId);
    PortData portData = port.data;

    var portConnections = port.connections;
    if (portData.isMandatory && portConnections.isEmpty) {
      asEmptyMandatory = true;
      break;
    } else {
      portConnections.forEach(
        (connection) {
          var name = connection.otherComponentId;
          var linkedPort = canvasReader.model.getComponent(name);
          PortData linkedPortData = linkedPort.data;
          var linkedPortParent =
              canvasReader.model.getComponent(linkedPort.parentId!);
          if (portData.isInput) {
            inputs.add({
              "input_name": portData.name,
              "depend_block_name": linkedPortParent.type,
              "depend_block_id": linkedPortParent.id,
              "depend_on_block_output_name": linkedPortData.name,
            });
          } else {
            outputs.add(
              portData.name,
            );
          }
        },
      );
    }
  }
  return asEmptyMandatory ? Failure(false) : Success([inputs, outputs]);
}