From 902055d5eaa7f5512b76e22f57df3939f956181f Mon Sep 17 00:00:00 2001 From: Christian Cleberg Date: Wed, 1 Apr 2026 22:03:14 -0500 Subject: Add tracker management (delete/update, ACLs, labels) - 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 --- Hutch/Models/Todo.swift | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) (limited to 'Hutch/Models') 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. -- cgit v1.2.3