Skip to content

Commit 7171b50

Browse files
feat: Use single or bulk method correclty
1 parent 6ea9c8a commit 7171b50

File tree

1 file changed

+78
-53
lines changed

1 file changed

+78
-53
lines changed

MailCore/Cache/Actions/ActionsManager.swift

Lines changed: 78 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -306,59 +306,6 @@ public class ActionsManager: ObservableObject {
306306
}
307307
}
308308

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-
362309
@MainActor
363310
private func displayResultSnackbar(message: String?, undoAction: UndoAction?) {
364311
guard let message else { return }
@@ -496,3 +443,81 @@ public class ActionsManager: ObservableObject {
496443
return uniqueThreads.count == 1
497444
}
498445
}
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

Comments
 (0)