summaryrefslogtreecommitdiff
path: root/Hutch/Views/Repositories
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/Repositories
parent9065ef6e92245a44390e336cc1ae515ae706cdd7 (diff)
downloadhutch-b82bbeeea48ad27832a355c2a41408559c411104.tar.gz
hutch-b82bbeeea48ad27832a355c2a41408559c411104.tar.bz2
hutch-b82bbeeea48ad27832a355c2a41408559c411104.zip
v2.1: bundled polish and fixes
Diffstat (limited to 'Hutch/Views/Repositories')
-rw-r--r--Hutch/Views/Repositories/CommitDetailViewModel.swift2
-rw-r--r--Hutch/Views/Repositories/FileTreeViewModel.swift8
-rw-r--r--Hutch/Views/Repositories/HgRepositoryDetailViewModel.swift10
-rw-r--r--Hutch/Views/Repositories/HgRepositorySettingsViewModel.swift12
-rw-r--r--Hutch/Views/Repositories/RepositoryDetailViewModel.swift10
-rw-r--r--Hutch/Views/Repositories/RepositoryListView.swift1
-rw-r--r--Hutch/Views/Repositories/RepositoryListViewModel.swift17
-rw-r--r--Hutch/Views/Repositories/RepositorySettingsViewModel.swift12
8 files changed, 30 insertions, 42 deletions
diff --git a/Hutch/Views/Repositories/CommitDetailViewModel.swift b/Hutch/Views/Repositories/CommitDetailViewModel.swift
index 5a8a23d..f0898f5 100644
--- a/Hutch/Views/Repositories/CommitDetailViewModel.swift
+++ b/Hutch/Views/Repositories/CommitDetailViewModel.swift
@@ -68,7 +68,7 @@ final class CommitDetailViewModel {
let result = try await executeWithRetry()
commit = result.repository?.revparse_single
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
isLoading = false
diff --git a/Hutch/Views/Repositories/FileTreeViewModel.swift b/Hutch/Views/Repositories/FileTreeViewModel.swift
index a9c86b4..c6fecbe 100644
--- a/Hutch/Views/Repositories/FileTreeViewModel.swift
+++ b/Hutch/Views/Repositories/FileTreeViewModel.swift
@@ -294,7 +294,7 @@ final class FileTreeViewModel {
entries = []
}
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
@@ -372,7 +372,7 @@ final class FileTreeViewModel {
}
entries = allEntries
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
@@ -397,7 +397,7 @@ final class FileTreeViewModel {
viewingEntry = entry
viewingObject = result.repository?.object ?? .unknown
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
@@ -449,7 +449,7 @@ final class FileTreeViewModel {
}
entries = allEntries
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
}
diff --git a/Hutch/Views/Repositories/HgRepositoryDetailViewModel.swift b/Hutch/Views/Repositories/HgRepositoryDetailViewModel.swift
index 30ee3bb..5a0298c 100644
--- a/Hutch/Views/Repositories/HgRepositoryDetailViewModel.swift
+++ b/Hutch/Views/Repositories/HgRepositoryDetailViewModel.swift
@@ -344,7 +344,7 @@ final class HgRepositoryDetailViewModel {
summaryLoaded = true
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
@@ -367,7 +367,7 @@ final class HgRepositoryDetailViewModel {
logCursor = nil
hasMoreLog = false
} else {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
}
@@ -389,7 +389,7 @@ final class HgRepositoryDetailViewModel {
logCursor = page.cursor
hasMoreLog = page.cursor != nil
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
@@ -470,7 +470,7 @@ final class HgRepositoryDetailViewModel {
await loadFiles(at: path)
}
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
@@ -515,7 +515,7 @@ final class HgRepositoryDetailViewModel {
pathStack = path.isEmpty ? [] : path.split(separator: "/").map(String.init)
files = []
} else {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
}
diff --git a/Hutch/Views/Repositories/HgRepositorySettingsViewModel.swift b/Hutch/Views/Repositories/HgRepositorySettingsViewModel.swift
index 3e431f8..6cb6e36 100644
--- a/Hutch/Views/Repositories/HgRepositorySettingsViewModel.swift
+++ b/Hutch/Views/Repositories/HgRepositorySettingsViewModel.swift
@@ -164,7 +164,7 @@ final class HgRepositorySettingsViewModel {
editedNonPublishing = repository.nonPublishing ?? false
}
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
@@ -186,7 +186,7 @@ final class HgRepositorySettingsViewModel {
responseType: HgUpdateRepositoryResponse.self
)
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
@@ -205,7 +205,7 @@ final class HgRepositorySettingsViewModel {
)
acls = result.repository?.accessControlList.results ?? []
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
@@ -239,7 +239,7 @@ final class HgRepositorySettingsViewModel {
if message.localizedCaseInsensitiveContains("No such repository or user found") {
self.error = "That user is not available on hg.sr.ht yet. They need to create or activate an hg.sr.ht repository first."
} else {
- self.error = message
+ self.error = error.userFacingMessage
}
}
}
@@ -263,7 +263,7 @@ final class HgRepositorySettingsViewModel {
)
acls.removeAll { $0.id == entry.id }
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
@@ -281,7 +281,7 @@ final class HgRepositorySettingsViewModel {
)
didDelete = true
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
}
diff --git a/Hutch/Views/Repositories/RepositoryDetailViewModel.swift b/Hutch/Views/Repositories/RepositoryDetailViewModel.swift
index afc748d..e2eaf4d 100644
--- a/Hutch/Views/Repositories/RepositoryDetailViewModel.swift
+++ b/Hutch/Views/Repositories/RepositoryDetailViewModel.swift
@@ -161,7 +161,7 @@ final class RepositoryDetailViewModel {
commitCursor = page.cursor
hasMoreCommits = page.cursor != nil
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
isLoadingCommits = false
@@ -183,7 +183,7 @@ final class RepositoryDetailViewModel {
commitCursor = page.cursor
hasMoreCommits = page.cursor != nil
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
isLoadingMoreCommits = false
@@ -243,7 +243,7 @@ final class RepositoryDetailViewModel {
branches = allRefs.filter { $0.name.hasPrefix("refs/heads/") }
tags = allRefs.filter { $0.name.hasPrefix("refs/tags/") }
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
isLoadingRefs = false
@@ -337,7 +337,7 @@ final class RepositoryDetailViewModel {
readmePath = nil
readmeLoaded = true
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
@@ -389,7 +389,7 @@ final class RepositoryDetailViewModel {
.filter { !$0.artifacts.results.isEmpty }
.map { ReferenceWithArtifacts(name: $0.name, artifacts: $0.artifacts.results) }
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
isLoadingArtifacts = false
diff --git a/Hutch/Views/Repositories/RepositoryListView.swift b/Hutch/Views/Repositories/RepositoryListView.swift
index 7cac8a8..90876e7 100644
--- a/Hutch/Views/Repositories/RepositoryListView.swift
+++ b/Hutch/Views/Repositories/RepositoryListView.swift
@@ -24,6 +24,7 @@ struct RepositoryListView: View {
} label: {
Image(systemName: "plus")
}
+ .accessibilityLabel("Create repository")
}
}
}
diff --git a/Hutch/Views/Repositories/RepositoryListViewModel.swift b/Hutch/Views/Repositories/RepositoryListViewModel.swift
index 5bdc4a5..fd5bafe 100644
--- a/Hutch/Views/Repositories/RepositoryListViewModel.swift
+++ b/Hutch/Views/Repositories/RepositoryListViewModel.swift
@@ -189,7 +189,7 @@ final class RepositoryListViewModel {
} catch {
// Only show error if we have no cached data to fall back on
if repositories.isEmpty {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
@@ -272,20 +272,7 @@ final class RepositoryListViewModel {
}
private func repositoryCreationErrorMessage(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 repository. \(message)"
+ "Couldn’t create the repository. \(error.userFacingMessage)"
}
/// Fetch ALL repositories by paginating through all available pages.
diff --git a/Hutch/Views/Repositories/RepositorySettingsViewModel.swift b/Hutch/Views/Repositories/RepositorySettingsViewModel.swift
index 71d6ab6..ca8e501 100644
--- a/Hutch/Views/Repositories/RepositorySettingsViewModel.swift
+++ b/Hutch/Views/Repositories/RepositorySettingsViewModel.swift
@@ -173,7 +173,7 @@ final class RepositorySettingsViewModel {
responseType: UpdateRepoInfoResponse.self
)
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
@@ -196,7 +196,7 @@ final class RepositorySettingsViewModel {
)
updatedName = result.updateRepository.name
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
@@ -255,7 +255,7 @@ final class RepositorySettingsViewModel {
)
acls = result.repository?.acls.results ?? []
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
@@ -286,7 +286,7 @@ final class RepositorySettingsViewModel {
}
newACLEntity = ""
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
@@ -331,7 +331,7 @@ final class RepositorySettingsViewModel {
)
acls.removeAll { $0.id == entry.id }
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
@@ -357,7 +357,7 @@ final class RepositorySettingsViewModel {
)
didDelete = true
} catch {
- self.error = error.localizedDescription
+ self.error = error.userFacingMessage
}
}
}