From 52776521f340bfd16cba0ac057aeb41a692aa6b3 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Wed, 12 Jul 2023 16:59:17 +0800 Subject: [PATCH] Improve undelete --- .../Sources/App/Views/Home/HomeFeedDisplayText.swift | 2 ++ .../Sources/App/Views/Home/HomeFeedViewModel.swift | 2 +- .../Sources/Models/DataModels/ArticleContent.swift | 1 + apple/OmnivoreKit/Sources/Models/LinkedItemFilter.swift | 8 ++++++++ .../DataService/Public/LinkedItemContentLoading.swift | 2 +- .../Services/InternalModels/InternalLinkedItem.swift | 1 + 6 files changed, 14 insertions(+), 2 deletions(-) diff --git a/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedDisplayText.swift b/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedDisplayText.swift index b06f687ad..eb57e0d4f 100644 --- a/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedDisplayText.swift +++ b/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedDisplayText.swift @@ -17,6 +17,8 @@ extension LinkedItemFilter { return LocalText.allGeneric case .archived: return LocalText.archivedGeneric + case .deleted: + return "Deleted" case .hasHighlights: return LocalText.highlightedGeneric case .files: diff --git a/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewModel.swift b/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewModel.swift index 0fbd892c3..3325576f9 100644 --- a/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewModel.swift +++ b/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewModel.swift @@ -192,7 +192,7 @@ import Views return itemObjects }() - if searchTerm.replacingOccurrences(of: " ", with: "").isEmpty { + if searchTerm.replacingOccurrences(of: " ", with: "").isEmpty, LinkedItemFilter(rawValue: appliedFilter) != .deleted { updateFetchController(dataService: dataService) } else { // Don't use FRC for searching. Use server results directly. diff --git a/apple/OmnivoreKit/Sources/Models/DataModels/ArticleContent.swift b/apple/OmnivoreKit/Sources/Models/DataModels/ArticleContent.swift index 86c5469d1..2a453a9ac 100644 --- a/apple/OmnivoreKit/Sources/Models/DataModels/ArticleContent.swift +++ b/apple/OmnivoreKit/Sources/Models/DataModels/ArticleContent.swift @@ -6,6 +6,7 @@ public enum ArticleContentStatus: String { case processing = "PROCESSING" case succeeded = "SUCCEEDED" case unknown = "UNKNOWN" + case deleted = "DELETED" } public struct ArticleContent { diff --git a/apple/OmnivoreKit/Sources/Models/LinkedItemFilter.swift b/apple/OmnivoreKit/Sources/Models/LinkedItemFilter.swift index 63319bb5f..2348d0720 100644 --- a/apple/OmnivoreKit/Sources/Models/LinkedItemFilter.swift +++ b/apple/OmnivoreKit/Sources/Models/LinkedItemFilter.swift @@ -7,6 +7,7 @@ public enum LinkedItemFilter: String, CaseIterable { case recommended case all case archived + case deleted case hasHighlights case files } @@ -26,6 +27,8 @@ public extension LinkedItemFilter { return "in:all" case .archived: return "in:archive" + case .deleted: + return "in:trash" case .hasHighlights: return "has:highlights" case .files: @@ -73,6 +76,11 @@ public extension LinkedItemFilter { format: "%K == %@", #keyPath(LinkedItem.isArchived), Int(truncating: true) as NSNumber ) return NSCompoundPredicate(andPredicateWithSubpredicates: [undeletedPredicate, inArchivePredicate]) + case .deleted: + let deletedPredicate = NSPredicate( + format: "%K == %i", #keyPath(LinkedItem.serverSyncStatus), Int64(ServerSyncStatus.needsDeletion.rawValue) + ) + return NSCompoundPredicate(andPredicateWithSubpredicates: [deletedPredicate]) case .files: // include pdf only let isPDFPredicate = NSPredicate( diff --git a/apple/OmnivoreKit/Sources/Services/DataService/Public/LinkedItemContentLoading.swift b/apple/OmnivoreKit/Sources/Services/DataService/Public/LinkedItemContentLoading.swift index e755f1510..2fb393263 100644 --- a/apple/OmnivoreKit/Sources/Services/DataService/Public/LinkedItemContentLoading.swift +++ b/apple/OmnivoreKit/Sources/Services/DataService/Public/LinkedItemContentLoading.swift @@ -43,7 +43,7 @@ public extension DataService { username: username, requestCount: requestCount + 1 ) - case .succeeded, .unknown: + case .succeeded, .unknown, .deleted: return fetchedContent } } diff --git a/apple/OmnivoreKit/Sources/Services/InternalModels/InternalLinkedItem.swift b/apple/OmnivoreKit/Sources/Services/InternalModels/InternalLinkedItem.swift index 5b0363568..43a7dcce9 100644 --- a/apple/OmnivoreKit/Sources/Services/InternalModels/InternalLinkedItem.swift +++ b/apple/OmnivoreKit/Sources/Services/InternalModels/InternalLinkedItem.swift @@ -98,6 +98,7 @@ extension Sequence where Element == InternalLinkedItem { print("LinkedItems saved succesfully") } catch { context.rollback() + print(error) print("Failed to save LinkedItems: \(error.localizedDescription)") } }