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.swift22
1 files changed, 17 insertions, 5 deletions
diff --git a/Hutch/Views/Repositories/RepositoryDetailViewModel.swift b/Hutch/Views/Repositories/RepositoryDetailViewModel.swift
index 9aff1a4..4839437 100644
--- a/Hutch/Views/Repositories/RepositoryDetailViewModel.swift
+++ b/Hutch/Views/Repositories/RepositoryDetailViewModel.swift
@@ -138,6 +138,7 @@ final class RepositoryDetailViewModel {
private(set) var readmePath: String?
private(set) var isLoadingReadme = false
private(set) var readmeLoaded = false
+ private(set) var readmeCacheMetadata: CacheEntryMetadata?
// MARK: - Artifacts state
@@ -379,13 +380,18 @@ final class RepositoryDetailViewModel {
do {
// Step 1: Check the custom HTML readme set via the web UI
- let result = try await client.execute(
+ let result = try await client.executeCached(
service: service,
query: Self.readmeQuery,
variables: ["rid": repository.rid],
- responseType: ReadmeResponse.self
+ responseType: ReadmeResponse.self,
+ cacheKey: APICacheKeys.readme(service: service, rid: repository.rid),
+ resourceType: .repositoryReadme,
+ ttl: APICacheTTLs.movingRefFileContent,
+ policy: .cacheFirstThenRefresh
)
- if let html = result.repository?.readme, !html.isEmpty {
+ readmeCacheMetadata = result.metadata
+ if let html = result.value.repository?.readme, !html.isEmpty {
readmePath = nil
readmeContent = .html(html)
readmeLoaded = true
@@ -396,12 +402,18 @@ final class RepositoryDetailViewModel {
for filename in Self.readmeFilenames {
let pathResult: PathResponse
do {
- pathResult = try await client.execute(
+ let cached = try await client.executeCached(
service: service,
query: Self.readmeFileQuery(filename: filename),
variables: ["rid": repository.rid],
- responseType: PathResponse.self
+ responseType: PathResponse.self,
+ cacheKey: APICacheKeys.readme(service: service, rid: repository.rid, path: filename),
+ resourceType: .repositoryReadme,
+ ttl: APICacheTTLs.movingRefFileContent,
+ policy: .cacheFirstThenRefresh
)
+ pathResult = cached.value
+ readmeCacheMetadata = cached.metadata
} catch {
if isEmptyRepositoryError(error) {
readmeContent = nil