diff options
| author | Christian Cleberg <[email protected]> | 2026-04-22 10:14:30 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-04-22 10:14:30 -0500 |
| commit | 9384a668bf36f23f71e25d05b490d1040d308845 (patch) | |
| tree | 6681f4b262a9414c7fc96148652599215b7973fc /DomainDig/HistoryView.swift | |
| parent | 7b41195620eadd54d25fa98dcd36735cba906ba3 (diff) | |
| download | domain-dig-9384a668bf36f23f71e25d05b490d1040d308845.tar.gz domain-dig-9384a668bf36f23f71e25d05b490d1040d308845.tar.bz2 domain-dig-9384a668bf36f23f71e25d05b490d1040d308845.zip | |
feat(v2.8.0): add workflows and repeatable inspection automation
* introduce DomainWorkflow model and persistence
* add WorkflowsView and execution flow
* support batch inspection via workflows
* add workflow-based export (TXT/CSV/JSON)
* enable bulk add from history/watchlist
* add quick actions for common operations
* integrate workflows with tracking and history
Diffstat (limited to 'DomainDig/HistoryView.swift')
| -rw-r--r-- | DomainDig/HistoryView.swift | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/DomainDig/HistoryView.swift b/DomainDig/HistoryView.swift index 9505c12..3bda59d 100644 --- a/DomainDig/HistoryView.swift +++ b/DomainDig/HistoryView.swift @@ -5,6 +5,7 @@ struct HistoryView: View { @Bindable var viewModel: DomainViewModel @Environment(\.dismiss) private var dismiss @State private var showClearAllConfirmation = false + @State private var showWorkflowAddSheet = false private var groupedHistory: [HistoryGroup] { HistoryGroup.groups(for: viewModel.filteredHistory) @@ -105,6 +106,12 @@ struct HistoryView: View { Button("Clear All", role: .destructive) { showClearAllConfirmation = true } + + if !viewModel.filteredHistory.isEmpty { + Button("Add to Workflow") { + showWorkflowAddSheet = true + } + } } label: { Image(systemName: "line.3.horizontal.decrease.circle") } @@ -121,6 +128,13 @@ struct HistoryView: View { } message: { Text("This will delete all saved history entries. This cannot be undone.") } + .sheet(isPresented: $showWorkflowAddSheet) { + WorkflowBulkAddSheet( + viewModel: viewModel, + title: "Add History Domains", + availableDomains: Array(Set(viewModel.filteredHistory.map(\.domain))).sorted() + ) + } .onChange(of: viewModel.rerunNavigationToken) { _, _ in dismiss() } @@ -170,6 +184,7 @@ struct HistoryDetailView: View { confidence: snapshot.availabilityConfidence, snapshotNote: entry.note, trackedDomain: viewModel.trackedDomains.first(where: { $0.domain.lowercased() == entry.domain.lowercased() }), + workflows: viewModel.workflowsContaining(domain: entry.domain), trackingLimitMessage: nil, onTrack: { _ = viewModel.trackDomain(domain: entry.domain, availabilityStatus: entry.availabilityResult?.status) @@ -178,7 +193,10 @@ struct HistoryDetailView: View { guard let trackedDomain = viewModel.trackedDomains.first(where: { $0.domain.lowercased() == entry.domain.lowercased() }) else { return } viewModel.togglePinned(for: trackedDomain) }, - onEditNote: nil + onEditNote: nil, + onAddToWorkflow: nil, + onOpenWorkflow: nil, + onRunWorkflow: nil ) .padding(.top, appDensity.metrics.sectionSpacing) OwnershipSectionView( |
