@@ -306,59 +306,6 @@ public class ActionsManager: ObservableObject {
306
306
}
307
307
}
308
308
309
- public func performSnooze( messages: [ Message ] , date: Date , originFolder: Folder ? ) async throws -> Action {
310
- let messagesToExecuteAction = messages. lastMessagesToExecuteAction (
311
- currentMailboxEmail: mailboxManager. mailbox. email,
312
- currentFolder: originFolder
313
- )
314
-
315
- var snoozeCount = 0
316
- let allMessagesAreSnoozed = messagesToExecuteAction. allSatisfy ( \. isSnoozed)
317
- if allMessagesAreSnoozed {
318
- let response = try await mailboxManager. updateSnooze ( messages: messagesToExecuteAction, until: date)
319
- snoozeCount = response. reduce ( 0 ) { $0 + $1. updated. count }
320
- } else {
321
- let response = try await mailboxManager. snooze ( messages: messagesToExecuteAction, until: date)
322
- snoozeCount = response. reduce ( 0 ) { $0 + $1. snoozeActions. count }
323
- }
324
-
325
- if snoozeCount == 0 {
326
- snackbarPresenter. show ( message: MailResourcesStrings . Localizable. errorUnknown)
327
- } else {
328
- snackbarPresenter. show (
329
- message: MailResourcesStrings . Localizable. snackbarSnoozeSuccess ( date. formatted ( . snoozeSnackbar) )
330
- )
331
- }
332
-
333
- return allMessagesAreSnoozed ? . modifiedSnoozed : . snoozed
334
- }
335
-
336
- private func performDeleteSnooze( messages: [ Message ] ) async throws {
337
- if messages. count == 1 , let message = messages. first {
338
- try await deleteSnooze ( message: message)
339
- } else {
340
- try await deleteSnooze ( messages: messages)
341
- }
342
- }
343
-
344
- private func deleteSnooze( message: Message ) async throws {
345
- try await mailboxManager. deleteSnooze ( message: message)
346
- }
347
-
348
- private func deleteSnooze( messages: [ Message ] ) async throws {
349
- let response = try await mailboxManager. deleteSnooze ( messages: messages)
350
- let deletedSnoozeCount = response. reduce ( 0 ) { $0 + $1. cancelled. count }
351
-
352
- Task { @MainActor in
353
- if deletedSnoozeCount == 0 {
354
- snackbarPresenter. show ( message: MailResourcesStrings . Localizable. errorUnknown)
355
- } else {
356
- snackbarPresenter
357
- . show ( message: MailResourcesStrings . Localizable. snackbarUnsnoozeSuccess ( deletedSnoozeCount) )
358
- }
359
- }
360
- }
361
-
362
309
@MainActor
363
310
private func displayResultSnackbar( message: String ? , undoAction: UndoAction ? ) {
364
311
guard let message else { return }
@@ -496,3 +443,81 @@ public class ActionsManager: ObservableObject {
496
443
return uniqueThreads. count == 1
497
444
}
498
445
}
446
+
447
+ // MARK: - Snooze
448
+
449
+ extension ActionsManager {
450
+ public func performSnooze( messages: [ Message ] , date: Date , originFolder: Folder ? ) async throws -> Action {
451
+ let messagesToExecuteAction = messages. lastMessagesToExecuteAction (
452
+ currentMailboxEmail: mailboxManager. mailbox. email,
453
+ currentFolder: originFolder
454
+ )
455
+
456
+ let allMessagesAreSnoozed = messagesToExecuteAction. allSatisfy ( \. isSnoozed)
457
+ if allMessagesAreSnoozed {
458
+ try await snooze ( messages: messagesToExecuteAction, date: date)
459
+ return . snoozed
460
+ } else {
461
+ if messagesToExecuteAction. count == 1 , let message = messagesToExecuteAction. first {
462
+ try await modifySnooze ( message: message, date: date)
463
+ } else {
464
+ try await modifySnooze ( messages: messagesToExecuteAction, date: date)
465
+ }
466
+ return . modifiedSnoozed
467
+ }
468
+ }
469
+
470
+ private func performDeleteSnooze( messages: [ Message ] ) async throws {
471
+ if messages. count == 1 , let message = messages. first {
472
+ try await deleteSnooze ( message: message)
473
+ } else {
474
+ try await deleteSnooze ( messages: messages)
475
+ }
476
+ }
477
+
478
+ private func snooze( messages: [ Message ] , date: Date ) async throws {
479
+ let response = try await mailboxManager. snooze ( messages: messages, until: date)
480
+
481
+ let snoozeCount = response. reduce ( 0 ) { $0 + $1. snoozeActions. count }
482
+ showSnoozeCompletedSnackar ( messagesSnoozed: snoozeCount, date: date)
483
+ }
484
+
485
+ private func modifySnooze( message: Message , date: Date ) async throws {
486
+ try await mailboxManager. updateSnooze ( message: message, until: date)
487
+ }
488
+
489
+ private func modifySnooze( messages: [ Message ] , date: Date ) async throws {
490
+ let response = try await mailboxManager. updateSnooze ( messages: messages, until: date)
491
+
492
+ let snoozeCount = response. reduce ( 0 ) { $0 + $1. updated. count }
493
+ showSnoozeCompletedSnackar ( messagesSnoozed: snoozeCount, date: date)
494
+ }
495
+
496
+ private func showSnoozeCompletedSnackar( messagesSnoozed: Int , date: Date ) {
497
+ if messagesSnoozed == 0 {
498
+ snackbarPresenter. show ( message: MailResourcesStrings . Localizable. errorUnknown)
499
+ } else {
500
+ snackbarPresenter. show (
501
+ message: MailResourcesStrings . Localizable. snackbarSnoozeSuccess ( date. formatted ( . snoozeSnackbar) )
502
+ )
503
+ }
504
+ }
505
+
506
+ private func deleteSnooze( message: Message ) async throws {
507
+ try await mailboxManager. deleteSnooze ( message: message)
508
+ }
509
+
510
+ private func deleteSnooze( messages: [ Message ] ) async throws {
511
+ let response = try await mailboxManager. deleteSnooze ( messages: messages)
512
+ let deletedSnoozeCount = response. reduce ( 0 ) { $0 + $1. cancelled. count }
513
+
514
+ Task { @MainActor in
515
+ if deletedSnoozeCount == 0 {
516
+ snackbarPresenter. show ( message: MailResourcesStrings . Localizable. errorUnknown)
517
+ } else {
518
+ snackbarPresenter
519
+ . show ( message: MailResourcesStrings . Localizable. snackbarUnsnoozeSuccess ( deletedSnoozeCount) )
520
+ }
521
+ }
522
+ }
523
+ }
0 commit comments