diff options
| author | Christian Cleberg <[email protected]> | 2026-03-19 16:59:16 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-03-19 16:59:16 -0500 |
| commit | b82bbeeea48ad27832a355c2a41408559c411104 (patch) | |
| tree | 0af45101300c75970471573b09f878a1b3763b38 /Hutch/Views/Tickets | |
| parent | 9065ef6e92245a44390e336cc1ae515ae706cdd7 (diff) | |
| download | hutch-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.swift | 8 | ||||
| -rw-r--r-- | Hutch/Views/Tickets/TicketDetailViewModel.swift | 20 | ||||
| -rw-r--r-- | Hutch/Views/Tickets/TicketListView.swift | 1 | ||||
| -rw-r--r-- | Hutch/Views/Tickets/TicketListViewModel.swift | 6 | ||||
| -rw-r--r-- | Hutch/Views/Tickets/TrackerListViewModel.swift | 19 |
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)" } } |
