summaryrefslogtreecommitdiff
path: root/Jel
diff options
context:
space:
mode:
Diffstat (limited to 'Jel')
-rw-r--r--Jel/Controllers/AuthStateController.swift8
-rw-r--r--Jel/Controllers/JellyfinClientController.swift3
-rw-r--r--Jel/Views/ConsoleSheetView.swift43
-rw-r--r--Jel/Views/ContentView.swift34
4 files changed, 76 insertions, 12 deletions
diff --git a/Jel/Controllers/AuthStateController.swift b/Jel/Controllers/AuthStateController.swift
index 93dbee3..35283bd 100644
--- a/Jel/Controllers/AuthStateController.swift
+++ b/Jel/Controllers/AuthStateController.swift
@@ -11,15 +11,17 @@ class AuthStateController: ObservableObject {
@Published var loggedIn: Bool
@Published var serverUrl: URL?
@Published var authToken: String?
+ @Published var userId: String?
private let defaults = UserDefaults.standard
static let shared = AuthStateController()
- init(loggedIn: Bool = false, serverUrl: URL? = nil, authToken: String? = nil) {
+ init(loggedIn: Bool = false, serverUrl: URL? = nil, authToken: String? = nil, userId: String? = nil) {
self.loggedIn = loggedIn
self.serverUrl = serverUrl
self.authToken = authToken
+ self.userId = userId
}
func load() {
@@ -30,11 +32,15 @@ class AuthStateController: ObservableObject {
if let oldAuthToken = defaults.string(forKey: "AuthState_authToken") {
self.authToken = oldAuthToken
}
+ if let oldUserId = defaults.string(forKey: "AuthState_userId") {
+ self.userId = oldUserId
+ }
}
func save() {
defaults.set(self.loggedIn, forKey: "AuthState_loggedIn")
defaults.set(self.serverUrl, forKey: "AuthState_serverUrl")
defaults.set(self.authToken, forKey: "AuthState_authToken")
+ defaults.set(self.userId, forKey: "AuthState_userId")
}
}
diff --git a/Jel/Controllers/JellyfinClientController.swift b/Jel/Controllers/JellyfinClientController.swift
index a80b908..24d4615 100644
--- a/Jel/Controllers/JellyfinClientController.swift
+++ b/Jel/Controllers/JellyfinClientController.swift
@@ -8,6 +8,7 @@
import Foundation
import Get
import JellyfinKit
+import Pulse
struct AuthHeaders: Codable {
var Client: String
@@ -56,6 +57,8 @@ class JellyfinClientController: ObservableObject {
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .iso8601withFractionalSeconds
$0.decoder = decoder
+
+ $0.sessionDelegate = Pulse.URLSessionProxyDelegate()
})
}
diff --git a/Jel/Views/ConsoleSheetView.swift b/Jel/Views/ConsoleSheetView.swift
new file mode 100644
index 0000000..4d9ba32
--- /dev/null
+++ b/Jel/Views/ConsoleSheetView.swift
@@ -0,0 +1,43 @@
+//
+// ConsoleSheetView.swift
+// Jel
+//
+// Created by zerocool on 12/12/23.
+//
+
+import SwiftUI
+import PulseUI
+
+struct ConsoleSheetView: View {
+ @Binding var showingConsoleSheet: Bool
+
+ var body: some View {
+ NavigationStack {
+ List {
+ NavigationLink {
+ ConsoleView(mode: .network)
+ .closeButtonHidden()
+ } label: {
+ Text("Network Console")
+ }
+ NavigationLink {
+ ConsoleView(mode: .logs)
+ .closeButtonHidden()
+ } label: {
+ Text("Logs Console")
+ }
+ }
+ .toolbar {
+ Button {
+ showingConsoleSheet.toggle()
+ } label: {
+ Text("Done")
+ }
+ }
+ }
+ }
+}
+
+#Preview {
+ ConsoleSheetView(showingConsoleSheet: .constant(true))
+}
diff --git a/Jel/Views/ContentView.swift b/Jel/Views/ContentView.swift
index 356615d..91d5c7c 100644
--- a/Jel/Views/ContentView.swift
+++ b/Jel/Views/ContentView.swift
@@ -6,23 +6,35 @@
//
import SwiftUI
+import PulseUI
struct ContentView: View {
@ObservedObject var authState: AuthStateController
+
+ @State var showingConsoleSheet: Bool = false
var body: some View {
- VStack {
- if !authState.loggedIn {
- SignInView(authState: authState)
- } else {
- Text("Logged in")
- Button("Log out") {
- authState.loggedIn = false
- authState.save()
- }
- }
+ VStack {
+ Button {
+ showingConsoleSheet.toggle()
+ } label: {
+ Label("Console", systemImage: "network")
+ }
+ .sheet(isPresented: $showingConsoleSheet) {
+ ConsoleSheetView(showingConsoleSheet: $showingConsoleSheet)
+ }
+
+ if !authState.loggedIn {
+ SignInView(authState: authState)
+ } else {
+ Text("Logged in")
+ Button("Log out") {
+ authState.loggedIn = false
+ authState.save()
}
- .padding()
+ }
}
+ .padding()
+ }
}
#Preview {