diff options
| author | Christian Cleberg <[email protected]> | 2026-04-12 19:58:20 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-04-12 19:58:20 -0500 |
| commit | 9cd99c3e1c7e2620c34bfd9e78931e3b2b63aa8a (patch) | |
| tree | bf7a249bec3b9aba18176e6139d690c9bf384ab5 /Hutch/Views/Home/HomeView.swift | |
| parent | 1354f2464180ece6d13296a543a964ddf6d2d393 (diff) | |
| download | hutch-9cd99c3e1c7e2620c34bfd9e78931e3b2b63aa8a.tar.gz hutch-9cd99c3e1c7e2620c34bfd9e78931e3b2b63aa8a.tar.bz2 hutch-9cd99c3e1c7e2620c34bfd9e78931e3b2b63aa8a.zip | |
feat: add projects list, detail view, and home pinning
Implements: https://todo.sr.ht/~ccleberg/hutch/26
Implements: https://todo.sr.ht/~ccleberg/hutch/27
Implements: https://todo.sr.ht/~ccleberg/hutch/28
Diffstat (limited to 'Hutch/Views/Home/HomeView.swift')
| -rw-r--r-- | Hutch/Views/Home/HomeView.swift | 38 |
1 files changed, 6 insertions, 32 deletions
diff --git a/Hutch/Views/Home/HomeView.swift b/Hutch/Views/Home/HomeView.swift index bbae296..da58587 100644 --- a/Hutch/Views/Home/HomeView.swift +++ b/Hutch/Views/Home/HomeView.swift @@ -69,11 +69,11 @@ struct HomeView: View { .listStyle(.insetGrouped) .overlay { if viewModel.isLoadingProjects && viewModel.isLoadingAssignedTickets && viewModel.isLoadingRecentBuilds && - viewModel.projects.isEmpty && viewModel.assignedTickets.isEmpty && viewModel.recentBuilds.isEmpty && + viewModel.pinnedProjects.isEmpty && viewModel.assignedTickets.isEmpty && viewModel.recentBuilds.isEmpty && viewModel.unreadInboxThreads.isEmpty { SRHTLoadingStateView(message: "Loading Home…") } else if !viewModel.isLoadingProjects && !viewModel.isLoadingAssignedTickets && !viewModel.isLoadingRecentBuilds && - viewModel.projects.isEmpty && viewModel.assignedTickets.isEmpty && viewModel.recentBuilds.isEmpty && + viewModel.pinnedProjects.isEmpty && viewModel.assignedTickets.isEmpty && viewModel.recentBuilds.isEmpty && viewModel.unreadInboxThreads.isEmpty && viewModel.assignedTicketsError == nil && viewModel.recentBuildsError == nil { ContentUnavailableView( @@ -179,17 +179,17 @@ struct HomeView: View { @ViewBuilder private func projectsSection(_ viewModel: HomeViewModel) -> some View { - if !viewModel.projects.isEmpty { - HomeSectionView("Projects", isExpanded: $projectsExpanded) { + if !viewModel.pinnedProjects.isEmpty { + HomeSectionView("Pinned Projects", isExpanded: $projectsExpanded) { NavigationLink { - HomeProjectsListView(viewModel: viewModel) + ProjectsListView() } label: { Text("See All") .font(.caption.weight(.medium)) } .buttonStyle(.plain) } content: { - ForEach(viewModel.projects.prefix(projectPreviewLimit)) { project in + ForEach(viewModel.pinnedProjects.prefix(projectPreviewLimit)) { project in NavigationLink { ProjectDetailView(project: project) } label: { @@ -411,32 +411,6 @@ private struct HomeProjectRow: View { } } -private struct HomeProjectsListView: View { - let viewModel: HomeViewModel - - var body: some View { - List { - ForEach(viewModel.projects) { project in - NavigationLink { - ProjectDetailView(project: project) - } label: { - HomeProjectRow(project: project) - } - } - } - .navigationTitle("Projects") - .navigationBarTitleDisplayMode(.inline) - .refreshable { - await viewModel.loadDashboard() - } - .overlay { - if viewModel.isLoadingProjects && viewModel.projects.isEmpty { - SRHTLoadingStateView(message: "Loading projects…") - } - } - } -} - private struct HomeBuildRow: View { @Environment(AppState.self) private var appState let build: HomeBuildItem |
