summaryrefslogtreecommitdiff
path: root/Hutch/Views/Lookup
diff options
context:
space:
mode:
Diffstat (limited to 'Hutch/Views/Lookup')
-rw-r--r--Hutch/Views/Lookup/UserProfileView.swift4
-rw-r--r--Hutch/Views/Lookup/UserProfileViewModel.swift11
-rw-r--r--Hutch/Views/Lookup/UserRepositoriesView.swift4
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)
}