feat: Initial iOS Health Dashboard app (Swift + SwiftUI)
This commit is contained in:
58
PulseHealth/App.swift
Normal file
58
PulseHealth/App.swift
Normal file
@@ -0,0 +1,58 @@
|
||||
import SwiftUI
|
||||
|
||||
extension Color {
|
||||
init(hex: String) {
|
||||
let hex = hex.trimmingCharacters(in: CharacterSet.alphanumerics.inverted)
|
||||
var int: UInt64 = 0
|
||||
Scanner(string: hex).scanHexInt64(&int)
|
||||
let a, r, g, b: UInt64
|
||||
switch hex.count {
|
||||
case 3: (a, r, g, b) = (255, (int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17)
|
||||
case 6: (a, r, g, b) = (255, int >> 16, int >> 8 & 0xFF, int & 0xFF)
|
||||
case 8: (a, r, g, b) = (int >> 24, int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF)
|
||||
default: (a, r, g, b) = (255, 0, 0, 0)
|
||||
}
|
||||
self.init(.sRGB, red: Double(r)/255, green: Double(g)/255, blue: Double(b)/255, opacity: Double(a)/255)
|
||||
}
|
||||
}
|
||||
|
||||
@main
|
||||
struct PulseHealthApp: App {
|
||||
@StateObject private var authManager = AuthManager()
|
||||
var body: some Scene {
|
||||
WindowGroup {
|
||||
if authManager.isLoggedIn {
|
||||
DashboardView().environmentObject(authManager)
|
||||
} else {
|
||||
LoginView().environmentObject(authManager)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class AuthManager: ObservableObject {
|
||||
@Published var isLoggedIn: Bool = false
|
||||
@Published var token: String = ""
|
||||
@Published var userName: String = ""
|
||||
@Published var apiKey: String = ""
|
||||
init() {
|
||||
token = UserDefaults.standard.string(forKey: "authToken") ?? ""
|
||||
userName = UserDefaults.standard.string(forKey: "userName") ?? ""
|
||||
apiKey = UserDefaults.standard.string(forKey: "apiKey") ?? ""
|
||||
isLoggedIn = !token.isEmpty
|
||||
}
|
||||
func login(token: String, name: String, apiKey: String) {
|
||||
self.token = token; self.userName = name; self.apiKey = apiKey
|
||||
UserDefaults.standard.set(token, forKey: "authToken")
|
||||
UserDefaults.standard.set(name, forKey: "userName")
|
||||
UserDefaults.standard.set(apiKey, forKey: "apiKey")
|
||||
isLoggedIn = true
|
||||
}
|
||||
func logout() {
|
||||
token = ""; userName = ""; apiKey = ""
|
||||
UserDefaults.standard.removeObject(forKey: "authToken")
|
||||
UserDefaults.standard.removeObject(forKey: "userName")
|
||||
UserDefaults.standard.removeObject(forKey: "apiKey")
|
||||
isLoggedIn = false
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user