TempTargetsView.swift 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import SwiftUI
  2. struct TempTargetsView: View {
  3. @EnvironmentObject var state: WatchStateModel
  4. var body: some View {
  5. List {
  6. if state.tempTargets.isEmpty {
  7. Text("Set temp targets presets on iPhone first").padding()
  8. } else {
  9. ForEach(state.tempTargets) { target in
  10. Button {
  11. WKInterfaceDevice.current().play(.click)
  12. state.enactTempTarget(id: target.id)
  13. } label: {
  14. VStack(alignment: .leading) {
  15. HStack {
  16. Text(target.name)
  17. if let until = target.until, until > Date() {
  18. Spacer()
  19. Text(until, style: .timer).foregroundColor(.loopGreen)
  20. }
  21. }
  22. Text(target.description).font(.caption2).foregroundColor(.secondary)
  23. }
  24. }
  25. }
  26. }
  27. Button {
  28. WKInterfaceDevice.current().play(.click)
  29. state.enactTempTarget(id: "cancel")
  30. } label: {
  31. Text("Cancel Temp Target")
  32. }
  33. }
  34. .navigationTitle("Temp Targets")
  35. }
  36. }
  37. struct TempTargetsView_Previews: PreviewProvider {
  38. static var previews: some View {
  39. let model = WatchStateModel()
  40. model.tempTargets = [
  41. TempTargetWatchPreset(
  42. name: "Target 0",
  43. id: UUID().uuidString,
  44. description: "blablabla",
  45. until: Date().addingTimeInterval(60 * 60)
  46. ),
  47. TempTargetWatchPreset(name: "target1", id: UUID().uuidString, description: "blablabla", until: nil),
  48. TempTargetWatchPreset(name: "🤖 Target 2", id: UUID().uuidString, description: "blablabla", until: nil)
  49. ]
  50. return TempTargetsView().environmentObject(model)
  51. }
  52. }