Files
Calendarr-IOS/Calendarr iOS/CalendarrApp.swift
2026-05-17 08:32:34 +02:00

62 lines
1.8 KiB
Swift

import SwiftUI
@main
struct CalendarrApp: App {
@State private var appState = AppState()
var body: some Scene {
WindowGroup {
RootView()
.environment(appState)
}
}
}
@Observable
class AppState {
var serverURL: String = ""
var authToken: String = ""
var username: String = ""
var isAdmin: Bool = false
var isConfigured: Bool { !serverURL.isEmpty }
var isLoggedIn: Bool { !authToken.isEmpty }
init() {
serverURL = UserDefaults.standard.string(forKey: "serverURL") ?? ""
authToken = UserDefaults.standard.string(forKey: "authToken") ?? ""
username = UserDefaults.standard.string(forKey: "username") ?? ""
isAdmin = UserDefaults.standard.bool(forKey: "isAdmin")
}
func saveServer(url: String) {
serverURL = url.trimmingCharacters(in: .whitespacesAndNewlines)
if serverURL.hasSuffix("/") { serverURL = String(serverURL.dropLast()) }
UserDefaults.standard.set(serverURL, forKey: "serverURL")
}
func saveLogin(token: String, user: String, admin: Bool) {
authToken = token
username = user
isAdmin = admin
UserDefaults.standard.set(token, forKey: "authToken")
UserDefaults.standard.set(user, forKey: "username")
UserDefaults.standard.set(admin, forKey: "isAdmin")
}
func logout() {
authToken = ""
username = ""
isAdmin = false
UserDefaults.standard.removeObject(forKey: "authToken")
UserDefaults.standard.removeObject(forKey: "username")
UserDefaults.standard.removeObject(forKey: "isAdmin")
}
func resetServer() {
logout()
serverURL = ""
UserDefaults.standard.removeObject(forKey: "serverURL")
}
}