diff --git a/Tusker/Scenes/AuxiliarySceneDelegate.swift b/Tusker/Scenes/AuxiliarySceneDelegate.swift index 156f3b24..25ef592f 100644 --- a/Tusker/Scenes/AuxiliarySceneDelegate.swift +++ b/Tusker/Scenes/AuxiliarySceneDelegate.swift @@ -9,10 +9,14 @@ import UIKit import Pachyderm -class AuxiliarySceneDelegate: UIResponder, UIWindowSceneDelegate { +class AuxiliarySceneDelegate: UIResponder, UIWindowSceneDelegate, TuskerSceneDelegate { var window: UIWindow? + var rootViewController: TuskerRootViewController? { + window?.rootViewController as? TuskerRootViewController + } + private var launchActivity: NSUserActivity? func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { @@ -112,7 +116,6 @@ class AuxiliarySceneDelegate: UIResponder, UIWindowSceneDelegate { } @objc private func themePrefChanged() { - window?.overrideUserInterfaceStyle = Preferences.shared.theme - window?.tintColor = Preferences.shared.accentColor.color + applyAppearancePreferences() } } diff --git a/Tusker/Scenes/ComposeSceneDelegate.swift b/Tusker/Scenes/ComposeSceneDelegate.swift index 1abd3b7c..61f2de1c 100644 --- a/Tusker/Scenes/ComposeSceneDelegate.swift +++ b/Tusker/Scenes/ComposeSceneDelegate.swift @@ -9,10 +9,12 @@ import UIKit import Combine -class ComposeSceneDelegate: UIResponder, UIWindowSceneDelegate { +class ComposeSceneDelegate: UIResponder, UIWindowSceneDelegate, TuskerSceneDelegate { var window: UIWindow? + var rootViewController: TuskerRootViewController? { nil } + private var cancellables = Set() func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { @@ -100,8 +102,7 @@ class ComposeSceneDelegate: UIResponder, UIWindowSceneDelegate { } @objc private func themePrefChanged() { - window?.overrideUserInterfaceStyle = Preferences.shared.theme - window?.tintColor = Preferences.shared.accentColor.color + applyAppearancePreferences() } } diff --git a/Tusker/Scenes/MainSceneDelegate.swift b/Tusker/Scenes/MainSceneDelegate.swift index 68dfe452..a55bc5fb 100644 --- a/Tusker/Scenes/MainSceneDelegate.swift +++ b/Tusker/Scenes/MainSceneDelegate.swift @@ -243,13 +243,7 @@ class MainSceneDelegate: UIResponder, UIWindowSceneDelegate, TuskerSceneDelegate } @objc func themePrefChanged() { - guard let window else { return } - window.overrideUserInterfaceStyle = Preferences.shared.theme - window.tintColor = Preferences.shared.accentColor.color - let key = ["Controller", "Presentation", "root", "_"].reversed().joined() - if let rootPresentationController = window.value(forKey: key) as? UIPresentationController { - rootPresentationController.overrideTraitCollection = UITraitCollection(pureBlackDarkMode: Preferences.shared.pureBlackDarkMode) - } + applyAppearancePreferences() } func showAddAccount() { diff --git a/Tusker/Scenes/TuskerSceneDelegate.swift b/Tusker/Scenes/TuskerSceneDelegate.swift index e12e13fb..bbce571e 100644 --- a/Tusker/Scenes/TuskerSceneDelegate.swift +++ b/Tusker/Scenes/TuskerSceneDelegate.swift @@ -9,9 +9,8 @@ import UIKit protocol TuskerSceneDelegate: UISceneDelegate { + var window: UIWindow? { get } var rootViewController: TuskerRootViewController? { get } - - func handleStatusBarTapped(xPosition: CGFloat) -> StatusBarTapActionResult } enum StatusBarTapActionResult { @@ -27,4 +26,14 @@ extension TuskerSceneDelegate { } return .continue } + + func applyAppearancePreferences() { + guard let window else { return } + window.overrideUserInterfaceStyle = Preferences.shared.theme + window.tintColor = Preferences.shared.accentColor.color + let key = ["Controller", "Presentation", "root", "_"].reversed().joined() + if let rootPresentationController = window.value(forKey: key) as? UIPresentationController { + rootPresentationController.overrideTraitCollection = UITraitCollection(pureBlackDarkMode: Preferences.shared.pureBlackDarkMode) + } + } }