TempTargetsView.swift 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. state.enactTempTarget(id: target.id)
  12. } label: {
  13. VStack(alignment: .leading) {
  14. HStack {
  15. Text(target.name)
  16. if let until = target.until, until > Date() {
  17. Spacer()
  18. Text(until, style: .timer).foregroundColor(.loopGreen)
  19. }
  20. }
  21. Text(target.description).font(.caption2).foregroundColor(.secondary)
  22. }
  23. }
  24. }
  25. }
  26. Button {
  27. state.enactTempTarget(id: "cancel")
  28. } label: {
  29. Text("Cancel Temp Target")
  30. }
  31. }
  32. .navigationTitle("Temp Targets")
  33. }
  34. }
  35. struct TempTargetsView_Previews: PreviewProvider {
  36. static var previews: some View {
  37. let model = WatchStateModel()
  38. model.tempTargets = [
  39. TempTargetWatchPreset(
  40. name: "Target 0",
  41. id: UUID().uuidString,
  42. description: "blablabla",
  43. until: Date().addingTimeInterval(60 * 60)
  44. ),
  45. TempTargetWatchPreset(name: "target1", id: UUID().uuidString, description: "blablabla", until: nil),
  46. TempTargetWatchPreset(name: "🤖 Target 2", id: UUID().uuidString, description: "blablabla", until: nil)
  47. ]
  48. return TempTargetsView().environmentObject(model)
  49. }
  50. }