summaryrefslogtreecommitdiff
path: root/Hutch/Views
diff options
context:
space:
mode:
Diffstat (limited to 'Hutch/Views')
-rw-r--r--Hutch/Views/Builds/BuildListViewModel.swift5
-rw-r--r--Hutch/Views/Pastes/PasteListView.swift8
-rw-r--r--Hutch/Views/Repositories/CommitDetailViewModel.swift9
-rw-r--r--Hutch/Views/Repositories/FileTreeViewModel.swift8
4 files changed, 19 insertions, 11 deletions
diff --git a/Hutch/Views/Builds/BuildListViewModel.swift b/Hutch/Views/Builds/BuildListViewModel.swift
index 643bacd..cf5d786 100644
--- a/Hutch/Views/Builds/BuildListViewModel.swift
+++ b/Hutch/Views/Builds/BuildListViewModel.swift
@@ -182,12 +182,13 @@ final class BuildListViewModel {
/// Fetch the first page of jobs. Shows cached data instantly if available,
/// then refreshes from the network in the background.
func loadJobs() async {
- // Show cached data immediately on first load
+ // Show cached data immediately on first load (may populate `jobs` from cache).
if jobs.isEmpty {
loadFromCache()
}
- if jobs.isEmpty {
+ let treatAsInitialLoad = jobs.isEmpty
+ if treatAsInitialLoad {
isLoading = true
} else {
isRefreshing = true
diff --git a/Hutch/Views/Pastes/PasteListView.swift b/Hutch/Views/Pastes/PasteListView.swift
index 17bb8ac..b325153 100644
--- a/Hutch/Views/Pastes/PasteListView.swift
+++ b/Hutch/Views/Pastes/PasteListView.swift
@@ -276,14 +276,14 @@ private struct CreatePasteSheet: View {
NavigationStack {
Form {
Section("Files") {
- ForEach($files) { $file in
+ ForEach($files) { fileBinding in
VStack(alignment: .leading, spacing: 8) {
- TextField("Filename (optional)", text: $file.filename)
+ TextField("Filename (optional)", text: fileBinding.filename)
.autocorrectionDisabled()
.textInputAutocapitalization(.never)
ZStack(alignment: .topLeading) {
- if file.contents.isEmpty {
+ if fileBinding.wrappedValue.contents.isEmpty {
Text("Paste contents")
.foregroundStyle(.tertiary)
.padding(.top, 8)
@@ -291,7 +291,7 @@ private struct CreatePasteSheet: View {
.allowsHitTesting(false)
}
- TextEditor(text: $file.contents)
+ TextEditor(text: fileBinding.contents)
.font(.system(.body, design: .monospaced))
.frame(minHeight: 180)
}
diff --git a/Hutch/Views/Repositories/CommitDetailViewModel.swift b/Hutch/Views/Repositories/CommitDetailViewModel.swift
index f0898f5..92fb915 100644
--- a/Hutch/Views/Repositories/CommitDetailViewModel.swift
+++ b/Hutch/Views/Repositories/CommitDetailViewModel.swift
@@ -7,8 +7,11 @@ private struct CommitResponse: Decodable, Sendable {
}
private struct CommitRepository: Decodable, Sendable {
- // swiftlint:disable:next identifier_name
- let revparse_single: CommitDetail
+ let revparseSingle: CommitDetail
+
+ enum CodingKeys: String, CodingKey {
+ case revparseSingle = "revparse_single"
+ }
}
// MARK: - View Model
@@ -66,7 +69,7 @@ final class CommitDetailViewModel {
do {
let result = try await executeWithRetry()
- commit = result.repository?.revparse_single
+ commit = result.repository?.revparseSingle
} catch {
self.error = error.userFacingMessage
}
diff --git a/Hutch/Views/Repositories/FileTreeViewModel.swift b/Hutch/Views/Repositories/FileTreeViewModel.swift
index 98211bf..7330cd8 100644
--- a/Hutch/Views/Repositories/FileTreeViewModel.swift
+++ b/Hutch/Views/Repositories/FileTreeViewModel.swift
@@ -7,7 +7,11 @@ private struct RevparseResponse: Decodable, Sendable {
}
private struct RevparseRepository: Decodable, Sendable {
- let revparse_single: RevparseCommit?
+ let revparseSingle: RevparseCommit?
+
+ enum CodingKeys: String, CodingKey {
+ case revparseSingle = "revparse_single"
+ }
}
private struct RevparseCommit: Decodable, Sendable {
@@ -277,7 +281,7 @@ final class FileTreeViewModel {
}
throw error
}
- if let tree = result.repository?.revparse_single?.tree,
+ if let tree = result.repository?.revparseSingle?.tree,
let rootId = tree.id {
navStack = [FileNavEntry(name: "root", treeId: rootId)]
var allEntries = tree.entries?.results ?? []