add swiftUI code

This commit is contained in:
zeus
2025-01-22 14:09:10 +08:00
parent 68e7b7347c
commit 8a99853829
2531 changed files with 486215 additions and 0 deletions
@@ -0,0 +1,51 @@
import Foundation
import SwiftUI
public class ExtensionEnvironments: ObservableObject {
@Published public var logClient = CommandClient(.log)
@Published public var extensionProfileLoading = true
@Published public var extensionProfile: ExtensionProfile?
@Published public var emptyProfiles = false
public let profileUpdate = ObjectWillChangePublisher()
public let selectedProfileUpdate = ObjectWillChangePublisher()
public let openSettings = ObjectWillChangePublisher()
public let openProfileGetSuccess = ObjectWillChangePublisher() //
public let opentixingSubnodes = ObjectWillChangePublisher() //
public let updateTixingdingyueEnabled = ObjectWillChangePublisher() //boolean
public init() {}
deinit {
logClient.disconnect()
}
public func postReload() {
Task {
await reload()
}
}
@MainActor
public func reload() async {
if let newProfile = try? await ExtensionProfile.load() {
if extensionProfile == nil || extensionProfile?.status == .invalid {
newProfile.register()
extensionProfile = newProfile
extensionProfileLoading = false
}
} else {
extensionProfile = nil
extensionProfileLoading = false
}
}
public func connectLog() {
guard let profile = extensionProfile else {
return
}
if profile.status.isConnected, !logClient.isConnected {
logClient.connect()
}
}
}