enable recently read sorting option on ios

This commit is contained in:
Satindar Dhillon
2022-06-14 16:24:13 -07:00
parent 486f3c930b
commit 0df68587ef
2 changed files with 13 additions and 15 deletions

View File

@ -3,9 +3,8 @@ import Foundation
public enum LinkedItemSort: String, CaseIterable {
case newest
case oldest
// case recentlyRead
case recentlyRead
case recentlyPublished
// case relevance
}
public extension LinkedItemSort {
@ -15,12 +14,10 @@ public extension LinkedItemSort {
return "Newest"
case .oldest:
return "Oldest"
// case .recentlyRead:
// return "Recently Read"
case .recentlyRead:
return "Recently Read"
case .recentlyPublished:
return "Recently Published"
// case .relevance:
// return "Relevance"
}
}
@ -30,23 +27,21 @@ public extension LinkedItemSort {
return "sort:saved"
case .oldest:
return "sort:saved-ASC"
// case .recentlyRead:
// return "sort:updated"
case .recentlyRead:
return "sort:read"
case .recentlyPublished:
return "sort:published"
// case .relevance:
// return "relevance"
}
}
var sortDescriptors: [NSSortDescriptor] {
switch self {
case .newest /* , .relevance */:
case .newest:
return [NSSortDescriptor(keyPath: \LinkedItem.savedAt, ascending: false)]
case .oldest:
return [NSSortDescriptor(keyPath: \LinkedItem.savedAt, ascending: true)]
// case .recentlyRead:
// return [NSSortDescriptor(keyPath: \LinkedItem.updatedAt, ascending: false)]
case .recentlyRead:
return [NSSortDescriptor(keyPath: \LinkedItem.updatedAt, ascending: false)]
case .recentlyPublished:
return [NSSortDescriptor(keyPath: \LinkedItem.publishDate, ascending: false)]
}

View File

@ -27,7 +27,7 @@ extension DataService {
func syncLinkReadingProgress(itemID: String, objectID: NSManagedObjectID, readingProgress: Double, anchorIndex: Int) {
enum MutationResult {
case saved(readingProgress: Double)
case saved(updatedAt: Date?)
case error(errorCode: Enums.SaveArticleReadingProgressErrorCode)
}
@ -36,7 +36,7 @@ extension DataService {
saveArticleReadingProgressError: .init { .error(errorCode: try $0.errorCodes().first ?? .badData) },
saveArticleReadingProgressSuccess: .init {
.saved(
readingProgress: try $0.updatedArticle(selection: Selection.Article { try $0.readingProgressPercent() })
updatedAt: try $0.updatedArticle(selection: Selection.Article { try $0.updatedAt().value })
)
}
)
@ -64,6 +64,9 @@ extension DataService {
context.perform {
guard let linkedItem = context.object(with: objectID) as? LinkedItem else { return }
linkedItem.serverSyncStatus = Int64(syncStatus.rawValue)
if let mutationResult = data?.data, case let MutationResult.saved(updatedAt) = mutationResult {
linkedItem.updatedAt = updatedAt
}
do {
try context.save()