mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
persist readingProgress changes to coredata
This commit is contained in:
parent
3f13fe62ee
commit
6f9a1157e5
7 changed files with 34 additions and 1 deletions
|
|
@ -44,6 +44,7 @@ public extension DataService {
|
|||
|
||||
switch payload.data {
|
||||
case let .success(linkId):
|
||||
// TODO: update CoreData
|
||||
promise(.success(linkId))
|
||||
case .error:
|
||||
promise(.failure(.message(messageText: "Error archiving link")))
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@ public extension DataService {
|
|||
|
||||
switch payload.data {
|
||||
case let .saved(label: label):
|
||||
// TODO: update CoreData
|
||||
promise(.success(label))
|
||||
case let .error(errorCode: errorCode):
|
||||
promise(.failure(.message(messageText: errorCode.rawValue)))
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ public extension DataService {
|
|||
|
||||
switch payload.data {
|
||||
case .success:
|
||||
// TODO: update CoreData
|
||||
promise(.success(true))
|
||||
case .error:
|
||||
promise(.failure(.message(messageText: "Error removing label")))
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@ public extension DataService {
|
|||
|
||||
switch payload.data {
|
||||
case let .success(item):
|
||||
// TODO: update CoreData
|
||||
promise(.success(item))
|
||||
case .error(errorCode: _):
|
||||
promise(.failure(.message(messageText: "Error removing link")))
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ public extension DataService {
|
|||
|
||||
switch payload.data {
|
||||
case let .saved(labels):
|
||||
// TODO: update CoreData
|
||||
promise(.success(labels))
|
||||
case .error:
|
||||
promise(.failure(.message(messageText: "failed to set labels")))
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import Combine
|
||||
import CoreData
|
||||
import Foundation
|
||||
import Models
|
||||
import SwiftGraphQL
|
||||
|
|
@ -50,7 +51,7 @@ public extension DataService {
|
|||
|
||||
switch payload.data {
|
||||
case let .saved(feedItem):
|
||||
// TODO: update core data record
|
||||
self.updateManagedObject(itemID: itemID, readingProgress: readingProgress, anchorIndex: anchorIndex)
|
||||
promise(.success(feedItem))
|
||||
case let .error(errorCode: errorCode):
|
||||
switch errorCode {
|
||||
|
|
@ -69,4 +70,30 @@ public extension DataService {
|
|||
.receive(on: DispatchQueue.main)
|
||||
.eraseToAnyPublisher()
|
||||
}
|
||||
|
||||
private func updateManagedObject(
|
||||
itemID: String,
|
||||
readingProgress: Double,
|
||||
anchorIndex: Int
|
||||
) {
|
||||
let context = persistentContainer.viewContext
|
||||
|
||||
let fetchRequest: NSFetchRequest<Models.LinkedItem> = LinkedItem.fetchRequest()
|
||||
fetchRequest.predicate = NSPredicate(
|
||||
format: "id == %@", itemID
|
||||
)
|
||||
|
||||
if let linkedItem = try? context.fetch(fetchRequest).first {
|
||||
linkedItem.readingProgress = readingProgress
|
||||
linkedItem.readingProgressAnchor = Int64(anchorIndex)
|
||||
}
|
||||
|
||||
do {
|
||||
try context.save()
|
||||
DataService.logger.debug("LinkedItem updated succesfully")
|
||||
} catch {
|
||||
context.rollback()
|
||||
DataService.logger.debug("Failed to update LinkedItem: \(error.localizedDescription)")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ public extension DataService {
|
|||
case let .success(payload):
|
||||
switch payload.data {
|
||||
case let .success(result: result):
|
||||
// TODO: update CoreData
|
||||
promise(.success(result))
|
||||
case .error:
|
||||
promise(.failure(.unknown))
|
||||
|
|
|
|||
Loading…
Reference in a new issue