summaryrefslogtreecommitdiff
path: root/Hutch/Views/Home/HomeView.swift
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-08-07 02:24:43 -0500
committerGitHub <[email protected]>2026-08-07 02:24:43 -0500
commit0a3e55c15cfb9ce1bd3df0c7b352760bc2ee33c3 (patch)
tree7137471dd7cdd5583db4ffbead31414497c431a9 /Hutch/Views/Home/HomeView.swift
parentfbcb4113f110a7db9cf21d18510cb59c2e90ba23 (diff)
parent1c4e968c31ee451666a65e05c762c9422c768426 (diff)
downloadhutch-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.swift33
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 {