Initial Commit
This commit is contained in:
61
Calendarr iOS/CalendarrApp.swift
Normal file
61
Calendarr iOS/CalendarrApp.swift
Normal file
@@ -0,0 +1,61 @@
|
||||
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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user