| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- import AppIntents
- import Foundation
- @available(iOS 16.0, *) struct ApplyTempPresetIntent: AppIntent {
- // Title of the action in the Shortcuts app
- static var title: LocalizedStringResource = "Apply a temporary Preset"
- // Description of the action in the Shortcuts app
- static var description = IntentDescription("Allow to apply a specific temporary preset.")
- internal var intentRequest: TempPresetsIntentRequest
- init() {
- intentRequest = TempPresetsIntentRequest()
- }
- @Parameter(title: "Preset") var preset: tempPreset?
- @Parameter(
- title: "Confirm Before applying",
- description: "If toggled, you will need to confirm before applying",
- default: true
- ) var confirmBeforeApplying: Bool
- static var parameterSummary: some ParameterSummary {
- When(\ApplyTempPresetIntent.$confirmBeforeApplying, .equalTo, true, {
- Summary("Applying \(\.$preset)") {
- \.$confirmBeforeApplying
- }
- }, otherwise: {
- Summary("Immediately applying \(\.$preset)") {
- \.$confirmBeforeApplying
- }
- })
- }
- @MainActor func perform() async throws -> some ProvidesDialog {
- do {
- let presetToApply: tempPreset
- if let preset = preset {
- presetToApply = preset
- } else {
- presetToApply = try await $preset.requestDisambiguation(
- among: intentRequest.fetchAll(),
- dialog: "What temp preset would you like ?"
- )
- }
- let displayName: String = presetToApply.name
- if confirmBeforeApplying {
- try await requestConfirmation(
- result: .result(dialog: "Are you sure to applying the temp target \(displayName) ?")
- )
- }
- // TODO: enact the temp target
- let tempTarget = try intentRequest.findTempTarget(presetToApply)
- let finalTempTargetApply = try intentRequest.enactTempTarget(tempTarget)
- let displayDetail: String =
- "the target \(finalTempTargetApply.displayName) is applying during \(finalTempTargetApply.duration) mn"
- return .result(
- dialog: IntentDialog(stringLiteral: displayDetail)
- )
- } catch {
- throw error
- }
- }
- }
|