From 1ea43b563ad09177a3df6627c893cbf3d910c1b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20Coye=20de=20Brune=CC=81lis?= Date: Thu, 23 Nov 2023 14:09:15 +0100 Subject: [PATCH 1/3] fix: Open system preferences on macOS during calendar onboarding --- .../Sync Profile/SyncInstallProfileTutorialView.swift | 9 ++++++++- MailCore/Utils/Constants.swift | 5 +++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Mail/Views/Sync Profile/SyncInstallProfileTutorialView.swift b/Mail/Views/Sync Profile/SyncInstallProfileTutorialView.swift index 392cef402..187c9decb 100644 --- a/Mail/Views/Sync Profile/SyncInstallProfileTutorialView.swift +++ b/Mail/Views/Sync Profile/SyncInstallProfileTutorialView.swift @@ -103,7 +103,14 @@ struct SyncInstallProfileTutorialView: View { VStack { MailButton(label: MailResourcesStrings.Localizable.buttonGoToSettings) { matomo.track(eventWithCategory: .syncAutoConfig, name: "openSettings") - openURL(URL(string: "App-prefs:")!) + @InjectService var platformDetector: PlatformDetectable + let url: URL + if platformDetector.isMac { + url = DeeplinkConstants.macProfiles + } else { + url = DeeplinkConstants.iosPreferences + } + openURL(url) } .mailButtonFullWidth(true) if userCameBackFromSettings { diff --git a/MailCore/Utils/Constants.swift b/MailCore/Utils/Constants.swift index 81c23e768..29e4bc787 100644 --- a/MailCore/Utils/Constants.swift +++ b/MailCore/Utils/Constants.swift @@ -21,6 +21,11 @@ import MailResources import SwiftSoup import SwiftUI +public enum DeeplinkConstants { + public static let macProfiles = URL(string: "x-apple.systempreferences:com.apple.preference.security")! + public static let iosPreferences = URL(string: "App-prefs:")! +} + public struct URLConstants { public static let testFlight = URLConstants(urlString: "https://testflight.apple.com/join/t8dXx60N") public static let appStore = URLConstants(urlString: "https://apps.apple.com/app/infomaniak-mail/id1622596573") From da9d4a33332a4def532daa1c0008f3b69e4fdd78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20Coye=20de=20Brune=CC=81lis?= Date: Thu, 23 Nov 2023 14:14:23 +0100 Subject: [PATCH 2/3] refactor: Use .isMac everywhere --- Mail/Views/SplitView.swift | 6 +++--- Mail/Views/Thread List/ThreadListCellContextMenu.swift | 2 +- MailCore/Utils/Model/Realm/RealmAccessible.swift | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Mail/Views/SplitView.swift b/Mail/Views/SplitView.swift index 9b9b67d61..9a6ed4864 100644 --- a/Mail/Views/SplitView.swift +++ b/Mail/Views/SplitView.swift @@ -35,7 +35,7 @@ public class SplitViewManager: ObservableObject { var splitViewController: UISplitViewController? func adaptToProminentThreadView() { - guard !platformDetector.isMacCatalyst, !platformDetector.isiOSAppOnMac else { + guard !platformDetector.isMac else { return } @@ -89,7 +89,7 @@ struct SplitView: View { } else { NavigationView { MenuDrawerView() - .navigationBarHidden(!(platformDetector.isMacCatalyst || platformDetector.isiOSAppOnMac)) + .navigationBarHidden(!platformDetector.isMac) ThreadListManagerView() @@ -176,7 +176,7 @@ struct SplitView: View { } private func setupBehaviour(orientation: UIInterfaceOrientation) { - if platformDetector.isMacCatalyst || platformDetector.isiOSAppOnMac { + if platformDetector.isMac { splitViewController?.preferredSplitBehavior = .tile splitViewController?.preferredDisplayMode = .twoBesideSecondary splitViewController?.presentsWithGesture = false diff --git a/Mail/Views/Thread List/ThreadListCellContextMenu.swift b/Mail/Views/Thread List/ThreadListCellContextMenu.swift index fce3ad8d4..06b949efe 100644 --- a/Mail/Views/Thread List/ThreadListCellContextMenu.swift +++ b/Mail/Views/Thread List/ThreadListCellContextMenu.swift @@ -36,7 +36,7 @@ struct ThreadListCellContextMenu: ViewModifier { let thread: Thread private var actions: [Action] { - return (platformDetector.isMacCatalyst || platformDetector.isiOSAppOnMac) ? Action.rightClickActions : [] + return platformDetector.isMac ? Action.rightClickActions : [] } func body(content: Content) -> some View { diff --git a/MailCore/Utils/Model/Realm/RealmAccessible.swift b/MailCore/Utils/Model/Realm/RealmAccessible.swift index 3b08512ad..0567bdc30 100644 --- a/MailCore/Utils/Model/Realm/RealmAccessible.swift +++ b/MailCore/Utils/Model/Realm/RealmAccessible.swift @@ -46,7 +46,7 @@ extension RealmAccessible { Logging.reportRealmOpeningError(error, realmConfiguration: realmConfiguration, afterRetry: !canRetry) @InjectService var platformDetector: PlatformDetectable - let isOnMacContext = (platformDetector.isMacCatalyst || platformDetector.isiOSAppOnMac) + let isOnMacContext = platformDetector.isMac guard isOnMacContext else { // Delete configuration for iOS / iPadOS in debug From f074d95b88175c94dda9b91195a0c477903e1de9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20Coye=20de=20Brune=CC=81lis?= Date: Thu, 23 Nov 2023 14:19:32 +0100 Subject: [PATCH 3/3] chore: PR Feedback --- Mail/Views/Sync Profile/SyncInstallProfileTutorialView.swift | 2 +- MailCore/Utils/Constants.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Mail/Views/Sync Profile/SyncInstallProfileTutorialView.swift b/Mail/Views/Sync Profile/SyncInstallProfileTutorialView.swift index 187c9decb..0ee92b45f 100644 --- a/Mail/Views/Sync Profile/SyncInstallProfileTutorialView.swift +++ b/Mail/Views/Sync Profile/SyncInstallProfileTutorialView.swift @@ -106,7 +106,7 @@ struct SyncInstallProfileTutorialView: View { @InjectService var platformDetector: PlatformDetectable let url: URL if platformDetector.isMac { - url = DeeplinkConstants.macProfiles + url = DeeplinkConstants.macSecurityAndPrivacy } else { url = DeeplinkConstants.iosPreferences } diff --git a/MailCore/Utils/Constants.swift b/MailCore/Utils/Constants.swift index 29e4bc787..97b9f6b8c 100644 --- a/MailCore/Utils/Constants.swift +++ b/MailCore/Utils/Constants.swift @@ -22,7 +22,7 @@ import SwiftSoup import SwiftUI public enum DeeplinkConstants { - public static let macProfiles = URL(string: "x-apple.systempreferences:com.apple.preference.security")! + public static let macSecurityAndPrivacy = URL(string: "x-apple.systempreferences:com.apple.preference.security")! public static let iosPreferences = URL(string: "App-prefs:")! }