From 948db9d2740343f56853263ef0219180e5af0073 Mon Sep 17 00:00:00 2001 From: Justin Mazzocchi <2831158+jzzocc@users.noreply.github.com> Date: Sun, 13 Nov 2022 11:58:06 -0800 Subject: [PATCH] Refactoring --- Localizations/en.lproj/Localizable.strings | 1 - .../View Models/NavigationViewModel.swift | 2 +- Views/SwiftUI/RootView.swift | 27 ++++++++----------- 3 files changed, 12 insertions(+), 18 deletions(-) diff --git a/Localizations/en.lproj/Localizable.strings b/Localizations/en.lproj/Localizable.strings index 6ab41da..f7f6054 100644 --- a/Localizations/en.lproj/Localizable.strings +++ b/Localizations/en.lproj/Localizable.strings @@ -348,7 +348,6 @@ "status.visibility.unlisted.description" = "Visible for all, but not in public timelines"; "status.visibility.private.description" = "Visible for followers only"; "status.visibility.direct.description" = "Visible for mentioned users only"; -"system" = "System"; "tag.accessibility-recent-uses-%ld" = "%ld recent uses"; "tag.accessibility-hint.post" = "View posts associated with trend"; "tag.accessibility-hint.toot" = "View toots associated with trend"; diff --git a/ViewModels/Sources/ViewModels/View Models/NavigationViewModel.swift b/ViewModels/Sources/ViewModels/View Models/NavigationViewModel.swift index df8aa3f..fd61923 100644 --- a/ViewModels/Sources/ViewModels/View Models/NavigationViewModel.swift +++ b/ViewModels/Sources/ViewModels/View Models/NavigationViewModel.swift @@ -6,7 +6,7 @@ import Mastodon import ServiceLayer public final class NavigationViewModel: ObservableObject { - @Published public private(set) var identityContext: IdentityContext + public let identityContext: IdentityContext public let navigations: AnyPublisher @Published public private(set) var recentIdentities = [Identity]() diff --git a/Views/SwiftUI/RootView.swift b/Views/SwiftUI/RootView.swift index 4dd8fbe..abb24e0 100644 --- a/Views/SwiftUI/RootView.swift +++ b/Views/SwiftUI/RootView.swift @@ -6,11 +6,6 @@ import ViewModels struct RootView: View { @StateObject var viewModel: RootViewModel - @State private var previousColorScheme: AppPreferences.ColorScheme = .system - var appPreferencesPublisher: AnyPublisher { - viewModel.navigationViewModel?.identityContext.$appPreferences.eraseToAnyPublisher() - ?? Empty().eraseToAnyPublisher() - } var body: some View { Group { @@ -20,6 +15,8 @@ struct RootView: View { .environmentObject(viewModel) .transition(.opacity) .edgesIgnoringSafeArea(.all) + .onReceive(navigationViewModel.identityContext.$appPreferences.map(\.colorScheme), + perform: setColorScheme) } else { NavigationView { AddIdentityView( @@ -33,20 +30,18 @@ struct RootView: View { .transition(.opacity) } } - .onReceive(appPreferencesPublisher) { preferences in - if preferences.colorScheme != previousColorScheme { - self.previousColorScheme = preferences.colorScheme - setColorScheme(preferences.colorScheme) + + } +} + +private extension RootView { + func setColorScheme(_ colorScheme: AppPreferences.ColorScheme) { + for scene in UIApplication.shared.connectedScenes.compactMap({ $0 as? UIWindowScene }) { + for window in scene.windows { + window.overrideUserInterfaceStyle = colorScheme.uiKit } } } - - private func setColorScheme(_ colorScheme: AppPreferences.ColorScheme) { - let scenes = UIApplication.shared.connectedScenes - let windowScenes = scenes.first as? UIWindowScene - let window = windowScenes?.windows.first - window?.overrideUserInterfaceStyle = colorScheme.uiKit - } } extension AppPreferences.ColorScheme {