Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: move UI constants to UIConstants enum #668

Merged
merged 1 commit into from
Mar 31, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Mail/Components/CheckboxView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ struct CheckboxView: View {

init(isSelected: Bool, density: ThreadDensity) {
self.isSelected = isSelected
size = density == .large ? Constants.checkboxLargeSize : Constants.checkboxSize
size = density == .large ? UIConstants.checkboxLargeSize : UIConstants.checkboxSize
}

var body: some View {
Expand All @@ -38,7 +38,7 @@ struct CheckboxView: View {
.frame(width: size, height: size)
MailResourcesAsset.check.swiftUIImage
.foregroundColor(accentColor.onAccent.swiftUIColor)
.frame(height: Constants.checkmarkSize)
.frame(height: UIConstants.checkmarkSize)
.opacity(isSelected ? 1 : 0)
}
}
Expand Down
2 changes: 1 addition & 1 deletion Mail/Components/IKDivider.swift
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ struct IKDivider: View {
Divider()
.frame(height: 1)
.overlay(MailResourcesAsset.elementsColor.swiftUIColor)
.padding(.horizontal, withPadding ? Constants.menuDrawerHorizontalPadding : 0)
.padding(.horizontal, withPadding ? UIConstants.menuDrawerHorizontalPadding : 0)
.padding(.bottom, withPadding ? 8 : 0)
}
}
Expand Down
2 changes: 1 addition & 1 deletion Mail/Components/MailButton.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ struct MailButtonFullWidthKey: EnvironmentKey {
}

struct MailButtonIconSizeKey: EnvironmentKey {
static var defaultValue: CGFloat = Constants.buttonsIconSize
static var defaultValue: CGFloat = UIConstants.buttonsIconSize
}

struct MailButtonLoadingKey: EnvironmentKey {
Expand Down
2 changes: 1 addition & 1 deletion Mail/Components/MailButtonStyle.swift
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ struct MailButtonStyle: ButtonStyle {
.padding(.vertical, 18)
.padding(.horizontal, 20)
.background(largeBackground(configuration: configuration))
.clipShape(RoundedRectangle(cornerRadius: Constants.buttonsRadius))
.clipShape(RoundedRectangle(cornerRadius: UIConstants.buttonsRadius))
.brightness(largeBrightness(configuration: configuration))
}

Expand Down
2 changes: 1 addition & 1 deletion Mail/Components/ThreadCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ struct ThreadCell: View {
let isSelected: Bool

private var checkboxSize: CGFloat {
density == .large ? Constants.checkboxLargeSize : Constants.checkboxSize
density == .large ? UIConstants.checkboxLargeSize : UIConstants.checkboxSize
}

init(
Expand Down
2 changes: 1 addition & 1 deletion Mail/Components/UnreadIndicatorView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ struct UnreadIndicatorView: View {
let hidden: Bool
var body: some View {
Circle()
.frame(width: Constants.unreadIconSize, height: Constants.unreadIconSize)
.frame(width: UIConstants.unreadIconSize, height: UIConstants.unreadIconSize)
.foregroundColor(hidden ? .clear : .accentColor)
}
}
Expand Down
4 changes: 2 additions & 2 deletions Mail/LockedAppView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,14 @@ struct LockedAppView: View {
MailResourcesAsset.logoText.swiftUIImage
.resizable()
.scaledToFit()
.frame(height: Constants.onboardingLogoHeight)
.frame(height: UIConstants.onboardingLogoHeight)

Spacer()

MailButton(label: MailResourcesStrings.Localizable.buttonUnlock, action: unlockApp)
.mailButtonFullWidth(true)
}
.padding(.top, Constants.onboardingLogoPaddingTop)
.padding(.top, UIConstants.onboardingLogoPaddingTop)
.padding(.bottom, 40)
}
.padding(.horizontal, 24)
Expand Down
2 changes: 1 addition & 1 deletion Mail/Utils/FloatingActionButtonModifier.swift
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ struct FloatingActionButtonModifier: ViewModifier {
if isEnabled {
MailButton(icon: icon, label: title, action: action)
.padding(.trailing, 24)
.padding(.bottom, Constants.floatingButtonBottomPadding)
.padding(.bottom, UIConstants.floatingButtonBottomPadding)
}
}
.ignoresSafeArea(.keyboard)
Expand Down
2 changes: 1 addition & 1 deletion Mail/Views/Bottom sheets/MoreStorageView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ struct MoreStorageView: View {
primaryButtonEnabled: false,
primaryButtonAction: getMoreStorage)
}
.padding(.horizontal, Constants.bottomSheetHorizontalPadding)
.padding(.horizontal, UIConstants.bottomSheetHorizontalPadding)
.matomoView(view: [MatomoUtils.View.bottomSheet.displayName, "MoreStorageView"])
}

Expand Down
2 changes: 1 addition & 1 deletion Mail/Views/Bottom sheets/ReportDisplayProblemView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ struct ReportDisplayProblemView: View {
primaryButtonAction: report)
.padding(.top, 8)
}
.padding(.horizontal, Constants.bottomSheetHorizontalPadding)
.padding(.horizontal, UIConstants.bottomSheetHorizontalPadding)
.matomoView(view: [MatomoUtils.View.bottomSheet.displayName, "ReportDisplayProblemView"])
}

Expand Down
2 changes: 1 addition & 1 deletion Mail/Views/Bottom sheets/RestoreEmailsView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ struct RestoreEmailsView: View {
primaryButtonEnabled: !availableDates.isEmpty,
primaryButtonAction: restoreEmails)
}
.padding(.horizontal, Constants.bottomSheetHorizontalPadding)
.padding(.horizontal, UIConstants.bottomSheetHorizontalPadding)
.task {
await tryOrDisplayError {
let backupsList = try await mailboxManager.apiFetcher.listBackups(mailbox: mailboxManager.mailbox).backups
Expand Down
2 changes: 1 addition & 1 deletion Mail/Views/EmptyStateView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ struct EmptyStateView: View {
.multilineTextAlignment(.center)
}
.padding(.horizontal, 48)
.padding(.bottom, withFABPadding ? Constants.floatingButtonBottomPadding + 56 : 0)
.padding(.bottom, withFABPadding ? UIConstants.floatingButtonBottomPadding + 56 : 0)
.frame(maxWidth: .infinity, maxHeight: .infinity)
.matomoView(view: [MatomoUtils.View.threadListView.displayName, "Empty\(matomoName)View"])
}
Expand Down
8 changes: 4 additions & 4 deletions Mail/Views/Menu Drawer/Folders/FolderCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ struct FolderCellContent: View {

init(folder: Folder, level: Int, isCurrentFolder: Bool) {
self.folder = folder
self.level = min(level, Constants.menuDrawerMaximumSubfolderLevel)
self.level = min(level, UIConstants.menuDrawerMaximumSubfolderLevel)
self.isCurrentFolder = isCurrentFolder
}

Expand All @@ -139,7 +139,7 @@ struct FolderCellContent: View {
}

var body: some View {
HStack(spacing: Constants.menuDrawerHorizontalItemSpacing) {
HStack(spacing: UIConstants.menuDrawerHorizontalItemSpacing) {
folder.icon
.resizable()
.scaledToFit()
Expand All @@ -155,8 +155,8 @@ struct FolderCellContent: View {
accessory
}
.padding(.vertical, 14)
.padding(.horizontal, Constants.menuDrawerHorizontalPadding)
.padding(.leading, Constants.menuDrawerSubFolderPadding * CGFloat(level))
.padding(.horizontal, UIConstants.menuDrawerHorizontalPadding)
.padding(.leading, UIConstants.menuDrawerSubFolderPadding * CGFloat(level))
.background(background)
}

Expand Down
4 changes: 2 additions & 2 deletions Mail/Views/Menu Drawer/Folders/UserFoldersListView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,11 @@ struct UserFoldersListView: View {
}
}
}
.padding(.leading, Constants.menuDrawerHorizontalPadding)
.padding(.leading, UIConstants.menuDrawerHorizontalPadding)
.padding(.trailing, 18)

if isExpanded {
Spacer(minLength: Constants.menuDrawerVerticalPadding)
Spacer(minLength: UIConstants.menuDrawerVerticalPadding)

if folders.isEmpty {
Text(MailResourcesStrings.Localizable.noFolderTitle)
Expand Down
2 changes: 1 addition & 1 deletion Mail/Views/Menu Drawer/Items/MenuDrawerItemCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ struct MenuDrawerItemCell: View {
matomo.track(eventWithCategory: .menuDrawer, name: content.matomoName)
content.action()
} label: {
HStack(spacing: Constants.menuDrawerHorizontalItemSpacing) {
HStack(spacing: UIConstants.menuDrawerHorizontalItemSpacing) {
content.icon.swiftUIImage
.resizable()
.scaledToFit()
Expand Down
2 changes: 1 addition & 1 deletion Mail/Views/Menu Drawer/Items/MenuDrawerItemsListView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ struct MenuDrawerItemsListView: View {
}
}
.padding(.bottom, 16)
.padding(.horizontal, Constants.menuDrawerHorizontalPadding)
.padding(.horizontal, UIConstants.menuDrawerHorizontalPadding)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ struct MailboxesManagementButtonView: View {
}
}
.padding(.vertical, 10)
.padding(.horizontal, Constants.menuDrawerHorizontalPadding)
.padding(.horizontal, UIConstants.menuDrawerHorizontalPadding)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ struct MailboxesManagementView: View {
}
}
.environment(\.isEnabled, true)
.padding(.vertical, Constants.menuDrawerVerticalPadding)
.padding(.horizontal, Constants.menuDrawerHorizontalPadding)
.padding(.vertical, UIConstants.menuDrawerVerticalPadding)
.padding(.horizontal, UIConstants.menuDrawerHorizontalPadding)
}
.disabled(otherMailboxes.isEmpty)

Expand Down
2 changes: 1 addition & 1 deletion Mail/Views/Menu Drawer/MailboxQuotaView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ struct MailboxQuotaView: View {
Spacer()
}
.padding(.vertical, 19)
.padding(.horizontal, Constants.menuDrawerHorizontalPadding)
.padding(.horizontal, UIConstants.menuDrawerHorizontalPadding)
}
}

Expand Down
6 changes: 3 additions & 3 deletions Mail/Views/NoMailboxView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@ struct NoMailboxView: View {
MailResourcesAsset.logoText.swiftUIImage
.resizable()
.scaledToFit()
.frame(height: Constants.onboardingLogoHeight)
.padding(.top, Constants.onboardingLogoPaddingTop)
.frame(height: UIConstants.onboardingLogoHeight)
.padding(.top, UIConstants.onboardingLogoPaddingTop)
}

VStack(spacing: 24) {
Expand All @@ -53,7 +53,7 @@ struct NoMailboxView: View {
}
.mailButtonStyle(.link)
}
.frame(height: Constants.onboardingButtonHeight + Constants.onboardingBottomButtonPadding, alignment: .top)
.frame(height: UIConstants.onboardingButtonHeight + UIConstants.onboardingBottomButtonPadding, alignment: .top)
.padding(.horizontal, 24)
}
.matomoView(view: ["NoMailboxView"])
Expand Down
8 changes: 4 additions & 4 deletions Mail/Views/Onboarding/OnboardingView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -187,8 +187,8 @@ struct OnboardingView: View {
MailResourcesAsset.logoText.swiftUIImage
.resizable()
.scaledToFit()
.frame(height: Constants.onboardingLogoHeight)
.padding(.top, Constants.onboardingLogoPaddingTop)
.frame(height: UIConstants.onboardingLogoHeight)
.padding(.top, UIConstants.onboardingLogoPaddingTop)
}

VStack(spacing: 24) {
Expand All @@ -211,10 +211,10 @@ struct OnboardingView: View {
selection += 1
}
}
.mailButtonIconSize(Constants.onboardingArrowIconSize)
.mailButtonIconSize(UIConstants.onboardingArrowIconSize)
}
}
.frame(height: Constants.onboardingButtonHeight + Constants.onboardingBottomButtonPadding, alignment: .top)
.frame(height: UIConstants.onboardingButtonHeight + UIConstants.onboardingBottomButtonPadding, alignment: .top)
.padding(.horizontal, 24)
}
.overlay(alignment: .topLeading) {
Expand Down
2 changes: 1 addition & 1 deletion Mail/Views/Onboarding/SlideView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ struct SlideView: View {
.ignoresSafeArea(edges: .top)

VStack(spacing: 0) {
Spacer(minLength: Constants.onboardingLogoHeight + Constants.onboardingVerticalTopPadding)
Spacer(minLength: UIConstants.onboardingLogoHeight + UIConstants.onboardingVerticalTopPadding)

Group {
if let asset = slide.asset {
Expand Down
4 changes: 2 additions & 2 deletions Mail/Views/Thread List/ThreadListView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,7 @@ private struct ThreadListToolbar: ViewModifier {
MailResourcesAsset.burger.swiftUIImage
.resizable()
.scaledToFit()
.frame(width: Constants.navbarIconSize, height: Constants.navbarIconSize)
.frame(width: UIConstants.navbarIconSize, height: UIConstants.navbarIconSize)
}
}
}
Expand Down Expand Up @@ -346,7 +346,7 @@ private struct ThreadListToolbar: ViewModifier {
MailResourcesAsset.search.swiftUIImage
.resizable()
.scaledToFit()
.frame(width: Constants.navbarIconSize, height: Constants.navbarIconSize)
.frame(width: UIConstants.navbarIconSize, height: UIConstants.navbarIconSize)
}

Button {
Expand Down
62 changes: 61 additions & 1 deletion MailCore/UI/UIConstants.swift
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,41 @@ import Foundation
import MailResources
import UIKit

public enum BarAppearanceConstants {
public static let threadViewNavigationBarAppearance: UINavigationBarAppearance = {
let navigationBarAppearance = UINavigationBarAppearance()
navigationBarAppearance.configureWithTransparentBackground()
navigationBarAppearance.backgroundColor = MailResourcesAsset.backgroundColor.color
navigationBarAppearance.shadowColor = MailResourcesAsset.backgroundColor.color
return navigationBarAppearance
}()

public static let threadViewNavigationBarScrolledAppearance: UINavigationBarAppearance = {
let navigationBarAppearance = UINavigationBarAppearance()
navigationBarAppearance.configureWithDefaultBackground()
navigationBarAppearance.backgroundColor = MailResourcesAsset.backgroundTabBarColor.color
return navigationBarAppearance
}()

public static let threadListNavigationBarAppearance: UINavigationBarAppearance = {
let navigationBarAppearance = UINavigationBarAppearance()
navigationBarAppearance.configureWithTransparentBackground()
navigationBarAppearance.backgroundColor = UserDefaults.shared.accentColor.navBarBackground.color
navigationBarAppearance.largeTitleTextAttributes = [
.foregroundColor: MailResourcesAsset.textPrimaryColor.color,
.font: UIFont.systemFont(ofSize: 22, weight: .semibold)
]
return navigationBarAppearance
}()

public static let threadViewToolbarAppearance: UIToolbarAppearance = {
let toolbarAppearance = UIToolbarAppearance()
toolbarAppearance.configureWithOpaqueBackground()
toolbarAppearance.backgroundColor = MailResourcesAsset.backgroundTabBarColor.color
return toolbarAppearance
}()
}

public enum UIConstants {
public static let avatarColors = [
MailResourcesAsset.yellowColor,
Expand All @@ -33,5 +68,30 @@ public enum UIConstants {
MailResourcesAsset.princeColor
].map(\.color)

// TODO: Move the UI constants to this file
public static let navbarIconSize: CGFloat = 23

public static let onboardingLogoPaddingTop: CGFloat = 28
public static let onboardingLogoHeight: CGFloat = 54
public static let onboardingButtonHeight: CGFloat = 100
public static let onboardingVerticalTopPadding: CGFloat = 48
public static let onboardingBottomButtonPadding: CGFloat = 32
public static let onboardingArrowIconSize: CGFloat = 24

public static let menuDrawerHorizontalPadding: CGFloat = 20
public static let menuDrawerVerticalPadding: CGFloat = 12
public static let menuDrawerSubFolderPadding: CGFloat = 15
public static let menuDrawerHorizontalItemSpacing: CGFloat = 16
public static let menuDrawerMaximumSubfolderLevel = 2

public static let floatingButtonBottomPadding: CGFloat = 24

public static let unreadIconSize: CGFloat = 8
public static let checkboxSize: CGFloat = 32
public static let checkmarkSize: CGFloat = 14
public static let checkboxLargeSize: CGFloat = 40

public static let buttonsRadius: CGFloat = 16
public static let buttonsIconSize: CGFloat = 16

public static let bottomSheetHorizontalPadding: CGFloat = 24
}
Loading