Files
UUVPN/iOS-SwiftUI-Code/WidgetExtension/Intents.swift
T
2025-01-28 12:28:03 +08:00

47 lines
1.3 KiB
Swift

import AppIntents
import Library
import WidgetKit
struct ConfigurationIntent: WidgetConfigurationIntent {
static var title: LocalizedStringResource = "Configuration"
static var description = IntentDescription("Configuration sing-bix widget.")
}
struct StartServiceIntent: AppIntent {
static var title: LocalizedStringResource = "Start sing-box"
static var description =
IntentDescription("Start sing-box servie")
func perform() async throws -> some IntentResult {
guard let extensionProfile = try await (ExtensionProfile.load()) else {
throw NSError(domain: "NetworkExtension not installed", code: 0)
}
if extensionProfile.status == .connected {
return .result()
} else {
try await extensionProfile.start()
}
return .result()
}
}
struct StopServiceIntent: AppIntent {
static var title: LocalizedStringResource = "Stop sing-box"
static var description =
IntentDescription("Stop sing-box service")
static var parameterSummary: some ParameterSummary {
Summary("Stop sing-box service")
}
func perform() async throws -> some IntentResult {
guard let extensionProfile = try await (ExtensionProfile.load()) else {
return .result()
}
extensionProfile.stop()
return .result()
}
}