collapseTeammateShutdowns static method

List<RenderableMessage> collapseTeammateShutdowns(
  1. List<RenderableMessage> messages
)

Collapses consecutive in-process teammate shutdown task_status attachments into a single batch attachment with a count.

Implementation

static List<RenderableMessage> collapseTeammateShutdowns(
  List<RenderableMessage> messages,
) {
  final result = <RenderableMessage>[];
  var i = 0;

  while (i < messages.length) {
    final msg = messages[i];
    if (_isTeammateShutdownAttachment(msg)) {
      var count = 0;
      while (i < messages.length &&
          _isTeammateShutdownAttachment(messages[i])) {
        count++;
        i++;
      }
      if (count == 1) {
        result.add(msg);
      } else {
        result.add(
          RenderableMessage(
            type: 'attachment',
            uuid: msg.uuid,
            timestamp: msg.timestamp,
            attachment: AttachmentData(
              type: 'teammate_shutdown_batch',
              count: count,
            ),
          ),
        );
      }
    } else {
      result.add(msg);
      i++;
    }
  }

  return result;
}