diff options
| author | Christian Cleberg <[email protected]> | 2026-03-18 19:28:42 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-03-18 19:28:42 -0500 |
| commit | bb8fae4d1145266de4f5117a3b8c48f2ccacb0be (patch) | |
| tree | 2b4ce5b2a114c5df60aa20db07ad1d38f426e59d /Hutch/Views/Repositories/FileTreeViewModel.swift | |
| parent | e07b4a28d6ac6086e5b652f72b9089e4d06f7e80 (diff) | |
| download | hutch-bb8fae4d1145266de4f5117a3b8c48f2ccacb0be.tar.gz hutch-bb8fae4d1145266de4f5117a3b8c48f2ccacb0be.tar.bz2 hutch-bb8fae4d1145266de4f5117a3b8c48f2ccacb0be.zip | |
lazily load file blobs from repository tree views
Diffstat (limited to 'Hutch/Views/Repositories/FileTreeViewModel.swift')
| -rw-r--r-- | Hutch/Views/Repositories/FileTreeViewModel.swift | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/Hutch/Views/Repositories/FileTreeViewModel.swift b/Hutch/Views/Repositories/FileTreeViewModel.swift index f270779..a9c86b4 100644 --- a/Hutch/Views/Repositories/FileTreeViewModel.swift +++ b/Hutch/Views/Repositories/FileTreeViewModel.swift @@ -96,6 +96,7 @@ final class FileTreeViewModel { mode object { type + __typename id shortId ... on Tree { @@ -110,12 +111,10 @@ final class FileTreeViewModel { } } ... on TextBlob { - text size } ... on BinaryBlob { size - content } } } @@ -142,6 +141,7 @@ final class FileTreeViewModel { mode object { type + __typename id shortId ... on Tree { @@ -156,12 +156,10 @@ final class FileTreeViewModel { } } ... on TextBlob { - text size } ... on BinaryBlob { size - content } } } @@ -187,6 +185,7 @@ final class FileTreeViewModel { mode object { type + __typename id shortId ... on Tree { @@ -201,12 +200,10 @@ final class FileTreeViewModel { } } ... on TextBlob { - text size } ... on BinaryBlob { size - content } } } @@ -321,16 +318,23 @@ final class FileTreeViewModel { // Otherwise fetch the subtree (handles pagination) await loadSubtree(name: entry.name, treeId: objectSHA) - case .textBlob: - viewingEntry = entry - viewingObject = object + case .textBlob(let blob): + if blob.text != nil { + viewingEntry = entry + viewingObject = object + } else if let blobId = blob.id { + await loadBlob(entry: entry, blobId: blobId) + } case .binaryBlob(let blob): - if blob.content != nil || blob.size != nil { + if blob.content != nil { viewingEntry = entry viewingObject = object } else if let blobId = blob.id { await loadBlob(entry: entry, blobId: blobId) + } else { + viewingEntry = entry + viewingObject = object } case .unknown: |
