diff options
| author | Christian Cleberg <[email protected]> | 2026-04-12 00:15:13 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-04-12 00:15:13 -0500 |
| commit | cb1ea5ea4f163d87053285d3fb7999b12a3558b9 (patch) | |
| tree | 84b562d12e642ff494194387b1b4e1d15b065eb0 /Hutch/Views/Home/HomeView.swift | |
| parent | 1c5a417277d986ee6fb7dc9dff0332338bdf6f3e (diff) | |
| download | hutch-2.13.1.tar.gz hutch-2.13.1.tar.bz2 hutch-2.13.1.zip | |
harden system status and app reliabilityv2.13.1
Diffstat (limited to 'Hutch/Views/Home/HomeView.swift')
| -rw-r--r-- | Hutch/Views/Home/HomeView.swift | 48 |
1 files changed, 14 insertions, 34 deletions
diff --git a/Hutch/Views/Home/HomeView.swift b/Hutch/Views/Home/HomeView.swift index ab0cdf8..632e804 100644 --- a/Hutch/Views/Home/HomeView.swift +++ b/Hutch/Views/Home/HomeView.swift @@ -78,19 +78,25 @@ struct HomeView: View { .refreshable { await viewModel.loadDashboard() } + .connectivityOverlay(hasContent: viewModel.hasDashboardContent) { + await viewModel.loadDashboard() + } } @ViewBuilder private func systemStatusBannerSection(_ viewModel: HomeViewModel) -> some View { - if let bannerTitle = viewModel.systemStatusBannerTitle { - Section { - NavigationLink { - SystemStatusView() - } label: { - HomeSystemStatusBanner(title: bannerTitle) - } - .buttonStyle(.plain) + Section { + NavigationLink { + SystemStatusView() + } label: { + SystemStatusSummaryRow( + snapshot: viewModel.systemStatusSnapshot, + isLoading: viewModel.isLoadingSystemStatus, + errorMessage: viewModel.systemStatusErrorMessage, + isShowingStaleData: viewModel.isShowingStaleSystemStatus + ) } + .buttonStyle(.plain) } } @@ -252,32 +258,6 @@ private struct HomeInboxToolbarIcon: View { } } -private struct HomeSystemStatusBanner: View { - let title: String - - var body: some View { - HStack(spacing: 12) { - Image(systemName: "exclamationmark.triangle.fill") - .foregroundStyle(.orange) - VStack(alignment: .leading, spacing: 2) { - Text("SourceHut service disruption") - .font(.subheadline.weight(.semibold)) - .foregroundStyle(.primary) - Text(title) - .font(.caption) - .foregroundStyle(.secondary) - .lineLimit(1) - } - Spacer() - Image(systemName: "chevron.right") - .font(.caption.weight(.semibold)) - .foregroundStyle(.tertiary) - } - .padding(.vertical, 4) - .contentShape(Rectangle()) - } -} - private struct HomeProjectRow: View { let project: Project |
