Files
sing-box-for-apple/ApplicationLibrary/Views/Dashboard/Overview/OverviewViewModel.swift
T

39 lines
1.2 KiB
Swift

import Foundation
import Libbox
import Library
import SwiftUI
@MainActor
public final class OverviewViewModel: BaseViewModel {
@Published public var reasserting = false
public func switchProfile(_ profileID: Int64, profile: ExtensionProfile, environments: ExtensionEnvironments) async {
await SharedPreferences.selectedProfileID.set(profileID)
environments.selectedProfileUpdate.send()
if profile.status.isConnected {
do {
try await profile.reloadService()
} catch {
alert = AlertState(error: error)
}
}
reasserting = false
}
public nonisolated func setSystemProxyEnabled(_ enabled: Bool, profile: ExtensionProfile) async {
do {
await SharedPreferences.systemProxyEnabled.set(enabled)
if enabled {
try LibboxNewStandaloneCommandClient()!.setSystemProxyEnabled(enabled)
} else {
await MainActor.run { reasserting = true }
try await profile.restart()
await MainActor.run { reasserting = false }
}
} catch {
await MainActor.run { alert = AlertState(error: error) }
}
}
}