39 lines
1.1 KiB
Swift
39 lines
1.1 KiB
Swift
import Foundation
|
|
import SwiftUI
|
|
import SwiftData
|
|
import ReadeckCore
|
|
import ReadeckNetworking
|
|
|
|
@MainActor
|
|
@Observable
|
|
public final class AppEnvironment {
|
|
public let credentialsStore: CredentialsStoring
|
|
public private(set) var credentials: ServerCredentials?
|
|
public private(set) var client: ReadeckClientProtocol
|
|
|
|
public init(
|
|
credentialsStore: CredentialsStoring = UserDefaultsCredentialsStore(),
|
|
client: ReadeckClientProtocol = ReadeckClient()
|
|
) {
|
|
self.credentialsStore = credentialsStore
|
|
self.client = client
|
|
let stored = credentialsStore.load()
|
|
self.credentials = stored
|
|
ReadeckEnvironment.current.update(stored)
|
|
}
|
|
|
|
public var isConfigured: Bool { credentials != nil }
|
|
|
|
public func updateCredentials(_ credentials: ServerCredentials) throws {
|
|
try credentialsStore.save(credentials)
|
|
self.credentials = credentials
|
|
ReadeckEnvironment.current.update(credentials)
|
|
}
|
|
|
|
public func clearCredentials() throws {
|
|
try credentialsStore.clear()
|
|
credentials = nil
|
|
ReadeckEnvironment.current.update(nil)
|
|
}
|
|
}
|