summaryrefslogtreecommitdiff
path: root/Hutch/Models/Todo.swift
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-04-01 22:03:14 -0500
committerChristian Cleberg <[email protected]>2026-04-01 22:03:14 -0500
commit902055d5eaa7f5512b76e22f57df3939f956181f (patch)
tree08b7bb220b980adc9eaa9c195dc26e846707b311 /Hutch/Models/Todo.swift
parent209155dc431cf70d9c8dba20625bab7e3b1a5085 (diff)
downloadhutch-2.7.0.tar.gz
hutch-2.7.0.tar.bz2
hutch-2.7.0.zip
Add tracker management (delete/update, ACLs, labels)v2.7.0
- Add swipe actions (delete/edit) to tracker list - Add tracker settings menu on detail screen - Implement updateTracker and deleteTracker mutations - Implement ACL management (updateUserACL, updateTrackerACL, deleteACL) - Implement label management (createLabel, updateLabel, deleteLabel) - Add dedicated UI flows for ACLs and labels - Ensure state refresh after mutations - Handle loading, errors, and destructive confirmations Implements: https://todo.sr.ht/~ccleberg/Hutch/12
Diffstat (limited to 'Hutch/Models/Todo.swift')
-rw-r--r--Hutch/Models/Todo.swift49
1 files changed, 49 insertions, 0 deletions
diff --git a/Hutch/Models/Todo.swift b/Hutch/Models/Todo.swift
index 8a2b06c..129d4bf 100644
--- a/Hutch/Models/Todo.swift
+++ b/Hutch/Models/Todo.swift
@@ -81,6 +81,55 @@ struct TicketLabel: Codable, Sendable, Identifiable, Hashable {
let foregroundColor: String
}
+// MARK: - Tracker ACL
+
+struct TrackerACLPermissions: Codable, Sendable, Hashable {
+ let browse: Bool
+ let submit: Bool
+ let comment: Bool
+ let edit: Bool
+ let triage: Bool
+}
+
+struct TrackerACL: Codable, Sendable, Identifiable, Hashable {
+ let id: Int
+ let created: Date
+ let entity: Entity
+ let browse: Bool
+ let submit: Bool
+ let comment: Bool
+ let edit: Bool
+ let triage: Bool
+
+ var permissions: TrackerACLPermissions {
+ TrackerACLPermissions(
+ browse: browse,
+ submit: submit,
+ comment: comment,
+ edit: edit,
+ triage: triage
+ )
+ }
+}
+
+struct DefaultTrackerACL: Codable, Sendable, Hashable {
+ let browse: Bool
+ let submit: Bool
+ let comment: Bool
+ let edit: Bool
+ let triage: Bool
+
+ var permissions: TrackerACLPermissions {
+ TrackerACLPermissions(
+ browse: browse,
+ submit: submit,
+ comment: comment,
+ edit: edit,
+ triage: triage
+ )
+ }
+}
+
// MARK: - Tracker
/// A bug tracker from todo.sr.ht.