mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
save linkeditems to core data
This commit is contained in:
parent
ed69e36576
commit
1012fccbb2
2 changed files with 48 additions and 0 deletions
|
|
@ -1,3 +1,4 @@
|
|||
import CoreData
|
||||
import Foundation
|
||||
|
||||
public struct HomeFeedData {
|
||||
|
|
@ -137,3 +138,48 @@ struct JSONArticle: Decodable {
|
|||
)
|
||||
}
|
||||
}
|
||||
|
||||
public extension FeedItemDep {
|
||||
func asManagedObject(inContext context: NSManagedObjectContext) -> LinkedItem {
|
||||
let linkedItem = LinkedItem(context: context)
|
||||
|
||||
linkedItem.id = id
|
||||
linkedItem.title = title
|
||||
linkedItem.createdAt = createdAt
|
||||
linkedItem.savedAt = savedAt
|
||||
linkedItem.readingProgress = readingProgress
|
||||
linkedItem.readingProgressAnchor = Int64(readingProgressAnchor)
|
||||
linkedItem.imageURLString = imageURLString
|
||||
linkedItem.onDeviceImageURLString = onDeviceImageURLString
|
||||
linkedItem.pageURLString = pageURLString
|
||||
linkedItem.descriptionText = descriptionText
|
||||
linkedItem.publisherURLString = publisherURLString
|
||||
linkedItem.author = author
|
||||
linkedItem.publishDate = publishDate
|
||||
linkedItem.slug = slug
|
||||
linkedItem.isArchived = isArchived
|
||||
linkedItem.contentReader = contentReader
|
||||
|
||||
// for label in item.labels {
|
||||
// TODO: append labels
|
||||
// }
|
||||
|
||||
return linkedItem
|
||||
}
|
||||
}
|
||||
|
||||
public extension Sequence where Element == FeedItemDep {
|
||||
func persist(context: NSManagedObjectContext) -> [LinkedItem]? {
|
||||
let linkedItems = map { $0.asManagedObject(inContext: context) }
|
||||
|
||||
do {
|
||||
try context.save()
|
||||
print("LinkedItems saved succesfully")
|
||||
return linkedItems
|
||||
} catch {
|
||||
context.rollback()
|
||||
print("Failed to save LinkedItems: \(error.localizedDescription)")
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,6 +59,8 @@ public extension DataService {
|
|||
case let .success(payload):
|
||||
switch payload.data {
|
||||
case let .success(result: result):
|
||||
// save items to coredata
|
||||
_ = result.items.persist(context: self.persistentContainer.viewContext)
|
||||
promise(.success(result))
|
||||
case .error:
|
||||
promise(.failure(.unknown))
|
||||
|
|
|
|||
Loading…
Reference in a new issue