summaryrefslogtreecommitdiff
path: root/Hutch/Views/Repositories/RepositoryDetailViewModel.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Hutch/Views/Repositories/RepositoryDetailViewModel.swift')
-rw-r--r--Hutch/Views/Repositories/RepositoryDetailViewModel.swift24
1 files changed, 19 insertions, 5 deletions
diff --git a/Hutch/Views/Repositories/RepositoryDetailViewModel.swift b/Hutch/Views/Repositories/RepositoryDetailViewModel.swift
index ebd07d2..8dec51b 100644
--- a/Hutch/Views/Repositories/RepositoryDetailViewModel.swift
+++ b/Hutch/Views/Repositories/RepositoryDetailViewModel.swift
@@ -226,7 +226,7 @@ final class RepositoryDetailViewModel {
responseType: LogResponse.self
)
} catch {
- if isMissingGitReferenceError(error) {
+ if isEmptyRepositoryError(error) {
return LogPage(results: [], cursor: nil)
}
throw error
@@ -273,7 +273,12 @@ final class RepositoryDetailViewModel {
branches = allRefs.filter { $0.name.hasPrefix("refs/heads/") }.map { $0.toDetail() }
tags = allRefs.filter { $0.name.hasPrefix("refs/tags/") }.map { $0.toDetail() }
} catch {
- self.error = error.userFacingMessage
+ if isEmptyRepositoryError(error) {
+ branches = []
+ tags = []
+ } else {
+ self.error = error.userFacingMessage
+ }
}
isLoadingRefs = false
@@ -340,7 +345,7 @@ final class RepositoryDetailViewModel {
responseType: PathResponse.self
)
} catch {
- if isMissingGitReferenceError(error) {
+ if isEmptyRepositoryError(error) {
readmeContent = nil
readmePath = nil
readmeLoaded = true
@@ -371,8 +376,13 @@ final class RepositoryDetailViewModel {
}
}
- private func isMissingGitReferenceError(_ error: Error) -> Bool {
+ private func isEmptyRepositoryError(_ error: Error) -> Bool {
error.matchesGraphQLErrorClassification(.missingReference)
+ || error.matchesGraphQLErrorClassification(.unknownRevision)
+ || error.matchesGraphQLErrorClassification(.noRows)
+ || error.matchesGraphQLErrorClassification(.notFound)
+ || error.containsGraphQLErrorMessage("missing")
+ || error.containsGraphQLErrorMessage("internal system error")
}
// MARK: - Artifacts
@@ -417,7 +427,11 @@ final class RepositoryDetailViewModel {
.filter { !$0.artifacts.results.isEmpty }
.map { ReferenceWithArtifacts(name: $0.name, artifacts: $0.artifacts.results) }
} catch {
- self.error = error.userFacingMessage
+ if isEmptyRepositoryError(error) {
+ referenceArtifacts = []
+ } else {
+ self.error = error.userFacingMessage
+ }
}
isLoadingArtifacts = false