@@ -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