pi-remote-ios/Sources/App/AppState.swift

26 lines
660 B
Swift

// AppState.swift global app state, credential lifecycle
import SwiftUI
@MainActor
final class AppState: ObservableObject {
static let shared = AppState()
@Published var credential: SidecarCredential? = nil
private init() {
// Try loading persisted credential on launch
credential = try? Keychain.shared.load(key: "piremote.credential")
}
func didPair(credential: SidecarCredential) {
self.credential = credential
try? Keychain.shared.save(credential, key: "piremote.credential")
}
func unpair() {
credential = nil
Keychain.shared.delete(key: "piremote.credential")
}
}