diff --git a/Mail/Components/ToolbarButton.swift b/Mail/Components/ToolbarButton.swift index fa2976f77..31f9a345f 100644 --- a/Mail/Components/ToolbarButton.swift +++ b/Mail/Components/ToolbarButton.swift @@ -25,13 +25,11 @@ struct ToolbarButton: View { let text: String let icon: Image - let width: CGFloat? let action: () -> Void - init(text: String, icon: Image, width: CGFloat? = nil, action: @escaping () -> Void) { + init(text: String, icon: Image, action: @escaping () -> Void) { self.text = text self.icon = icon - self.width = width self.action = action } @@ -42,13 +40,10 @@ struct ToolbarButton: View { .textStyle(MailTextStyle.labelMediumAccent) } icon: { icon - .resizable() - .scaledToFit() - .frame(width: 22, height: 22) } .dynamicLabelStyle(sizeClass: sizeClass ?? .regular) } - .frame(width: width, alignment: .center) + .frame(maxWidth: .infinity) } } diff --git a/Mail/Views/Thread List/ThreadListView.swift b/Mail/Views/Thread List/ThreadListView.swift index 935d8d996..2d0d07376 100644 --- a/Mail/Views/Thread List/ThreadListView.swift +++ b/Mail/Views/Thread List/ThreadListView.swift @@ -300,110 +300,105 @@ private struct ThreadListToolbar: ViewModifier { var selectAll: () -> Void func body(content: Content) -> some View { - GeometryReader { reader in - content - .toolbar { - ToolbarItemGroup(placement: .navigationBarLeading) { - if multipleSelectionViewModel.isEnabled { - Button(MailResourcesStrings.Localizable.buttonCancel) { - matomo.track(eventWithCategory: .multiSelection, name: "cancel") - withAnimation { - multipleSelectionViewModel.isEnabled = false - } - } - } else { - if isCompact { - Button { - matomo.track(eventWithCategory: .menuDrawer, name: "openByButton") - navigationDrawerState.open() - } label: { - MailResourcesAsset.burger.swiftUIImage - .resizable() - .scaledToFit() - .frame(width: UIConstants.navbarIconSize, height: UIConstants.navbarIconSize) - } - .accessibilityLabel(MailResourcesStrings.Localizable.contentDescriptionButtonMenu) + content + .toolbar { + ToolbarItemGroup(placement: .navigationBarLeading) { + if multipleSelectionViewModel.isEnabled { + Button(MailResourcesStrings.Localizable.buttonCancel) { + matomo.track(eventWithCategory: .multiSelection, name: "cancel") + withAnimation { + multipleSelectionViewModel.isEnabled = false } } - } - - ToolbarItem(placement: .principal) { - if !multipleSelectionViewModel.isEnabled { - Text(splitViewManager.selectedFolder?.localizedName ?? "") - .textStyle(.header1) - .frame(maxWidth: .infinity, alignment: .leading) - } - } - - ToolbarItemGroup(placement: .navigationBarTrailing) { - if multipleSelectionViewModel.isEnabled { - Button(multipleSelectionViewModel.selectedItems.count == viewModel.filteredThreads.count - ? MailResourcesStrings.Localizable.buttonUnselectAll - : MailResourcesStrings.Localizable.buttonSelectAll) { - selectAll() - } - .animation(nil, value: multipleSelectionViewModel.selectedItems) - } else { + } else { + if isCompact { Button { - splitViewManager.showSearch = true + matomo.track(eventWithCategory: .menuDrawer, name: "openByButton") + navigationDrawerState.open() } label: { - MailResourcesAsset.search.swiftUIImage + MailResourcesAsset.burger.swiftUIImage .resizable() .scaledToFit() .frame(width: UIConstants.navbarIconSize, height: UIConstants.navbarIconSize) } + .accessibilityLabel(MailResourcesStrings.Localizable.contentDescriptionButtonMenu) + } + } + } - Button { - isShowingSwitchAccount.toggle() - } label: { - AvatarView(avatarDisplayable: AccountManager.instance.currentAccount.user) + ToolbarItem(placement: .principal) { + if !multipleSelectionViewModel.isEnabled { + Text(splitViewManager.selectedFolder?.localizedName ?? "") + .textStyle(.header1) + .frame(maxWidth: .infinity, alignment: .leading) + } + } + + ToolbarItemGroup(placement: .navigationBarTrailing) { + if multipleSelectionViewModel.isEnabled { + Button(multipleSelectionViewModel.selectedItems.count == viewModel.filteredThreads.count + ? MailResourcesStrings.Localizable.buttonUnselectAll + : MailResourcesStrings.Localizable.buttonSelectAll) { + selectAll() } - .accessibilityLabel(MailResourcesStrings.Localizable.contentDescriptionUserAvatar) + .animation(nil, value: multipleSelectionViewModel.selectedItems) + } else { + Button { + splitViewManager.showSearch = true + } label: { + MailResourcesAsset.search.swiftUIImage + .resizable() + .scaledToFit() + .frame(width: UIConstants.navbarIconSize, height: UIConstants.navbarIconSize) } + + Button { + isShowingSwitchAccount.toggle() + } label: { + AvatarView(avatarDisplayable: AccountManager.instance.currentAccount.user) + } + .accessibilityLabel(MailResourcesStrings.Localizable.contentDescriptionUserAvatar) } + } - ToolbarItemGroup(placement: .bottomBar) { - if multipleSelectionViewModel.isEnabled { - HStack(spacing: 0) { - ForEach(multipleSelectionViewModel.toolbarActions) { action in - ToolbarButton( - text: action.shortTitle ?? action.title, - icon: action.icon, - width: reader.size.width / 5 - ) { - Task { - await tryOrDisplayError { - try await multipleSelectionViewModel.didTap( - action: action, - flushAlert: $flushAlert - ) - } + ToolbarItemGroup(placement: .bottomBar) { + if multipleSelectionViewModel.isEnabled { + HStack(spacing: 0) { + ForEach(multipleSelectionViewModel.toolbarActions) { action in + ToolbarButton( + text: action.shortTitle ?? action.title, + icon: action.icon) { + Task { + await tryOrDisplayError { + try await multipleSelectionViewModel.didTap( + action: action, + flushAlert: $flushAlert + ) } } - .disabled(action == .archive && splitViewManager.selectedFolder?.role == .archive) } + .disabled(action == .archive && splitViewManager.selectedFolder?.role == .archive) + } - ToolbarButton(text: MailResourcesStrings.Localizable.buttonMore, - icon: MailResourcesAsset.plusActions.swiftUIImage, - width: reader.size.width / 5) { - bottomSheet - .open(state: .actions(.threads(Array(multipleSelectionViewModel.selectedItems), true))) - } + ToolbarButton(text: MailResourcesStrings.Localizable.buttonMore, + icon: MailResourcesAsset.plusActions.swiftUIImage) { + bottomSheet + .open(state: .actions(.threads(Array(multipleSelectionViewModel.selectedItems), true))) } - .disabled(multipleSelectionViewModel.selectedItems.isEmpty) } + .disabled(multipleSelectionViewModel.selectedItems.isEmpty) } } - .navigationTitle( - multipleSelectionViewModel.isEnabled - ? MailResourcesStrings.Localizable.multipleSelectionCount(multipleSelectionViewModel.selectedItems.count) - : "" - ) - .navigationBarTitleDisplayMode(.inline) - } - .sheet(isPresented: $isShowingSwitchAccount) { - AccountView(mailboxes: AccountManager.instance.mailboxes) - } + } + .navigationTitle( + multipleSelectionViewModel.isEnabled + ? MailResourcesStrings.Localizable.multipleSelectionCount(multipleSelectionViewModel.selectedItems.count) + : "" + ) + .navigationBarTitleDisplayMode(.inline) + .sheet(isPresented: $isShowingSwitchAccount) { + AccountView(mailboxes: AccountManager.instance.mailboxes) + } } }