| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import AppIntents
- import Foundation
- struct ApplyOverridePresetIntent: AppIntent {
- // Title of the action in the Shortcuts app
- static var title = LocalizedStringResource("Activate an override", table: "ShortcutsDetail")
- // Description of the action in the Shortcuts app
- static var description = IntentDescription(.init("Activate an override", table: "ShortcutsDetail"))
- @Parameter(
- title: LocalizedStringResource("Override", table: "ShortcutsDetail"),
- description: LocalizedStringResource("Override choice", table: "ShortcutsDetail")
- ) var preset: OverridePreset?
- @Parameter(
- title: LocalizedStringResource("Confirm Before applying", table: "ShortcutsDetail"),
- description: LocalizedStringResource("If toggled, you will need to confirm before applying", table: "ShortcutsDetail"),
- default: true
- ) var confirmBeforeApplying: Bool
- static var parameterSummary: some ParameterSummary {
- When(\ApplyOverridePresetIntent.$confirmBeforeApplying, .equalTo, true, {
- Summary("Applying \(\.$preset) override", table: "ShortcutsDetail") {
- \.$confirmBeforeApplying
- }
- }, otherwise: {
- Summary("Immediately applying \(\.$preset) override", table: "ShortcutsDetail") {
- \.$confirmBeforeApplying
- }
- })
- }
- @MainActor func perform() async throws -> some ProvidesDialog {
- do {
- let presetToApply: OverridePreset
- if let preset = preset {
- presetToApply = preset
- } else {
- presetToApply = try await $preset.requestDisambiguation(
- among: await OverridePresetsIntentRequest().fetchAndProcessOverrides(),
- dialog: IntentDialog(LocalizedStringResource("Select override", table: "ShortcutsDetail"))
- )
- }
- let displayName: String = presetToApply.name
- if confirmBeforeApplying {
- try await requestConfirmation(
- result: .result(
- dialog: IntentDialog(LocalizedStringResource(
- "Confirm to apply override '\(displayName)'",
- table: "ShortcutsDetail"
- ))
- )
- )
- }
- if await OverridePresetsIntentRequest().enactOverride(presetToApply) {
- return .result(
- dialog: IntentDialog(
- LocalizedStringResource(
- "Override '\(presetToApply.name)' applied",
- table: "ShortcutsDetail"
- )
- )
- )
- } else {
- return .result(
- dialog: IntentDialog(
- LocalizedStringResource(
- "Override '\(presetToApply.name)' failed",
- table: "ShortcutsDetail"
- )
- )
- )
- }
- } catch {
- throw error
- }
- }
- }
|