diff options
| author | Christian Cleberg <[email protected]> | 2026-08-07 02:24:43 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-08-07 02:24:43 -0500 |
| commit | 0a3e55c15cfb9ce1bd3df0c7b352760bc2ee33c3 (patch) | |
| tree | 7137471dd7cdd5583db4ffbead31414497c431a9 /Hutch/Views/Home/HomeView.swift | |
| parent | fbcb4113f110a7db9cf21d18510cb59c2e90ba23 (diff) | |
| parent | 1c4e968c31ee451666a65e05c762c9422c768426 (diff) | |
| download | hutch-0a3e55c15cfb9ce1bd3df0c7b352760bc2ee33c3.tar.gz hutch-0a3e55c15cfb9ce1bd3df0c7b352760bc2ee33c3.tar.bz2 hutch-0a3e55c15cfb9ce1bd3df0c7b352760bc2ee33c3.zip | |
Merge pull request #29 from krazywarez/issues-9-11-18
Fix checklist rendering, add clear-recent-activity, speed up pull-to-refresh
Diffstat (limited to 'Hutch/Views/Home/HomeView.swift')
| -rw-r--r-- | Hutch/Views/Home/HomeView.swift | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/Hutch/Views/Home/HomeView.swift b/Hutch/Views/Home/HomeView.swift index f0ec9ff..0e3e214 100644 --- a/Hutch/Views/Home/HomeView.swift +++ b/Hutch/Views/Home/HomeView.swift @@ -5,6 +5,8 @@ struct HomeView: View { @Environment(\.scenePhase) private var scenePhase @AppStorage(AppStorageKeys.homeFailedBuildLookbackDays, store: .standard) private var failedBuildLookbackDays = HomeViewModel.defaultFailedBuildLookbackDays + @AppStorage(AppStorageKeys.swipeActionsEnabled, store: .standard) + private var swipeActionsEnabled = true @State private var viewModel: HomeViewModel? @State private var recentItems: [RecentActivityEntry] = [] @State private var isOpeningRecentItem = false @@ -118,7 +120,7 @@ struct HomeView: View { @ViewBuilder private var recentSection: some View { if !recentItems.isEmpty { - Section("Recent") { + Section { ForEach(recentItems.prefix(3)) { item in Button { openRecentItem(item) @@ -128,12 +130,41 @@ struct HomeView: View { .buttonStyle(.plain) .disabled(isOpeningRecentItem) .listRowSeparator(.hidden) + .swipeActions(edge: .trailing, allowsFullSwipe: true) { + if swipeActionsEnabled { + Button(role: .destructive) { + removeRecentItem(item) + } label: { + Label("Remove", systemImage: "trash") + } + } + } } .themedRow() + } header: { + HStack { + Text("Recent") + Spacer() + Button("Clear") { + clearRecentActivity() + } + .font(.caption) + .textCase(nil) + } } } } + private func removeRecentItem(_ item: RecentActivityEntry) { + RecentActivityStore.remove(id: item.id, defaults: appState.accountDefaults) + loadRecentActivity() + } + + private func clearRecentActivity() { + RecentActivityStore.clear(defaults: appState.accountDefaults) + loadRecentActivity() + } + private func buildsSection(_ viewModel: HomeViewModel) -> some View { Section("Builds") { Button { |
