39 lines
1.2 KiB
Swift
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) }
|
|
}
|
|
}
|
|
}
|