private void addMessageToMailboxes(MailboxMessage mailboxMessage, Set<MailboxId> mailboxIds, MailboxSession mailboxSession) throws MailboxException {
MessageIdMapper messageIdMapper = mailboxSessionMapperFactory.getMessageIdMapper(mailboxSession);
MailboxMapper mailboxMapper = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession);
for (MailboxId mailboxId : mailboxIds) {
boolean shouldPreserveFlags = mailboxManager.myRights(mailboxId, mailboxSession).contains(Right.Write);
SimpleMailboxMessage copy =
SimpleMailboxMessage.from(mailboxMessage)
.mailboxId(mailboxId)
.flags(
FlagsFactory
.builder()
.flags(mailboxMessage.createFlags())
.filteringFlags(
FlagsFilter.builder()
.systemFlagFilter(f -> shouldPreserveFlags)
.userFlagFilter(f -> shouldPreserveFlags)
.build())
.build())
.build();
save(mailboxSession, messageIdMapper, copy);
dispatcher.added(mailboxSession, mailboxMapper.findMailboxById(mailboxId), copy);
}
}