diff --git a/Mail/Components/ThreadCell.swift b/Mail/Components/ThreadCell.swift index f8bd6659b..56e5a5b27 100644 --- a/Mail/Components/ThreadCell.swift +++ b/Mail/Components/ThreadCell.swift @@ -55,7 +55,7 @@ struct ThreadCellDataHolder { /// Last message of the thread, except for the Sent folder where we use the last message of the folder let preview: String - init(thread: Thread, mailboxManager: MailboxManager) { + init(thread: Thread) { let lastMessageNotFromSent = thread.messages.last { $0.folder?.role != .sent } ?? thread.messages.last recipientToDisplay = lastMessageNotFromSent?.from.last @@ -80,8 +80,8 @@ struct ThreadCellDataHolder { } struct ThreadCell: View { + @EnvironmentObject private var mailboxManager: MailboxManager let thread: Thread - let mailboxManager: MailboxManager let dataHolder: ThreadCellDataHolder @@ -106,15 +106,13 @@ struct ThreadCell: View { init( thread: Thread, - mailboxManager: MailboxManager, density: ThreadDensity, isMultipleSelectionEnabled: Bool = false, isSelected: Bool = false ) { self.thread = thread - self.mailboxManager = mailboxManager - dataHolder = ThreadCellDataHolder(thread: thread, mailboxManager: mailboxManager) + dataHolder = ThreadCellDataHolder(thread: thread) self.density = density self.isMultipleSelectionEnabled = isMultipleSelectionEnabled @@ -176,7 +174,6 @@ struct ThreadCell: View { struct ThreadCell_Previews: PreviewProvider { static var previews: some View { ThreadCell(thread: PreviewHelper.sampleThread, - mailboxManager: PreviewHelper.sampleMailboxManager, density: .large, isMultipleSelectionEnabled: false, isSelected: false) diff --git a/Mail/Views/AlertView.swift b/Mail/Views/AlertView.swift index 425fd3da9..7d43e3d5a 100644 --- a/Mail/Views/AlertView.swift +++ b/Mail/Views/AlertView.swift @@ -128,7 +128,8 @@ extension View { struct AlertView_Previews: PreviewProvider { static var previews: some View { AlertView { - CreateFolderView(mailboxManager: PreviewHelper.sampleMailboxManager, mode: .create) + CreateFolderView(mode: .create) } + .environmentObject(PreviewHelper.sampleMailboxManager) } } diff --git a/Mail/Views/Alerts/CreateFolderView.swift b/Mail/Views/Alerts/CreateFolderView.swift index 99a219d61..6ca09ae44 100644 --- a/Mail/Views/Alerts/CreateFolderView.swift +++ b/Mail/Views/Alerts/CreateFolderView.swift @@ -25,7 +25,7 @@ import RealmSwift import SwiftUI struct CreateFolderView: View { - @StateObject private var mailboxManager: MailboxManager + @EnvironmentObject private var mailboxManager: MailboxManager @ObservedResults(Folder.self) private var folders @State private var folderName = "" @@ -34,7 +34,7 @@ struct CreateFolderView: View { @FocusState private var isFocused - private var mode: Mode + let mode: Mode enum Mode { case create @@ -64,12 +64,6 @@ struct CreateFolderView: View { } } - init(mailboxManager: MailboxManager, mode: Mode) { - _folders = .init(Folder.self, configuration: AccountManager.instance.currentMailboxManager?.realmConfiguration) - _mailboxManager = StateObject(wrappedValue: mailboxManager) - self.mode = mode - } - var body: some View { VStack(alignment: .leading) { Text(MailResourcesStrings.Localizable.newFolderDialogTitle) @@ -81,7 +75,8 @@ struct CreateFolderView: View { .padding(12) .overlay( RoundedRectangle(cornerRadius: 4) - .stroke(error == nil ? MailResourcesAsset.textFieldBorder.swiftUIColor : MailResourcesAsset.redColor.swiftUIColor) + .stroke(error == nil ? MailResourcesAsset.textFieldBorder.swiftUIColor : MailResourcesAsset.redColor + .swiftUIColor) .animation(.easeInOut, value: error) ) .textStyle(.body) @@ -98,7 +93,7 @@ struct CreateFolderView: View { Task { await tryOrDisplayError { let folder = try await mailboxManager.createFolder(name: folderName) - if case let .move(moveHandler) = mode { + if case .move(let moveHandler) = mode { moveHandler(folder) NotificationCenter.default.post(Notification(name: Constants.dismissMoveSheetNotificationName)) } @@ -128,7 +123,10 @@ struct CreateFolderView: View { struct CreateFolderView_Previews: PreviewProvider { static var previews: some View { - CreateFolderView(mailboxManager: PreviewHelper.sampleMailboxManager, mode: .create) - CreateFolderView(mailboxManager: PreviewHelper.sampleMailboxManager, mode: .move { _ in /* Preview */ }) + Group { + CreateFolderView(mode: .create) + CreateFolderView(mode: .move { _ in /* Preview */ }) + } + .environmentObject(PreviewHelper.sampleMailboxManager) } } diff --git a/Mail/Views/Alerts/ReportPhishingView.swift b/Mail/Views/Alerts/ReportPhishingView.swift index d2cf0c797..b7ef1bdf6 100644 --- a/Mail/Views/Alerts/ReportPhishingView.swift +++ b/Mail/Views/Alerts/ReportPhishingView.swift @@ -22,7 +22,7 @@ import MailResources import SwiftUI struct ReportPhishingView: View { - let mailboxManager: MailboxManager + @EnvironmentObject private var mailboxManager: MailboxManager let message: Message var body: some View { @@ -31,7 +31,7 @@ struct ReportPhishingView: View { .textStyle(.bodyMedium) .frame(maxWidth: .infinity, alignment: .leading) Text(MailResourcesStrings.Localizable.reportPhishingDescription) - .textStyle(.bodySecondary) + .textStyle(.bodySecondary) ModalButtonsView(primaryButtonTitle: MailResourcesStrings.Localizable.buttonReport, primaryButtonAction: report) .padding(.top, 8) } @@ -54,6 +54,7 @@ struct ReportPhishingView: View { struct PhishingView_Previews: PreviewProvider { static var previews: some View { - ReportPhishingView(mailboxManager: PreviewHelper.sampleMailboxManager, message: PreviewHelper.sampleMessage) + ReportPhishingView(message: PreviewHelper.sampleMessage) + .environmentObject(PreviewHelper.sampleMailboxManager) } } diff --git a/Mail/Views/Bottom sheets/ReportDisplayProblemView.swift b/Mail/Views/Bottom sheets/ReportDisplayProblemView.swift index 8d85c9678..4a1239ae5 100644 --- a/Mail/Views/Bottom sheets/ReportDisplayProblemView.swift +++ b/Mail/Views/Bottom sheets/ReportDisplayProblemView.swift @@ -24,7 +24,7 @@ import Sentry import SwiftUI struct ReportDisplayProblemView: View { - let mailboxManager: MailboxManager + @EnvironmentObject private var mailboxManager: MailboxManager let message: Message var body: some View { @@ -37,7 +37,7 @@ struct ReportDisplayProblemView: View { ModalButtonsView(primaryButtonTitle: MailResourcesStrings.Localizable.buttonAccept, secondaryButtonTitle: MailResourcesStrings.Localizable.buttonRefuse, primaryButtonAction: report) - .padding(.top, 8) + .padding(.top, 8) } .padding(.horizontal, UIConstants.bottomSheetHorizontalPadding) .matomoView(view: [MatomoUtils.View.bottomSheet.displayName, "ReportDisplayProblemView"]) @@ -63,6 +63,7 @@ struct ReportDisplayProblemView: View { struct ReportDisplayProblemView_Previews: PreviewProvider { static var previews: some View { - ReportDisplayProblemView(mailboxManager: PreviewHelper.sampleMailboxManager, message: PreviewHelper.sampleMessage) + ReportDisplayProblemView(message: PreviewHelper.sampleMessage) + .environmentObject(PreviewHelper.sampleMailboxManager) } } diff --git a/Mail/Views/Menu Drawer/Folders/FolderCell.swift b/Mail/Views/Menu Drawer/Folders/FolderCell.swift index eadbf4762..807873598 100644 --- a/Mail/Views/Menu Drawer/Folders/FolderCell.swift +++ b/Mail/Views/Menu Drawer/Folders/FolderCell.swift @@ -42,7 +42,6 @@ struct FolderCell: View { @Environment(\.folderCellType) var cellType @EnvironmentObject var splitViewManager: SplitViewManager - @EnvironmentObject var mailboxManager: MailboxManager @EnvironmentObject var navigationDrawerState: NavigationDrawerState let folder: NestableFolder @@ -69,10 +68,7 @@ struct FolderCell: View { } } else { NavigationLink(isActive: $shouldTransit) { - ThreadListManagerView( - mailboxManager: mailboxManager, - isCompact: isCompact - ) + ThreadListManagerView(isCompact: isCompact) } label: { Button { if let matomoCategory { diff --git a/Mail/Views/Menu Drawer/Folders/UserFoldersListView.swift b/Mail/Views/Menu Drawer/Folders/UserFoldersListView.swift index d238062c3..2afc1aa8e 100644 --- a/Mail/Views/Menu Drawer/Folders/UserFoldersListView.swift +++ b/Mail/Views/Menu Drawer/Folders/UserFoldersListView.swift @@ -29,9 +29,9 @@ struct UserFoldersListView: View { var folders: [NestableFolder] @State private var isExpanded = true + @State private var isShowingCreateFolderAlert = false - @EnvironmentObject var splitViewManager: SplitViewManager - @EnvironmentObject var globalAlert: GlobalAlert + @EnvironmentObject private var splitViewManager: SplitViewManager let isCompact: Bool @@ -58,13 +58,16 @@ struct UserFoldersListView: View { Button { matomo.track(eventWithCategory: .createFolder, name: "fromMenuDrawer") - globalAlert.state = .createNewFolder(mode: .create) + isShowingCreateFolderAlert.toggle() } label: { MailResourcesAsset.addCircle.swiftUIImage .resizable() .frame(width: 16, height: 16) } .accessibilityLabel(MailResourcesStrings.Localizable.newFolderDialogTitle) + .customAlert(isPresented: $isShowingCreateFolderAlert) { + CreateFolderView(mode: .create) + } } .padding(.horizontal, UIConstants.menuDrawerHorizontalPadding) .padding(.vertical, UIConstants.menuDrawerVerticalPadding) diff --git a/Mail/Views/Menu Drawer/MailboxManagement/MailboxesManagementView.swift b/Mail/Views/Menu Drawer/MailboxManagement/MailboxesManagementView.swift index c1984d29f..e53b3b761 100644 --- a/Mail/Views/Menu Drawer/MailboxManagement/MailboxesManagementView.swift +++ b/Mail/Views/Menu Drawer/MailboxManagement/MailboxesManagementView.swift @@ -79,7 +79,7 @@ struct MailboxesManagementView: View { } } .sheet(isPresented: $isShowingSwitchAccount) { - SheetView(mailboxManager: mailboxManager) { + SheetView { AccountListView() } } diff --git a/Mail/Views/Menu Drawer/MenuDrawerView.swift b/Mail/Views/Menu Drawer/MenuDrawerView.swift index 141a853a7..9fad5c2cd 100644 --- a/Mail/Views/Menu Drawer/MenuDrawerView.swift +++ b/Mail/Views/Menu Drawer/MenuDrawerView.swift @@ -47,12 +47,13 @@ struct NavigationDrawer: View { private let maxWidth = 350.0 private let spacing = 60.0 - let mailboxManager: MailboxManager + @Environment(\.window) private var window - @EnvironmentObject var splitViewManager: SplitViewManager - @EnvironmentObject var navigationDrawerState: NavigationDrawerState - @Environment(\.window) var window - @GestureState var isDragGestureActive = false + @EnvironmentObject private var mailboxManager: MailboxManager + @EnvironmentObject private var splitViewManager: SplitViewManager + @EnvironmentObject private var navigationDrawerState: NavigationDrawerState + + @GestureState private var isDragGestureActive = false @State private var offsetWidth: CGFloat = 0 @@ -190,13 +191,12 @@ struct MenuDrawerView: View { } } .background(MailResourcesAsset.backgroundSecondaryColor.swiftUIColor.ignoresSafeArea()) - .environmentObject(mailboxManager) .environment(\.folderCellType, .link) .onAppear { viewModel.createMenuItems(bottomSheet: bottomSheet) } .sheet(isPresented: $viewModel.isShowingHelp) { - SheetView(mailboxManager: mailboxManager) { + SheetView { HelpView() } } diff --git a/Mail/Views/Menu Drawer/MenuHeaderView.swift b/Mail/Views/Menu Drawer/MenuHeaderView.swift index e54afb9b6..bd141013b 100644 --- a/Mail/Views/Menu Drawer/MenuHeaderView.swift +++ b/Mail/Views/Menu Drawer/MenuHeaderView.swift @@ -53,7 +53,7 @@ struct MenuHeaderView: View { .clipped() .shadow(color: MailResourcesAsset.menuDrawerShadowColor.swiftUIColor, radius: 1, x: 0, y: 2) .sheet(isPresented: $isShowingSettings) { - SheetView(mailboxManager: mailboxManager) { + SheetView { SettingsView() } } diff --git a/Mail/Views/Search/SearchThreadsSectionView.swift b/Mail/Views/Search/SearchThreadsSectionView.swift index a581a7754..688788f4e 100644 --- a/Mail/Views/Search/SearchThreadsSectionView.swift +++ b/Mail/Views/Search/SearchThreadsSectionView.swift @@ -38,28 +38,21 @@ struct SearchThreadsSectionView: View { editedMessageDraft: $editedMessageDraft ) }, label: { - ThreadCell(thread: thread, - mailboxManager: viewModel.mailboxManager, - density: threadDensity) + ThreadCell(thread: thread, density: threadDensity) }) } else { ZStack { NavigationLink(destination: { - ThreadView( - mailboxManager: viewModel.mailboxManager, - thread: thread - ) - .onAppear { - viewModel.selectedThread = thread - } + ThreadView(thread: thread) + .onAppear { + viewModel.selectedThread = thread + } }, label: { EmptyView() }) .opacity(0) - ThreadCell(thread: thread, - mailboxManager: viewModel.mailboxManager, - density: threadDensity) + ThreadCell(thread: thread, density: threadDensity) } } } diff --git a/Mail/Views/SheetView.swift b/Mail/Views/SheetView.swift index a67bcfcfd..912970b67 100644 --- a/Mail/Views/SheetView.swift +++ b/Mail/Views/SheetView.swift @@ -21,17 +21,9 @@ import MailResources import SwiftUI struct SheetView: View where Content: View { - @StateObject private var alert = GlobalAlert() - @Environment(\.dismiss) private var dismiss - let mailboxManager: MailboxManager - let content: Content - - init(mailboxManager: MailboxManager, @ViewBuilder _ content: () -> Content) { - self.mailboxManager = mailboxManager - self.content = content() - } + @ViewBuilder let content: Content var body: some View { NavigationView { @@ -42,29 +34,15 @@ struct SheetView: View where Content: View { Label(MailResourcesStrings.Localizable.buttonClose, systemImage: "xmark") }) } - .customAlert(isPresented: $alert.isShowing) { - switch alert.state { - case let .createNewFolder(mode): - CreateFolderView(mailboxManager: mailboxManager, mode: mode) - case let .reportPhishing(message): - ReportPhishingView(mailboxManager: mailboxManager, message: message) - case let .reportDisplayProblem(message): - ReportDisplayProblemView(mailboxManager: mailboxManager, message: message) - case .none: - EmptyView() - } - } - .defaultAppStorage(.shared) .onReceive(NotificationCenter.default.publisher(for: Constants.dismissMoveSheetNotificationName)) { _ in dismiss() } - .environmentObject(alert) } } struct SheetView_Previews: PreviewProvider { static var previews: some View { - SheetView(mailboxManager: PreviewHelper.sampleMailboxManager) { + SheetView { EmptyView() } } diff --git a/Mail/Views/SplitView.swift b/Mail/Views/SplitView.swift index f1ee40d8d..70fa00756 100644 --- a/Mail/Views/SplitView.swift +++ b/Mail/Views/SplitView.swift @@ -34,7 +34,6 @@ class GlobalBottomSheet: DisplayedFloatingPanelState { class GlobalAlert: SheetState { enum State { - case createNewFolder(mode: CreateFolderView.Mode) case reportPhishing(message: Message) case reportDisplayProblem(message: Message) } @@ -51,7 +50,7 @@ public class SplitViewManager: ObservableObject { } struct SplitView: View { - @ObservedObject var mailboxManager: MailboxManager + var mailboxManager: MailboxManager @State var splitViewController: UISplitViewController? @StateObject private var navigationDrawerController = NavigationDrawerState() @@ -79,15 +78,12 @@ struct SplitView: View { if isCompact { ZStack { NavigationView { - ThreadListManagerView( - mailboxManager: mailboxManager, - isCompact: isCompact - ) - .accessibilityHidden(navigationDrawerController.isOpen) + ThreadListManagerView(isCompact: isCompact) + .accessibilityHidden(navigationDrawerController.isOpen) } .navigationViewStyle(.stack) - NavigationDrawer(mailboxManager: mailboxManager) + NavigationDrawer() } } else { NavigationView { @@ -97,10 +93,7 @@ struct SplitView: View { ) .navigationBarHidden(true) - ThreadListManagerView( - mailboxManager: mailboxManager, - isCompact: isCompact - ) + ThreadListManagerView(isCompact: isCompact) EmptyStateView.emptyThread(from: splitViewManager.selectedFolder) } @@ -111,9 +104,6 @@ struct SplitView: View { try await mailboxManager.folders() } } - .environmentObject(splitViewManager) - .environmentObject(navigationDrawerController) - .defaultAppStorage(.shared) .onAppear { AppDelegate.orientationLock = .all } @@ -139,15 +129,13 @@ struct SplitView: View { setupBehaviour(orientation: interfaceOrientation) splitViewController.preferredDisplayMode = .twoDisplaceSecondary } - .environmentObject(bottomSheet) - .environmentObject(alert) .floatingPanel(state: bottomSheet) { switch bottomSheet.state { case .getMoreStorage: MoreStorageView() case .restoreEmails: RestoreEmailsView(mailboxManager: mailboxManager) - case let .reportJunk(threadBottomSheet, target): + case .reportJunk(let threadBottomSheet, let target): ReportJunkView( mailboxManager: mailboxManager, target: target, @@ -161,16 +149,21 @@ struct SplitView: View { } .customAlert(isPresented: $alert.isShowing) { switch alert.state { - case let .createNewFolder(mode): - CreateFolderView(mailboxManager: mailboxManager, mode: mode) - case let .reportPhishing(message): - ReportPhishingView(mailboxManager: mailboxManager, message: message) - case let .reportDisplayProblem(message): - ReportDisplayProblemView(mailboxManager: mailboxManager, message: message) + case .reportPhishing(let message): + ReportPhishingView(message: message) + case .reportDisplayProblem(let message): + ReportDisplayProblemView(message: message) case .none: EmptyView() } } + .environment(\.realmConfiguration, mailboxManager.realmConfiguration) + .environmentObject(mailboxManager) + .environmentObject(splitViewManager) + .environmentObject(navigationDrawerController) + .environmentObject(bottomSheet) + .environmentObject(alert) + .defaultAppStorage(.shared) } private func setupBehaviour(orientation: UIInterfaceOrientation) { diff --git a/Mail/Views/Thread List/ThreadListCell.swift b/Mail/Views/Thread List/ThreadListCell.swift index 2eb0e1135..a95996504 100644 --- a/Mail/Views/Thread List/ThreadListCell.swift +++ b/Mail/Views/Thread List/ThreadListCell.swift @@ -55,8 +55,7 @@ struct ThreadListCell: View { var body: some View { ZStack { if !thread.shouldPresentAsDraft { - NavigationLink(destination: ThreadView(mailboxManager: viewModel.mailboxManager, - thread: thread, + NavigationLink(destination: ThreadView(thread: thread, onDismiss: { viewModel.selectedThread = nil }), isActive: $shouldNavigateToThreadList) { EmptyView() } .opacity(0) @@ -65,7 +64,6 @@ struct ThreadListCell: View { ThreadCell( thread: thread, - mailboxManager: viewModel.mailboxManager, density: threadDensity, isMultipleSelectionEnabled: multipleSelectionViewModel.isEnabled, isSelected: isSelected diff --git a/Mail/Views/Thread/MoveEmailView.swift b/Mail/Views/Thread/MoveEmailView.swift index cd1f92513..f2384bd2b 100644 --- a/Mail/Views/Thread/MoveEmailView.swift +++ b/Mail/Views/Thread/MoveEmailView.swift @@ -27,37 +27,25 @@ import SwiftUI struct MoveEmailView: View { typealias MoveHandler = (Folder) -> Void - @EnvironmentObject private var alert: GlobalAlert + @EnvironmentObject private var mailboxManager: MailboxManager - @ObservedResults(Folder.self) var folders + // swiftlint:disable empty_count + @ObservedResults(Folder.self, where: { $0.role != .draft && $0.parents.count == 0 && $0.toolType == nil }) var folders + @State private var isShowingCreateFolderAlert = false @LazyInjectService private var matomo: MatomoUtils - let mailboxManager: MailboxManager let currentFolderId: String? let moveHandler: MoveEmailView.MoveHandler - private var nestableFolderSorted = [NestableFolder]() - - init(mailboxManager: MailboxManager, from currentFolderId: String?, moveHandler: @escaping MoveEmailView.MoveHandler) { - self.mailboxManager = mailboxManager - self.currentFolderId = currentFolderId - self.moveHandler = moveHandler - - // swiftlint:disable empty_count - _folders = ObservedResults( - Folder.self, - configuration: AccountManager.instance.currentMailboxManager?.realmConfiguration - ) { $0.role != .draft && $0.parents.count == 0 && $0.toolType == nil } - nestableFolderSorted = NestableFolder.createFoldersHierarchy(from: Array(folders)) - } - var body: some View { ScrollView { LazyVStack(spacing: 0) { - listOfFolders(nestableFolders: nestableFolderSorted.filter { $0.content.role != nil }) + listOfFolders(nestableFolders: NestableFolder + .createFoldersHierarchy(from: Array(folders.where { $0.role != nil }))) IKDivider(horizontalPadding: 8) - listOfFolders(nestableFolders: nestableFolderSorted.filter { $0.content.role == nil }) + listOfFolders(nestableFolders: NestableFolder + .createFoldersHierarchy(from: Array(folders.where { $0.role == nil }))) } } .navigationTitle(MailResourcesStrings.Localizable.actionMove) @@ -66,7 +54,7 @@ struct MoveEmailView: View { ToolbarItem(placement: .navigationBarTrailing) { Button { matomo.track(eventWithCategory: .createFolder, name: "fromMove") - alert.state = .createNewFolder(mode: .move(moveHandler: moveHandler)) + isShowingCreateFolderAlert.toggle() } label: { MailResourcesAsset.folderAdd.swiftUIImage } @@ -74,6 +62,9 @@ struct MoveEmailView: View { } .environment(\.folderCellType, .indicator) .matomoView(view: ["MoveEmailView"]) + .customAlert(isPresented: $isShowingCreateFolderAlert) { + CreateFolderView(mode: .move(moveHandler: moveHandler)) + } } private func listOfFolders(nestableFolders: [NestableFolder]) -> some View { @@ -87,15 +78,17 @@ struct MoveEmailView: View { } extension MoveEmailView { - static func sheetView(mailboxManager: MailboxManager, from folderId: String?, moveHandler: @escaping MoveEmailView.MoveHandler) -> some View { - SheetView(mailboxManager: mailboxManager) { - MoveEmailView(mailboxManager: mailboxManager, from: folderId, moveHandler: moveHandler) + static func sheetView(mailboxManager: MailboxManager, from folderId: String?, + moveHandler: @escaping MoveEmailView.MoveHandler) -> some View { + SheetView { + MoveEmailView(currentFolderId: folderId, moveHandler: moveHandler) } } } struct MoveMessageView_Previews: PreviewProvider { static var previews: some View { - MoveEmailView(mailboxManager: PreviewHelper.sampleMailboxManager, from: nil) { _ in /* Preview */ } + MoveEmailView(currentFolderId: nil) { _ in /* Preview */ } + .environmentObject(PreviewHelper.sampleMailboxManager) } } diff --git a/Mail/Views/Thread/ThreadView.swift b/Mail/Views/Thread/ThreadView.swift index 14574d744..d8427c718 100644 --- a/Mail/Views/Thread/ThreadView.swift +++ b/Mail/Views/Thread/ThreadView.swift @@ -41,10 +41,10 @@ class MessageBottomSheet: DisplayedFloatingPanelState struct ThreadView: View { @EnvironmentObject private var splitViewManager: SplitViewManager + @EnvironmentObject private var mailboxManager: MailboxManager - let mailboxManager: MailboxManager @ObservedRealmObject var thread: Thread - var onDismiss: (() -> Void)? = nil + var onDismiss: (() -> Void)? @State private var headerHeight: CGFloat = 0 @State private var displayNavigationTitle = false @@ -259,9 +259,7 @@ extension Label { struct ThreadView_Previews: PreviewProvider { static var previews: some View { - ThreadView( - mailboxManager: PreviewHelper.sampleMailboxManager, - thread: PreviewHelper.sampleThread - ) + ThreadView(thread: PreviewHelper.sampleThread) + .environmentObject(PreviewHelper.sampleMailboxManager) } } diff --git a/Mail/Views/ThreadListManagerView.swift b/Mail/Views/ThreadListManagerView.swift index fb7939d9a..9a872e0fb 100644 --- a/Mail/Views/ThreadListManagerView.swift +++ b/Mail/Views/ThreadListManagerView.swift @@ -23,21 +23,20 @@ import SwiftUI struct ThreadListManagerView: View { @EnvironmentObject var splitViewManager: SplitViewManager + @EnvironmentObject var mailboxManager: MailboxManager + @State private var shouldNavigateToNotificationThread = false @State private var tappedNotificationThread: Thread? @State private var editedMessageDraft: Draft? @State private var messageReply: MessageReply? - var mailboxManager: MailboxManager - let isCompact: Bool var body: some View { ZStack { NavigationLink(isActive: $shouldNavigateToNotificationThread) { if let tappedNotificationThread { - ThreadView(mailboxManager: mailboxManager, - thread: tappedNotificationThread) + ThreadView(thread: tappedNotificationThread) } } label: { EmptyView() @@ -90,8 +89,8 @@ struct ThreadListManagerView: View { struct ThreadListManagerView_Previews: PreviewProvider { static var previews: some View { ThreadListManagerView( - mailboxManager: PreviewHelper.sampleMailboxManager, isCompact: false ) + .environmentObject(PreviewHelper.sampleMailboxManager) } }