AIHistoryViewModel.swift 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import Foundation
  2. @MainActor
  3. @Observable
  4. final class AIHistoryViewModel {
  5. var selectedFilter: AIHistoryFilter = .all
  6. var showDeleteAllConfirmation = false
  7. var entryPendingDeletion: AIHistoryEntry?
  8. private let historyManager: AIHistoryManager
  9. init(historyManager: AIHistoryManager = .shared) {
  10. self.historyManager = historyManager
  11. }
  12. var filteredEntries: [AIHistoryEntry] {
  13. historyManager.entries(matching: selectedFilter)
  14. }
  15. var isEmpty: Bool {
  16. historyManager.isEmpty
  17. }
  18. var hasFilteredEntries: Bool {
  19. !filteredEntries.isEmpty
  20. }
  21. func requestDelete(_ entry: AIHistoryEntry) {
  22. entryPendingDeletion = entry
  23. }
  24. func confirmDelete() {
  25. guard let entry = entryPendingDeletion else { return }
  26. historyManager.delete(id: entry.id)
  27. entryPendingDeletion = nil
  28. }
  29. func cancelDelete() {
  30. entryPendingDeletion = nil
  31. }
  32. func requestDeleteAll() {
  33. showDeleteAllConfirmation = true
  34. }
  35. func confirmDeleteAll() {
  36. historyManager.deleteAll()
  37. showDeleteAllConfirmation = false
  38. }
  39. func cancelDeleteAll() {
  40. showDeleteAllConfirmation = false
  41. }
  42. }