From 2e3c12fed339c8bf3dc966217cbdf4c385fb98a1 Mon Sep 17 00:00:00 2001 From: Shav Kinderlehrer Date: Fri, 15 Dec 2023 10:41:00 -0500 Subject: Add settings view + fix signin flow --- Jel/Views/Settings/AppearancePicker.swift | 25 ++++++++++++ Jel/Views/Settings/SettingsView.swift | 68 +++++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 Jel/Views/Settings/AppearancePicker.swift create mode 100644 Jel/Views/Settings/SettingsView.swift (limited to 'Jel/Views/Settings') diff --git a/Jel/Views/Settings/AppearancePicker.swift b/Jel/Views/Settings/AppearancePicker.swift new file mode 100644 index 0000000..93edead --- /dev/null +++ b/Jel/Views/Settings/AppearancePicker.swift @@ -0,0 +1,25 @@ +// +// AppearancePicker.swift +// Jel +// +// Created by zerocool on 12/15/23. +// + +import SwiftUI + +struct AppearancePicker: View { + @ObservedObject var settingsController: SettingsController = SettingsController.shared + + var body: some View { + Picker("Appearance", selection: $settingsController.appearance) { + ForEach(AppearanceState.allCases) { option in + Text(String(describing: option)) + } + } + .pickerStyle(.menu) + } +} + +#Preview { + AppearancePicker() +} diff --git a/Jel/Views/Settings/SettingsView.swift b/Jel/Views/Settings/SettingsView.swift new file mode 100644 index 0000000..6eaa2e2 --- /dev/null +++ b/Jel/Views/Settings/SettingsView.swift @@ -0,0 +1,68 @@ +// +// SettingsView.swift +// Jel +// +// Created by zerocool on 12/13/23. +// + +import SwiftUI +import PulseUI + +struct SettingsView: View { + @Binding var showingSettingsView: Bool + + @StateObject var authState: AuthStateController = AuthStateController.shared + + @ObservedObject var settingsController: SettingsController = SettingsController.shared + var body: some View { + NavigationStack { + Form { + Section { + AppearancePicker() + } + + Section { + NavigationLink { + ConsoleView() + .closeButtonHidden() + } label: { + Text("Logs") + } + + Button(role: .destructive) { + authState.loggedIn = false + authState.save() + } label: { + Text("Sign out") + } + } + } + .navigationTitle("Settings") + .toolbar { + ToolbarItem { + Button { + showingSettingsView.toggle() + settingsController.save() + } label: { + Text("Done") + .bold() + } + } + } + .preferredColorScheme({ + switch settingsController.appearance { + case .dark: + return ColorScheme.dark + case .light: + return ColorScheme.light + case .automatic: + return .none + } + }()) + } + } +} + +#Preview { + SettingsView(showingSettingsView: .constant(true)) +} -- cgit v1.2.3