Files
UUVPN/iOS-SwiftUI-Code/Library/Network/ExtensionEnvironments.swift
T

52 lines
1.6 KiB
Swift

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()
}
}
}