diff options
author | Shav Kinderlehrer <[email protected]> | 2024-02-21 12:20:24 -0500 |
---|---|---|
committer | Shav Kinderlehrer <[email protected]> | 2024-02-21 12:20:24 -0500 |
commit | ce0be87c7f39e9763d835a685cb65eb38c7e68c3 (patch) | |
tree | a548887701d035f40923de1838317d213a8a2532 /Jel/Views | |
parent | 53b079259556532569af3af0e3b15aa887adbfd4 (diff) | |
download | jel-ce0be87c7f39e9763d835a685cb65eb38c7e68c3.tar.gz jel-ce0be87c7f39e9763d835a685cb65eb38c7e68c3.zip |
Cleanup + change SignInView to be a sheet
Diffstat (limited to 'Jel/Views')
-rw-r--r-- | Jel/Views/ContentView.swift | 33 | ||||
-rw-r--r-- | Jel/Views/Dashboard/DashboardLibraryView.swift | 2 | ||||
-rw-r--r-- | Jel/Views/Dashboard/DashboardView.swift | 5 | ||||
-rw-r--r-- | Jel/Views/Item/ItemGenresView.swift | 2 | ||||
-rw-r--r-- | Jel/Views/Item/Person/ItemPersonDetailView.swift | 2 | ||||
-rw-r--r-- | Jel/Views/Item/Person/ItemPersonIconView.swift | 2 | ||||
-rw-r--r-- | Jel/Views/Item/Series/ItemSeriesEpisodesView.swift | 2 | ||||
-rw-r--r-- | Jel/Views/Item/Series/ItemSeriesSeasonsView.swift | 2 | ||||
-rw-r--r-- | Jel/Views/Library/LibraryDetailView.swift | 2 | ||||
-rw-r--r-- | Jel/Views/Settings/SettingsView.swift | 8 | ||||
-rw-r--r-- | Jel/Views/SignIn/AddServerView.swift | 12 | ||||
-rw-r--r-- | Jel/Views/SignIn/SignInToServerView.swift | 2 | ||||
-rw-r--r-- | Jel/Views/SignIn/SignInView.swift | 9 |
13 files changed, 54 insertions, 29 deletions
diff --git a/Jel/Views/ContentView.swift b/Jel/Views/ContentView.swift index 6c5ec59..3983392 100644 --- a/Jel/Views/ContentView.swift +++ b/Jel/Views/ContentView.swift @@ -9,22 +9,39 @@ import SwiftUI import PulseUI struct ContentView: View { - @EnvironmentObject var jellyfinClient: JellyfinClientController - - @StateObject var settingsController: SettingsController = SettingsController.shared - @StateObject var authState: AuthStateController = AuthStateController.shared - @State var showingConsoleSheet: Bool = false + @State var isSignedIn: Bool = true + var body: some View { VStack { - if !authState.loggedIn { - SignInView() - } else { + if isSignedIn { NavigationStack { DashboardView() } + } else { + VStack { + Text("You are not currently signed into a Jellyfin instance.") + .padding() + Button { + // toggle logged in so that it invalidates isSignedIn + authState.loggedIn = true + authState.loggedIn = false + } label: { + Text("Sign in") + } + } } } + .sheet(isPresented: $isSignedIn.not) { + SignInView() + .interactiveDismissDisabled() + } + .onChange(of: authState.loggedIn, { + isSignedIn = authState.loggedIn + }) + .onChange(of: authState.loaded, { + isSignedIn = authState.loggedIn + }) } } diff --git a/Jel/Views/Dashboard/DashboardLibraryView.swift b/Jel/Views/Dashboard/DashboardLibraryView.swift index 0510113..dc5189e 100644 --- a/Jel/Views/Dashboard/DashboardLibraryView.swift +++ b/Jel/Views/Dashboard/DashboardLibraryView.swift @@ -11,7 +11,7 @@ import JellyfinKit struct DashboardLibraryView: View { @EnvironmentObject var jellyfinClient: JellyfinClientController - @StateObject var authState: AuthStateController = AuthStateController.shared + @ObservedObject var authState: AuthStateController = AuthStateController.shared @State var libraries: [BaseItemDto] = [] @State var loading: Bool = true diff --git a/Jel/Views/Dashboard/DashboardView.swift b/Jel/Views/Dashboard/DashboardView.swift index 5ad25f8..931a884 100644 --- a/Jel/Views/Dashboard/DashboardView.swift +++ b/Jel/Views/Dashboard/DashboardView.swift @@ -10,6 +10,8 @@ import JellyfinKit struct DashboardView: View { @State var showingSettingsSheet: Bool = false + @ObservedObject var authState: AuthStateController = AuthStateController.shared + @State var refresh: Bool = true var body: some View { ScrollView { @@ -37,6 +39,9 @@ struct DashboardView: View { .sheet(isPresented: $showingSettingsSheet) { SettingsView(showingSettingsView: $showingSettingsSheet) } + .onChange(of: authState.loggedIn, { + refresh = !authState.loggedIn + }) } } diff --git a/Jel/Views/Item/ItemGenresView.swift b/Jel/Views/Item/ItemGenresView.swift index 4e8321f..d775257 100644 --- a/Jel/Views/Item/ItemGenresView.swift +++ b/Jel/Views/Item/ItemGenresView.swift @@ -11,7 +11,7 @@ import JellyfinKit struct ItemGenresView: View { @EnvironmentObject var jellyfinClient: JellyfinClientController - @StateObject var authState: AuthStateController = AuthStateController.shared + @ObservedObject var authState: AuthStateController = AuthStateController.shared var item: BaseItemDto @State var libraryItems: [BaseItemDto]? = [] diff --git a/Jel/Views/Item/Person/ItemPersonDetailView.swift b/Jel/Views/Item/Person/ItemPersonDetailView.swift index 5e0bddf..cfb222a 100644 --- a/Jel/Views/Item/Person/ItemPersonDetailView.swift +++ b/Jel/Views/Item/Person/ItemPersonDetailView.swift @@ -9,7 +9,7 @@ import SwiftUI import JellyfinKit struct ItemPersonDetailView: View { - @StateObject var authState: AuthStateController = AuthStateController.shared + @ObservedObject var authState: AuthStateController = AuthStateController.shared @EnvironmentObject var jellyfinClient: JellyfinClientController var person: BaseItemPerson diff --git a/Jel/Views/Item/Person/ItemPersonIconView.swift b/Jel/Views/Item/Person/ItemPersonIconView.swift index b839deb..5b4c33c 100644 --- a/Jel/Views/Item/Person/ItemPersonIconView.swift +++ b/Jel/Views/Item/Person/ItemPersonIconView.swift @@ -25,7 +25,7 @@ struct ItemPersonIconPlaceholderView: View { } struct ItemPersonIconView: View { - @StateObject var authState: AuthStateController = AuthStateController.shared + @ObservedObject var authState: AuthStateController = AuthStateController.shared @EnvironmentObject var jellyfinClient: JellyfinClientController var person: BaseItemPerson diff --git a/Jel/Views/Item/Series/ItemSeriesEpisodesView.swift b/Jel/Views/Item/Series/ItemSeriesEpisodesView.swift index ae473ef..2588515 100644 --- a/Jel/Views/Item/Series/ItemSeriesEpisodesView.swift +++ b/Jel/Views/Item/Series/ItemSeriesEpisodesView.swift @@ -10,7 +10,7 @@ import JellyfinKit struct ItemSeriesEpisodesView: View { @EnvironmentObject var jellyfinClient: JellyfinClientController - @StateObject var authState: AuthStateController = AuthStateController.shared + @ObservedObject var authState: AuthStateController = AuthStateController.shared var item: BaseItemDto diff --git a/Jel/Views/Item/Series/ItemSeriesSeasonsView.swift b/Jel/Views/Item/Series/ItemSeriesSeasonsView.swift index a559174..d5c269b 100644 --- a/Jel/Views/Item/Series/ItemSeriesSeasonsView.swift +++ b/Jel/Views/Item/Series/ItemSeriesSeasonsView.swift @@ -12,7 +12,7 @@ struct ItemSeriesSeasonsView: View { var item: BaseItemDto @EnvironmentObject var jellyfinClient: JellyfinClientController - @StateObject var authState: AuthStateController = AuthStateController.shared + @ObservedObject var authState: AuthStateController = AuthStateController.shared @State var seriesItems: [BaseItemDto] = [] diff --git a/Jel/Views/Library/LibraryDetailView.swift b/Jel/Views/Library/LibraryDetailView.swift index c75cf39..dbc03d3 100644 --- a/Jel/Views/Library/LibraryDetailView.swift +++ b/Jel/Views/Library/LibraryDetailView.swift @@ -10,7 +10,7 @@ import JellyfinKit struct LibraryDetailView: View { @EnvironmentObject var jellyfinClient: JellyfinClientController - @StateObject var authState: AuthStateController = AuthStateController.shared + @ObservedObject var authState: AuthStateController = AuthStateController.shared @State var library: BaseItemDto @State var items: [BaseItemDto]? = [] diff --git a/Jel/Views/Settings/SettingsView.swift b/Jel/Views/Settings/SettingsView.swift index cff1fc3..8cd5a8a 100644 --- a/Jel/Views/Settings/SettingsView.swift +++ b/Jel/Views/Settings/SettingsView.swift @@ -11,9 +11,9 @@ import PulseUI struct SettingsView: View { @Binding var showingSettingsView: Bool - @StateObject var authState: AuthStateController = AuthStateController.shared - + @ObservedObject var authState: AuthStateController = AuthStateController.shared @ObservedObject var settingsController: SettingsController = SettingsController.shared + var body: some View { NavigationStack { Form { @@ -35,7 +35,11 @@ struct SettingsView: View { Button(role: .destructive) { authState.loggedIn = false + authState.authToken = nil authState.save() + + showingSettingsView.toggle() + settingsController.save() } label: { Text("Sign out") } diff --git a/Jel/Views/SignIn/AddServerView.swift b/Jel/Views/SignIn/AddServerView.swift index 40c2312..01d4a49 100644 --- a/Jel/Views/SignIn/AddServerView.swift +++ b/Jel/Views/SignIn/AddServerView.swift @@ -12,7 +12,7 @@ struct AddServerView: View { @ObservedObject var authState: AuthStateController = AuthStateController.shared @Binding var serverUrlIsValid: Bool - @State var serverUrlString: String = "http://" + @State var serverUrlString: String = "" @State var urlHasError: Bool = false @State var currentErrorMessage: String = "" @State var isLoading: Bool = false @@ -25,7 +25,7 @@ struct AddServerView: View { .font(.title) HStack { TextField(text: $serverUrlString) { - Text("http://jellyfin.example.com") + Text(verbatim: "https://jellyfin.example.com") } .keyboardType(.URL) .textContentType(.URL) @@ -102,7 +102,7 @@ struct AddServerView: View { } -#Preview { - AddServerView(serverUrlIsValid: .constant(false)) - -} +//#Preview { +// AddServerView(serverUrlIsValid: .constant(false)) +// +//} diff --git a/Jel/Views/SignIn/SignInToServerView.swift b/Jel/Views/SignIn/SignInToServerView.swift index 259e54d..18907a5 100644 --- a/Jel/Views/SignIn/SignInToServerView.swift +++ b/Jel/Views/SignIn/SignInToServerView.swift @@ -10,7 +10,7 @@ import SwiftUI struct SignInToServerView: View { @EnvironmentObject var jellyfinClient: JellyfinClientController - @StateObject var authState: AuthStateController = AuthStateController.shared + @ObservedObject var authState: AuthStateController = AuthStateController.shared @State var username: String = "" @State var password: String = "" diff --git a/Jel/Views/SignIn/SignInView.swift b/Jel/Views/SignIn/SignInView.swift index 729b34b..f3e2675 100644 --- a/Jel/Views/SignIn/SignInView.swift +++ b/Jel/Views/SignIn/SignInView.swift @@ -11,9 +11,8 @@ import PulseUI struct SignInView: View { @EnvironmentObject var jellyfinClient: JellyfinClientController - @StateObject var authState: AuthStateController = AuthStateController.shared + @ObservedObject var authState: AuthStateController = AuthStateController.shared @State var serverUrlIsValid: Bool = false - @State var showingConsoleSheet: Bool = false var body: some View { NavigationStack { @@ -40,6 +39,6 @@ struct SignInView: View { } } -#Preview { - SignInView() -} +//#Preview { +// SignInView() +//} |