krz/hutch

an ios client for sourcehut

clone: git clone https://gitbay.org/krz/hutch.git

236a22553d5cb9e07b3115c03864c882e0c41b77

verified · cmc

author: Christian Cleberg <hello@cleberg.net> · 2026-04-03T20:47:34Z

chore: add explanatory comments to all intentional empty closures
 Hutch/Views/Repositories/FileTreeView.swift           | 8 ++++++--
 Hutch/Views/Repositories/HgRepositoryDetailView.swift | 4 +++-
 Hutch/Views/Tickets/TicketListView.swift              | 8 +++++---
 Hutch/Views/Tickets/TrackerListView.swift             | 4 +++-
 Hutch/Views/Tickets/TrackerManagementView.swift       | 8 ++++++--
 5 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/Hutch/Views/Repositories/FileTreeView.swift b/Hutch/Views/Repositories/FileTreeView.swift
index 462a25e..ec33822 100644
--- a/Hutch/Views/Repositories/FileTreeView.swift
+++ b/Hutch/Views/Repositories/FileTreeView.swift
@@ -260,7 +260,9 @@ private struct FileTreeContentView: View {
             FileContentShareSheet(activityItems: [text])
         }
         .alert("Share Unavailable", isPresented: $showShareUnavailableAlert) {
-            Button("OK", role: .cancel) {}
+            Button("OK", role: .cancel) {
+                // no-op: .cancel role handles alert dismissal
+            }
         } message: {
             Text(SRHTShareTarget.file.fallbackMessage)
         }
@@ -403,7 +405,9 @@ struct FileContentShareSheet: UIViewControllerRepresentable {
         UIActivityViewController(activityItems: activityItems, applicationActivities: nil)
     }
 
-    func updateUIViewController(_ : UIActivityViewController, context _: Context) {}
+    func updateUIViewController(_ : UIActivityViewController, context _: Context) {
+        // no-op: UIActivityViewController manages its own state after presentation
+    }
 }
 
 final class CodeFileUIView: UIView {
diff --git a/Hutch/Views/Repositories/HgRepositoryDetailView.swift b/Hutch/Views/Repositories/HgRepositoryDetailView.swift
index 71fd6a0..4a61c1d 100644
--- a/Hutch/Views/Repositories/HgRepositoryDetailView.swift
+++ b/Hutch/Views/Repositories/HgRepositoryDetailView.swift
@@ -289,7 +289,9 @@ struct HgRepositoryDetailView: View {
                     FileContentShareSheet(activityItems: [shareURL ?? fileContent])
                 }
                 .alert("Share Unavailable", isPresented: $showShareUnavailableAlert) {
-                    Button("OK", role: .cancel) {}
+                    Button("OK", role: .cancel) {
+                        // no-op: .cancel role handles alert dismissal
+                    }
                 } message: {
                     Text(SRHTShareTarget.file.fallbackMessage)
                 }
diff --git a/Hutch/Views/Tickets/TicketListView.swift b/Hutch/Views/Tickets/TicketListView.swift
index 4a48377..21e806c 100644
--- a/Hutch/Views/Tickets/TicketListView.swift
+++ b/Hutch/Views/Tickets/TicketListView.swift
@@ -25,8 +25,8 @@ struct TicketListView: View {
 
     init(
         tracker: TrackerSummary,
-        onTrackerUpdated: @escaping (TrackerSummary) -> Void = { _ in },
-        onTrackerDeleted: @escaping (TrackerSummary) -> Void = { _ in }
+        onTrackerUpdated: @escaping (TrackerSummary) -> Void = { _ in /* no-op: default for callers that don't handle this event */ },
+        onTrackerDeleted: @escaping (TrackerSummary) -> Void = { _ in /* no-op: default for callers that don't handle this event */ }
     ) {
         self._tracker = State(initialValue: tracker)
         self.onTrackerUpdated = onTrackerUpdated
@@ -123,7 +123,9 @@ struct TicketListView: View {
             }
         }
         .alert("Delete Tracker?", isPresented: $showDeleteTrackerConfirmation) {
-            Button("Cancel", role: .cancel) {}
+            Button("Cancel", role: .cancel) {
+                // no-op: .cancel role handles alert dismissal
+            }
             Button("Delete", role: .destructive) {
                 guard let trackerManagementViewModel else { return }
                 Task {
diff --git a/Hutch/Views/Tickets/TrackerListView.swift b/Hutch/Views/Tickets/TrackerListView.swift
index ac539df..50604b8 100644
--- a/Hutch/Views/Tickets/TrackerListView.swift
+++ b/Hutch/Views/Tickets/TrackerListView.swift
@@ -106,7 +106,9 @@ struct TrackerListView: View {
                 }
             }
         )) {
-            Button("Cancel", role: .cancel) {}
+            Button("Cancel", role: .cancel) {
+                // no-op: .cancel role handles alert dismissal
+            }
             Button("Delete", role: .destructive) {
                 guard let pendingDeletion, let viewModel else { return }
                 Task {
diff --git a/Hutch/Views/Tickets/TrackerManagementView.swift b/Hutch/Views/Tickets/TrackerManagementView.swift
index 5c08e4a..1542d54 100644
--- a/Hutch/Views/Tickets/TrackerManagementView.swift
+++ b/Hutch/Views/Tickets/TrackerManagementView.swift
@@ -820,7 +820,9 @@ struct TrackerACLManagementSheet: View {
                     }
                 }
             )) {
-                Button("Cancel", role: .cancel) {}
+                Button("Cancel", role: .cancel) {
+                    // no-op: .cancel role handles alert dismissal
+                }
                 Button("Delete", role: .destructive) {
                     guard let pendingDeletion else { return }
                     Task {
@@ -1157,7 +1159,9 @@ struct TrackerLabelManagementSheet: View {
                     }
                 }
             )) {
-                Button("Cancel", role: .cancel) {}
+                Button("Cancel", role: .cancel) {
+                    // no-op: .cancel role handles alert dismissal
+                }
                 Button("Delete", role: .destructive) {
                     guard let pendingDeletion else { return }
                     Task {