diff options
Diffstat (limited to 'Hutch/Views/Lookup')
| -rw-r--r-- | Hutch/Views/Lookup/UserProfileView.swift | 4 | ||||
| -rw-r--r-- | Hutch/Views/Lookup/UserProfileViewModel.swift | 11 | ||||
| -rw-r--r-- | Hutch/Views/Lookup/UserRepositoriesView.swift | 4 |
3 files changed, 17 insertions, 2 deletions
diff --git a/Hutch/Views/Lookup/UserProfileView.swift b/Hutch/Views/Lookup/UserProfileView.swift index b694738..068e05f 100644 --- a/Hutch/Views/Lookup/UserProfileView.swift +++ b/Hutch/Views/Lookup/UserProfileView.swift @@ -119,7 +119,9 @@ struct UserProfileView: View { } else { ForEach(viewModel.repositories.prefix(4)) { repo in NavigationLink { - RepositoryDetailView(repository: repo) + RepositoryDetailView(repository: repo) { updatedRepository in + viewModel.updateRepository(updatedRepository) + } } label: { RepositoryRowView(repository: repo, buildStatus: .none) } diff --git a/Hutch/Views/Lookup/UserProfileViewModel.swift b/Hutch/Views/Lookup/UserProfileViewModel.swift index 56c2852..b88d36a 100644 --- a/Hutch/Views/Lookup/UserProfileViewModel.swift +++ b/Hutch/Views/Lookup/UserProfileViewModel.swift @@ -61,6 +61,17 @@ final class UserProfileViewModel { } } + func updateRepository(_ repository: RepositorySummary) { + guard let index = repositories.firstIndex(where: { $0.id == repository.id }) else { return } + repositories[index] = repository + repositories.sort { lhs, rhs in + if lhs.updated == rhs.updated { + return lhs.name.localizedCaseInsensitiveCompare(rhs.name) == .orderedAscending + } + return lhs.updated > rhs.updated + } + } + func loadTrackers() async { isLoadingTrackers = true trackersError = nil diff --git a/Hutch/Views/Lookup/UserRepositoriesView.swift b/Hutch/Views/Lookup/UserRepositoriesView.swift index 52d3c15..7aeea10 100644 --- a/Hutch/Views/Lookup/UserRepositoriesView.swift +++ b/Hutch/Views/Lookup/UserRepositoriesView.swift @@ -7,7 +7,9 @@ struct UserRepositoriesView: View { List { ForEach(viewModel.repositories) { repo in NavigationLink { - RepositoryDetailView(repository: repo) + RepositoryDetailView(repository: repo) { updatedRepository in + viewModel.updateRepository(updatedRepository) + } } label: { RepositoryRowView(repository: repo, buildStatus: .none) } |
