import AppIntents import Foundation enum WidgetEnvironment { static let appGroup = "group.de.rfc1437.gotcha" static func core() -> GotchaCore { GotchaCore( storageDirectory: FileManager.default.containerURL( forSecurityApplicationGroupIdentifier: appGroup )?.path ) } static func servers() -> [ServerRow] { core().servers() } static func selection(for server: ServerRow) -> String { "\(server.name) ยท \(server.url)" } static func server(for selection: String) -> ServerRow? { servers().first { self.selection(for: $0) == selection } } } struct WidgetServerOptionsProvider: DynamicOptionsProvider { func results() async throws -> [String] { WidgetEnvironment.servers().map(WidgetEnvironment.selection) } func defaultResult() async -> String? { WidgetEnvironment.servers().first.map(WidgetEnvironment.selection) } } struct ActivityWidgetIntent: WidgetConfigurationIntent { static let title: LocalizedStringResource = "Activity Server" static let description = IntentDescription("Choose the server whose recent activity appears.") @Parameter(title: "Server", optionsProvider: WidgetServerOptionsProvider()) var server: String? } struct PullsWidgetIntent: WidgetConfigurationIntent { static let title: LocalizedStringResource = "Pull Request Server" static let description = IntentDescription("Choose the server whose open pull requests appear.") @Parameter(title: "Server", optionsProvider: WidgetServerOptionsProvider()) var server: String? }