applyMessageIds method

bool applyMessageIds(
  1. MessageSequence originalSequence,
  2. MessageSequence? targetSequence,
  3. List<MimeMessage>? messages
)

Apply the message IDs from the targetSequence to the messages

Implementation

bool applyMessageIds(
  MessageSequence originalSequence,
  MessageSequence? targetSequence,
  List<MimeMessage>? messages,
) {
  if (messages != null && targetSequence != null) {
    final originalIds = originalSequence.toList();
    final targetIds = targetSequence.toList();
    if (originalIds.length != targetIds.length) {
      print('Unable to apply new message IDs: Unexpected different length of '
          'original and target sequence: '
          'original=$originalSequence, target=$targetSequence');

      return false;
    }
    final isUid = originalSequence.isUidSequence;
    for (var i = 0; i < originalIds.length; i++) {
      final originalId = originalIds[i];
      final message = messages.firstWhereOrNull(
        (message) => isUid
            ? message.uid == originalId
            : message.sequenceId == originalId,
      );
      if (message != null) {
        if (isUid) {
          message.uid = targetIds[i];
        } else {
          message.sequenceId = targetIds[i];
        }
      }
    }
  }

  return true;
}