summaryrefslogtreecommitdiff
path: root/Hutch/Views/Tickets
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-03-19 16:59:16 -0500
committerChristian Cleberg <[email protected]>2026-03-19 16:59:16 -0500
commitb82bbeeea48ad27832a355c2a41408559c411104 (patch)
tree0af45101300c75970471573b09f878a1b3763b38 /Hutch/Views/Tickets
parent9065ef6e92245a44390e336cc1ae515ae706cdd7 (diff)
downloadhutch-b82bbeeea48ad27832a355c2a41408559c411104.tar.gz
hutch-b82bbeeea48ad27832a355c2a41408559c411104.tar.bz2
hutch-b82bbeeea48ad27832a355c2a41408559c411104.zip
v2.1: bundled polish and fixes
Diffstat (limited to 'Hutch/Views/Tickets')
-rw-r--r--Hutch/Views/Tickets/TicketDetailView.swift8
-rw-r--r--Hutch/Views/Tickets/TicketDetailViewModel.swift20
-rw-r--r--Hutch/Views/Tickets/TicketListView.swift1
-rw-r--r--Hutch/Views/Tickets/TicketListViewModel.swift6
-rw-r--r--Hutch/Views/Tickets/TrackerListViewModel.swift19
5 files changed, 19 insertions, 35 deletions
diff --git a/Hutch/Views/Tickets/TicketDetailView.swift b/Hutch/Views/Tickets/TicketDetailView.swift
index 5ca8618..0631d7f 100644
--- a/Hutch/Views/Tickets/TicketDetailView.swift
+++ b/Hutch/Views/Tickets/TicketDetailView.swift
@@ -100,6 +100,7 @@ struct TicketDetailView: View {
} label: {
Image(systemName: "ellipsis.circle")
}
+ .accessibilityLabel("Ticket actions")
.sheet(isPresented: $showResolveSheet) {
ResolveSheet(viewModel: viewModel, isPresented: $showResolveSheet)
.presentationDetents([.medium])
@@ -311,7 +312,7 @@ struct TicketDetailView: View {
} else {
MarkdownContentView(markdown: viewModel.commentText)
.frame(minHeight: 80, maxHeight: 200)
- .clipShape(RoundedRectangle(cornerRadius: 8))
+ .clipShape(RoundedRectangle(cornerRadius: 8))
}
}
@@ -359,11 +360,6 @@ private struct MarkdownContentView: View {
}
}
.task(id: markdown) {
- if renderedHTML != nil {
- try? await Task.sleep(for: .milliseconds(150))
- guard !Task.isCancelled else { return }
- }
-
let html = await Task.detached(priority: .userInitiated) {
markdownToHTML(markdown)
}.value
diff --git a/Hutch/Views/Tickets/TicketDetailViewModel.swift b/Hutch/Views/Tickets/TicketDetailViewModel.swift
index 660715b..142c62b 100644
--- a/Hutch/Views/Tickets/TicketDetailViewModel.swift
+++ b/Hutch/Views/Tickets/TicketDetailViewModel.swift
@@ -324,7 +324,7 @@ final class TicketDetailViewModel {
)
events = payload.events.results.sorted(by: Self.timelineOrder)
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
isLoading = false
@@ -359,7 +359,7 @@ final class TicketDetailViewModel {
events.sort(by: Self.timelineOrder)
commentText = ""
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
isSubmitting = false
@@ -393,7 +393,7 @@ final class TicketDetailViewModel {
// Re-fetch the ticket to get updated status/resolution
await loadTicket()
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
isPerformingAction = false
@@ -427,7 +427,7 @@ final class TicketDetailViewModel {
// Reload to reflect the change
await loadTicket()
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
isPerformingAction = false
@@ -485,7 +485,7 @@ final class TicketDetailViewModel {
assignees: currentAssignees,
labels: currentTicket.labels
)
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
isPerformingAction = false
@@ -520,7 +520,7 @@ final class TicketDetailViewModel {
// Reload to reflect the change
await loadTicket()
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
isPerformingAction = false
@@ -544,7 +544,7 @@ final class TicketDetailViewModel {
)
await loadTicket()
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
isPerformingAction = false
@@ -568,7 +568,7 @@ final class TicketDetailViewModel {
)
await loadTicket()
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
isPerformingAction = false
@@ -587,7 +587,7 @@ final class TicketDetailViewModel {
)
trackerLabels = result.user.tracker.labels.results
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
@@ -610,7 +610,7 @@ final class TicketDetailViewModel {
)
trackerLabels.append(result.createLabel)
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
isPerformingAction = false
diff --git a/Hutch/Views/Tickets/TicketListView.swift b/Hutch/Views/Tickets/TicketListView.swift
index 7e16276..ef0da23 100644
--- a/Hutch/Views/Tickets/TicketListView.swift
+++ b/Hutch/Views/Tickets/TicketListView.swift
@@ -33,6 +33,7 @@ struct TicketListView: View {
} label: {
Image(systemName: "plus")
}
+ .accessibilityLabel("Create ticket")
}
}
}
diff --git a/Hutch/Views/Tickets/TicketListViewModel.swift b/Hutch/Views/Tickets/TicketListViewModel.swift
index 916037e..f3c9416 100644
--- a/Hutch/Views/Tickets/TicketListViewModel.swift
+++ b/Hutch/Views/Tickets/TicketListViewModel.swift
@@ -121,7 +121,7 @@ final class TicketListViewModel {
cursor = page.cursor
hasMore = page.cursor != nil
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
isLoading = false
@@ -143,7 +143,7 @@ final class TicketListViewModel {
cursor = page.cursor
hasMore = page.cursor != nil
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
isLoadingMore = false
@@ -185,7 +185,7 @@ final class TicketListViewModel {
tickets.insert(ticket, at: 0)
return ticket
} catch {
- self.error = "Couldn’t create the ticket. \(error.localizedDescription)"
+ self.error = "Couldn’t create the ticket. \(error.userFacingMessage)"
return nil
}
}
diff --git a/Hutch/Views/Tickets/TrackerListViewModel.swift b/Hutch/Views/Tickets/TrackerListViewModel.swift
index 978a610..9c241ae 100644
--- a/Hutch/Views/Tickets/TrackerListViewModel.swift
+++ b/Hutch/Views/Tickets/TrackerListViewModel.swift
@@ -78,7 +78,7 @@ final class TrackerListViewModel {
cursor = page.cursor
hasMore = page.cursor != nil
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
isLoading = false
@@ -100,7 +100,7 @@ final class TrackerListViewModel {
cursor = page.cursor
hasMore = page.cursor != nil
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
isLoadingMore = false
@@ -165,19 +165,6 @@ final class TrackerListViewModel {
}
private func trackerCreationErrorMessage(for error: Error) -> String {
- let message: String
-
- if let srhtError = error as? SRHTError {
- switch srhtError {
- case .graphQLErrors(let errors):
- message = errors.map(\.message).joined(separator: "\n")
- default:
- message = srhtError.localizedDescription
- }
- } else {
- message = error.localizedDescription
- }
-
- return "Couldn’t create the tracker. \(message)"
+ "Couldn’t create the tracker. \(error.userFacingMessage)"
}
}