diff options
| -rw-r--r-- | Hutch.xcodeproj/project.pbxproj | 8 | ||||
| -rw-r--r-- | Hutch/Extensions/SRHTShareUI.swift | 9 | ||||
| -rw-r--r-- | Hutch/Views/Builds/BuildDetailView.swift | 4 | ||||
| -rw-r--r-- | Hutch/Views/Inbox/ThreadDetailView.swift | 5 | ||||
| -rw-r--r-- | Hutch/Views/Pastes/PasteDetailView.swift | 4 | ||||
| -rw-r--r-- | Hutch/Views/Repositories/HgRepositorySettingsView.swift | 13 | ||||
| -rw-r--r-- | Hutch/Views/Repositories/RepositorySettingsView.swift | 8 | ||||
| -rw-r--r-- | Hutch/Views/Settings/SettingsView.swift | 8 | ||||
| -rw-r--r-- | Hutch/Views/Tickets/TicketDetailView.swift | 4 |
9 files changed, 46 insertions, 17 deletions
diff --git a/Hutch.xcodeproj/project.pbxproj b/Hutch.xcodeproj/project.pbxproj index 44faf93..be22f3f 100644 --- a/Hutch.xcodeproj/project.pbxproj +++ b/Hutch.xcodeproj/project.pbxproj @@ -359,7 +359,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 8; + CURRENT_PROJECT_VERSION = 9; DEVELOPMENT_TEAM = ZCNAX3VL9D; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; @@ -376,7 +376,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 2.3.0; + MARKETING_VERSION = 2.3.1; PRODUCT_BUNDLE_IDENTIFIER = net.cleberg.Hutch; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = YES; @@ -395,7 +395,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 8; + CURRENT_PROJECT_VERSION = 9; DEVELOPMENT_TEAM = ZCNAX3VL9D; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; @@ -412,7 +412,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 2.3.0; + MARKETING_VERSION = 2.3.1; PRODUCT_BUNDLE_IDENTIFIER = net.cleberg.Hutch; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = YES; diff --git a/Hutch/Extensions/SRHTShareUI.swift b/Hutch/Extensions/SRHTShareUI.swift index 01f3d91..d09476f 100644 --- a/Hutch/Extensions/SRHTShareUI.swift +++ b/Hutch/Extensions/SRHTShareUI.swift @@ -40,7 +40,9 @@ struct SRHTShareButton<Label: View>: View { } } .alert("Share Unavailable", isPresented: $isShowingFallbackAlert) { - Button("OK", role: .cancel) {} + Button("OK", role: .cancel) { + // Alert dismissal is implicit; no additional action required. + } } message: { Text(target.fallbackMessage) } @@ -54,5 +56,8 @@ private struct ShareSheet: UIViewControllerRepresentable { UIActivityViewController(activityItems: activityItems, applicationActivities: nil) } - func updateUIViewController(_ uiViewController: UIActivityViewController, context: Context) {} + func updateUIViewController(_ uiViewController: UIActivityViewController, context: Context) { + // UIActivityViewController is fully configured in makeUIViewController. + // No state-driven updates are required. + } } diff --git a/Hutch/Views/Builds/BuildDetailView.swift b/Hutch/Views/Builds/BuildDetailView.swift index 104b961..1c2e2bb 100644 --- a/Hutch/Views/Builds/BuildDetailView.swift +++ b/Hutch/Views/Builds/BuildDetailView.swift @@ -87,7 +87,9 @@ struct BuildDetailView: View { } } .alert("Cancel Build?", isPresented: $showCancelConfirmation) { - Button("Keep Running", role: .cancel) {} + Button("Keep Running", role: .cancel) { + // Alert dismissal is implicit; no additional action required. + } Button("Cancel Build", role: .destructive) { Task { await viewModel?.cancelJob() } } diff --git a/Hutch/Views/Inbox/ThreadDetailView.swift b/Hutch/Views/Inbox/ThreadDetailView.swift index e4c34e7..143200f 100644 --- a/Hutch/Views/Inbox/ThreadDetailView.swift +++ b/Hutch/Views/Inbox/ThreadDetailView.swift @@ -277,7 +277,10 @@ private struct MailComposeView: UIViewControllerRepresentable { return controller } - func updateUIViewController(_ uiViewController: UIViewController, context: Context) {} + func updateUIViewController(_ uiViewController: UIViewController, context: Context) { + // The view controller is fully configured in makeUIViewController. + // No state-driven updates are required. + } final class Coordinator: NSObject, MFMailComposeViewControllerDelegate { let onComplete: (Result) -> Void diff --git a/Hutch/Views/Pastes/PasteDetailView.swift b/Hutch/Views/Pastes/PasteDetailView.swift index df3a8be..19cfd52 100644 --- a/Hutch/Views/Pastes/PasteDetailView.swift +++ b/Hutch/Views/Pastes/PasteDetailView.swift @@ -63,7 +63,9 @@ struct PasteDetailView: View { } } .alert("Delete Paste?", isPresented: $showDeleteConfirmation) { - Button("Cancel", role: .cancel) {} + Button("Cancel", role: .cancel) { + // Alert dismissal is implicit; no additional action required. + } Button("Delete", role: .destructive) { Task { if await viewModel?.deletePaste() == true { diff --git a/Hutch/Views/Repositories/HgRepositorySettingsView.swift b/Hutch/Views/Repositories/HgRepositorySettingsView.swift index 5f45da8..6a27465 100644 --- a/Hutch/Views/Repositories/HgRepositorySettingsView.swift +++ b/Hutch/Views/Repositories/HgRepositorySettingsView.swift @@ -55,7 +55,9 @@ struct HgRepositorySettingsView: View { "Permanently delete \(repository.owner.canonicalName)/\(repository.name)?", isPresented: $showDeleteConfirmation ) { - Button("Cancel", role: .cancel) {} + Button("Cancel", role: .cancel) { + // Alert dismissal is implicit; no additional action required. + } Button("Delete", role: .destructive) { Task { await viewModel.deleteRepository() @@ -76,7 +78,9 @@ struct HgRepositorySettingsView: View { } } )) { - Button("Cancel", role: .cancel) {} + Button("Cancel", role: .cancel) { + // Alert dismissal is implicit; no additional action required. + } Button("Remove Access", role: .destructive) { guard let entry = pendingACLDeletion else { return } Task { @@ -234,7 +238,10 @@ struct HgRepositorySettingsView: View { .font(.caption) .foregroundStyle(.secondary) - Button("Remove Revision", role: .destructive) {} + Button("Remove Revision", role: .destructive) { + // Not implemented: the hg.sr.ht API does not expose a histedit endpoint. + // This button is disabled until the API supports revision removal. + } .disabled(true) } } diff --git a/Hutch/Views/Repositories/RepositorySettingsView.swift b/Hutch/Views/Repositories/RepositorySettingsView.swift index 5606ec6..ff72335 100644 --- a/Hutch/Views/Repositories/RepositorySettingsView.swift +++ b/Hutch/Views/Repositories/RepositorySettingsView.swift @@ -58,7 +58,9 @@ struct RepositorySettingsView: View { "Permanently delete \(repository.owner.canonicalName)/\(repository.name)?", isPresented: $showDeleteConfirmation ) { - Button("Cancel", role: .cancel) {} + Button("Cancel", role: .cancel) { + // Alert dismissal is implicit; no additional action required. + } Button("Delete", role: .destructive) { Task { await viewModel.deleteRepository() @@ -79,7 +81,9 @@ struct RepositorySettingsView: View { } } )) { - Button("Cancel", role: .cancel) {} + Button("Cancel", role: .cancel) { + // Alert dismissal is implicit; no additional action required. + } Button("Remove Access", role: .destructive) { guard let entry = pendingACLDeletion else { return } Task { diff --git a/Hutch/Views/Settings/SettingsView.swift b/Hutch/Views/Settings/SettingsView.swift index 30758a8..e90f4e3 100644 --- a/Hutch/Views/Settings/SettingsView.swift +++ b/Hutch/Views/Settings/SettingsView.swift @@ -99,7 +99,9 @@ struct SettingsView: View { } ) ) { - Button("Cancel", role: .cancel) {} + Button("Cancel", role: .cancel) { + // Alert dismissal is implicit; no additional action required. + } Button(pendingDestructiveAction?.confirmationLabel ?? "Confirm", role: .destructive) { guard let action = pendingDestructiveAction else { return } pendingDestructiveAction = nil @@ -608,7 +610,9 @@ private struct EditProfileSheet: View { } } .alert("Remove Avatar?", isPresented: $isShowingRemoveAvatarConfirmation) { - Button("Cancel", role: .cancel) {} + Button("Cancel", role: .cancel) { + // Alert dismissal is implicit; no additional action required. + } Button("Remove Avatar", role: .destructive) { Task { await viewModel.removeAvatar() diff --git a/Hutch/Views/Tickets/TicketDetailView.swift b/Hutch/Views/Tickets/TicketDetailView.swift index 0631d7f..6ed5df0 100644 --- a/Hutch/Views/Tickets/TicketDetailView.swift +++ b/Hutch/Views/Tickets/TicketDetailView.swift @@ -424,7 +424,9 @@ private struct EventRow: View { .padding(.horizontal) .padding(.vertical, 8) .alert("System Status Change", isPresented: $isShowingSystemStatusInfo) { - Button("OK", role: .cancel) {} + Button("OK", role: .cancel) { + // Alert dismissal is implicit; no additional action required. + } } message: { Text("This status change was recorded automatically or without a named user attached to the event.") } |
