Skip to content

Commit 445ea19

Browse files
fixup! feat: jmap support - part 2
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
1 parent 462dc80 commit 445ea19

2 files changed

Lines changed: 16 additions & 4 deletions

File tree

lib/IMAP/ImapMessageConnector.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ public function moveMessages(Account $account, Mailbox $targetMailbox, Mailbox $
192192
if ($newUid === null) {
193193
// The IMAP server does not support UIDPLUS and the message has no Message-ID
194194
// header, so the new UID is unknown. It will be reconciled on the next sync.
195-
$this->logger->warning('Moved message but could not determine its new UID', [
195+
$this->logger->debug('Moved message but could not determine its new UID', [
196196
'userId' => $account->getUserId(),
197197
'accountId' => $account->getId(),
198198
'sourceMailboxId' => $sourceMailbox->getId(),

lib/Service/MailManager.php

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -240,17 +240,27 @@ public function moveMessages(Account $account, Mailbox $targetMailbox, Mailbox $
240240
if ($messages === []) {
241241
return [];
242242
}
243+
$sourceUids = [];
244+
foreach ($messages as $message) {
245+
$sourceUids[spl_object_id($message)] = $message->getUid();
246+
}
247+
243248
// update remote store
244249
$mutatedMessages = $this->protocolFactory
245250
->messageConnector($account)
246251
->moveMessages($account, $targetMailbox, $sourceMailbox, ...$messages);
247252

248253
// update local store
249-
$this->dbMessageMapper->updateBulk($account, false, ...$mutatedMessages);
250-
251254
$mutatedUids = [];
252255
foreach ($mutatedMessages as $mutatedMessage) {
256+
$this->dbMessageMapper->update($mutatedMessage);
253257
$mutatedUids[] = $mutatedMessage->getUid();
258+
259+
$this->eventDispatcher->dispatchTyped(new MessageDeletedEvent(
260+
$account,
261+
$sourceMailbox,
262+
$sourceUids[spl_object_id($mutatedMessage)],
263+
));
254264
}
255265

256266
return $mutatedUids;
@@ -304,7 +314,9 @@ public function deleteMessages(Account $account, Mailbox $sourceMailbox, Message
304314

305315
// update local store
306316
if ($operation === 'move') {
307-
$this->dbMessageMapper->updateBulk($account, false, ...$mutatedMessages);
317+
foreach ($mutatedMessages as $mutatedMessage) {
318+
$this->dbMessageMapper->update($mutatedMessage);
319+
}
308320
}
309321
if ($operation === 'delete') {
310322
$mutatedUids = array_map(static fn (Message $message): int => $message->getUid(), $mutatedMessages);

0 commit comments

Comments
 (0)