58 lines
No EOL
1.5 KiB
Swift
58 lines
No EOL
1.5 KiB
Swift
import Foundation
|
|
import SwiftUI
|
|
import Combine
|
|
|
|
@MainActor
|
|
class PDSViewModel: ObservableObject {
|
|
@Published var pdsService = PDSService()
|
|
@Published var alertItem: AlertItem?
|
|
|
|
var errorMessage: String? {
|
|
pdsService.errorMessage
|
|
}
|
|
|
|
var isLoading: Bool {
|
|
pdsService.isLoading
|
|
}
|
|
|
|
var isAuthenticated: Bool {
|
|
get {
|
|
let value = pdsService.isAuthenticated
|
|
print("PDSViewModel: isAuthenticated getter called, value = \(value)")
|
|
return value
|
|
}
|
|
}
|
|
|
|
var users: [PDSUser] {
|
|
pdsService.users
|
|
}
|
|
|
|
var inviteCodes: [InviteCode] {
|
|
pdsService.inviteCodes
|
|
}
|
|
|
|
func login(serverURL: String, username: String, password: String) async {
|
|
print("PDSViewModel: login called")
|
|
if let credentials = PDSCredentials(serverURL: serverURL, username: username, password: password) {
|
|
let success = await pdsService.login(credentials: credentials)
|
|
print("PDSViewModel: login completed, success = \(success), isAuthenticated = \(pdsService.isAuthenticated)")
|
|
|
|
// Force update the view by triggering objectWillChange
|
|
objectWillChange.send()
|
|
} else {
|
|
pdsService.errorMessage = "Invalid credentials"
|
|
}
|
|
}
|
|
|
|
func logout() {
|
|
print("PDSViewModel: logout called")
|
|
pdsService.logout()
|
|
objectWillChange.send()
|
|
}
|
|
}
|
|
|
|
struct AlertItem: Identifiable {
|
|
let id = UUID()
|
|
let title: String
|
|
let message: String
|
|
} |