projectionBoundedChatMessageOmissions function

List<ChatInputOmission> projectionBoundedChatMessageOmissions(
  1. List<ChatInputOmission> trusted,
  2. ChatInputOmission? local,
  3. int limit
)

Implementation

List<acp.ChatInputOmission> projectionBoundedChatMessageOmissions(
  List<acp.ChatInputOmission> trusted,
  acp.ChatInputOmission? local,
  int limit,
) {
  final bounded = <acp.ChatInputOmission>[];
  for (final omission in trusted) {
    if (bounded.length >= limit) break;
    final duplicate = bounded.any(
      (existing) =>
          existing.resource == omission.resource &&
          existing.reason == omission.reason,
    );
    if (!duplicate) bounded.add(omission);
  }
  if (local != null && bounded.length < limit) {
    final duplicate = bounded.any(
      (existing) =>
          existing.resource == local.resource &&
          existing.reason == local.reason,
    );
    if (!duplicate) bounded.add(local);
  }
  return List<acp.ChatInputOmission>.unmodifiable(bounded);
}