import Foundation extension TrioRemoteControl { func handleTempTargetCommand(_ pushMessage: PushMessage) async { guard let targetValue = pushMessage.target, let durationValue = pushMessage.duration else { await logError("Command rejected: temp target data is incomplete or invalid.", pushMessage: pushMessage) return } let durationInMinutes = Int(durationValue) let pushMessageDate = Date(timeIntervalSince1970: pushMessage.timestamp) let tempTarget = TempTarget( name: TempTarget.custom, createdAt: pushMessageDate, targetTop: Decimal(targetValue), targetBottom: Decimal(targetValue), duration: Decimal(durationInMinutes), enteredBy: TempTarget.manual, reason: TempTarget.custom ) tempTargetsStorage.storeTempTargets([tempTarget]) debug( .remoteControl, "Remote command processed successfully. \(pushMessage.humanReadableDescription())" ) } func cancelTempTarget(_ pushMessage: PushMessage) async { debug(.remoteControl, "Cancelling temp target.") guard tempTargetsStorage.current() != nil else { await logError("Command rejected: no active temp target to cancel.") return } let cancelEntry = TempTarget.cancel(at: Date()) tempTargetsStorage.storeTempTargets([cancelEntry]) debug( .remoteControl, "Remote command processed successfully. \(pushMessage.humanReadableDescription())" ) } }