StatusList.swift 932 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. //
  2. // StatusList.swift
  3. // Todos
  4. //
  5. // Created by Sam Jaffe on 3/7/26.
  6. //
  7. import Foundation
  8. import SwiftData
  9. @Model // Must be @Model to watch changes to children
  10. final class StatusList {
  11. var todo: Bool = true
  12. var complete: Bool = true
  13. var inProgess: Bool = true
  14. var hiatus: Bool = true
  15. var waiting: Bool = true
  16. var unknown: Bool = true
  17. init() {}
  18. var all: Bool {
  19. Status.allCases.map({ test($0) }).allSatisfy({ $0 })
  20. }
  21. var description: String {
  22. let unset = Status.allCases.filter({ !test($0) })
  23. return "Hiding status\(unset.count == 1 ? "" : "es"): " +
  24. unset.map(\.description).joined(separator: ", ")
  25. }
  26. func test(_ index: Status) -> Bool {
  27. switch (index) {
  28. case .todo: return todo
  29. case .complete: return complete
  30. case .inProgress: return inProgess
  31. case .hiatus: return hiatus
  32. case .waiting: return waiting
  33. case .unknown: return unknown
  34. }
  35. }
  36. }