diff --git a/Mail/Components/ActionsPanelButton.swift b/Mail/Components/ActionsPanelButton.swift index 775fdce2d..f9d9d1720 100644 --- a/Mail/Components/ActionsPanelButton.swift +++ b/Mail/Components/ActionsPanelButton.swift @@ -22,6 +22,8 @@ import MailResources import SwiftUI struct ActionsPanelButton: View { + @Environment(\.dismiss) private var dismiss + @State private var actionMessages: [Message]? let messages: [Message] @@ -34,6 +36,10 @@ struct ActionsPanelButton: View { } label: { label() } - .actionsPanel(messages: $actionMessages, originFolder: originFolder) + .actionsPanel(messages: $actionMessages, originFolder: originFolder) { action in + if action == .markAsUnread { + dismiss() + } + } } } diff --git a/Mail/Views/Bottom sheets/Actions/ActionsPanelViewModifier.swift b/Mail/Views/Bottom sheets/Actions/ActionsPanelViewModifier.swift index 7505a13ae..de04060f9 100644 --- a/Mail/Views/Bottom sheets/Actions/ActionsPanelViewModifier.swift +++ b/Mail/Views/Bottom sheets/Actions/ActionsPanelViewModifier.swift @@ -22,7 +22,7 @@ import SwiftUI extension View { func actionsPanel(messages: Binding<[Message]?>, originFolder: Folder?, - completionHandler: (() -> Void)? = nil) -> some View { + completionHandler: ((Action) -> Void)? = nil) -> some View { return modifier(ActionsPanelViewModifier( messages: messages, originFolder: originFolder, @@ -42,7 +42,7 @@ struct ActionsPanelViewModifier: ViewModifier { @Binding var messages: [Message]? let originFolder: Folder? - var completionHandler: (() -> Void)? + var completionHandler: ((Action) -> Void)? private var origin: ActionOrigin { .floatingPanel( diff --git a/Mail/Views/Bottom sheets/Actions/ActionsView.swift b/Mail/Views/Bottom sheets/Actions/ActionsView.swift index ec66b2150..779987619 100644 --- a/Mail/Views/Bottom sheets/Actions/ActionsView.swift +++ b/Mail/Views/Bottom sheets/Actions/ActionsView.swift @@ -27,12 +27,12 @@ struct ActionsView: View { private let quickActions: [Action] private let listActions: [Action] private let origin: ActionOrigin - private let completionHandler: (() -> Void)? + private let completionHandler: ((Action) -> Void)? init(mailboxManager: MailboxManager, target messages: [Message], origin: ActionOrigin, - completionHandler: (() -> Void)? = nil) { + completionHandler: ((Action) -> Void)? = nil) { let userIsStaff = mailboxManager.account.user.isStaff ?? false let actions = Action.actionsForMessages(messages, originFolder: origin.folder, userIsStaff: userIsStaff) quickActions = actions.quickActions @@ -98,7 +98,7 @@ struct QuickActionView: View { let targetMessages: [Message] let action: Action let origin: ActionOrigin - var completionHandler: (() -> Void)? + var completionHandler: ((Action) -> Void)? var body: some View { Button { @@ -110,7 +110,7 @@ struct QuickActionView: View { action: action, origin: origin ) - completionHandler?() + completionHandler?(action) } } } label: { @@ -143,7 +143,7 @@ struct MessageActionView: View { let targetMessages: [Message] let action: Action let origin: ActionOrigin - var completionHandler: (() -> Void)? + var completionHandler: ((Action) -> Void)? var body: some View { Button { @@ -155,7 +155,7 @@ struct MessageActionView: View { action: action, origin: origin ) - completionHandler?() + completionHandler?(action) } } } label: { diff --git a/Mail/Views/Thread List/ThreadListModifiers.swift b/Mail/Views/Thread List/ThreadListModifiers.swift index 4a172180a..6d8af6cd1 100644 --- a/Mail/Views/Thread List/ThreadListModifiers.swift +++ b/Mail/Views/Thread List/ThreadListModifiers.swift @@ -176,7 +176,7 @@ struct ThreadListToolbar: ViewModifier { } .disabled(multipleSelectionViewModel.selectedItems.isEmpty) } - .actionsPanel(messages: $multipleSelectedMessages, originFolder: viewModel.folder) { + .actionsPanel(messages: $multipleSelectedMessages, originFolder: viewModel.folder) { _ in multipleSelectionViewModel.isEnabled = false } .navigationTitle(