mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
fetch items from core data if network request fails
This commit is contained in:
parent
1012fccbb2
commit
93ef6980d1
3 changed files with 34 additions and 0 deletions
|
|
@ -76,6 +76,9 @@ import Views
|
|||
receiveCompletion: { [weak self] completion in
|
||||
guard case .failure = completion else { return }
|
||||
self?.isLoading = false
|
||||
// return cachedItems found in CoreData when request fails
|
||||
self?.items = dataService.cachedFeedItems()
|
||||
self?.cursor = nil
|
||||
},
|
||||
receiveValue: { [weak self] result in
|
||||
// Search results aren't guaranteed to return in order so this
|
||||
|
|
|
|||
|
|
@ -166,6 +166,29 @@ public extension FeedItemDep {
|
|||
|
||||
return linkedItem
|
||||
}
|
||||
|
||||
static func make(from item: LinkedItem) -> FeedItemDep {
|
||||
FeedItemDep(
|
||||
id: item.id ?? "",
|
||||
title: item.title ?? "",
|
||||
createdAt: item.createdAt ?? Date(),
|
||||
savedAt: item.savedAt ?? Date(),
|
||||
readingProgress: item.readingProgress,
|
||||
readingProgressAnchor: Int(item.readingProgressAnchor),
|
||||
imageURLString: item.imageURLString,
|
||||
onDeviceImageURLString: item.onDeviceImageURLString,
|
||||
documentDirectoryPath: nil,
|
||||
pageURLString: item.pageURLString ?? "",
|
||||
descriptionText: item.title,
|
||||
publisherURLString: item.publisherURLString,
|
||||
author: item.author,
|
||||
publishDate: item.publishDate,
|
||||
slug: item.slug ?? "",
|
||||
isArchived: item.isArchived,
|
||||
contentReader: item.contentReader,
|
||||
labels: []
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
public extension Sequence where Element == FeedItemDep {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import Combine
|
||||
import CoreData
|
||||
import Foundation
|
||||
import Models
|
||||
import SwiftGraphQL
|
||||
|
|
@ -74,6 +75,13 @@ public extension DataService {
|
|||
.receive(on: DispatchQueue.main)
|
||||
.eraseToAnyPublisher()
|
||||
}
|
||||
|
||||
func cachedFeedItems() -> [FeedItemDep] {
|
||||
let fetchRequest: NSFetchRequest<Models.LinkedItem> = LinkedItem.fetchRequest()
|
||||
// TODO: set sort order?
|
||||
let items = (try? persistentContainer.viewContext.fetch(fetchRequest)) ?? []
|
||||
return items.map { FeedItemDep.make(from: $0) }
|
||||
}
|
||||
}
|
||||
|
||||
let homeFeedItemSelection = Selection.Article {
|
||||
|
|
|
|||
Loading…
Reference in a new issue