mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
Merge pull request #3946 from omnivore-app/fix/ios-digest-new-users
Some iOS Digest improvements
This commit is contained in:
commit
7ed29b576c
6 changed files with 28 additions and 45 deletions
|
|
@ -18,7 +18,7 @@ public class DigestConfigViewModel: ObservableObject {
|
|||
|
||||
func load(dataService: DataService) async {
|
||||
isLoading = true
|
||||
if !digestNeedsRefresh() {
|
||||
if !dataService.digestNeedsRefresh() {
|
||||
if let digest = dataService.loadStoredDigest() {
|
||||
self.digest = digest
|
||||
}
|
||||
|
|
@ -35,30 +35,6 @@ public class DigestConfigViewModel: ObservableObject {
|
|||
|
||||
isLoading = false
|
||||
}
|
||||
|
||||
func refreshDigest(dataService: DataService) async {
|
||||
do {
|
||||
try await dataService.refreshDigest()
|
||||
} catch {
|
||||
print("ERROR WITH DIGEST: ", error)
|
||||
}
|
||||
}
|
||||
|
||||
func digestNeedsRefresh() -> Bool {
|
||||
let fileManager = FileManager.default
|
||||
let localURL = URL.om_cachesDirectory.appendingPathComponent("digest.json")
|
||||
do {
|
||||
let attributes = try fileManager.attributesOfItem(atPath: localURL.path)
|
||||
if let modificationDate = attributes[.modificationDate] as? Date {
|
||||
// Two hours ago
|
||||
let twoHoursAgo = Date().addingTimeInterval(-2 * 60 * 60)
|
||||
return modificationDate < twoHoursAgo
|
||||
}
|
||||
} catch {
|
||||
print("Error: \(error)")
|
||||
}
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
@available(iOS 17.0, *)
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ public class FullScreenDigestViewModel: ObservableObject {
|
|||
@AppStorage(UserDefaultKey.lastVisitedDigestId.rawValue) var lastVisitedDigestId = ""
|
||||
|
||||
func load(dataService: DataService, audioController: AudioController) async {
|
||||
if !digestNeedsRefresh() {
|
||||
if !dataService.digestNeedsRefresh() {
|
||||
if let digest = dataService.loadStoredDigest() {
|
||||
self.digest = digest
|
||||
}
|
||||
|
|
@ -85,21 +85,7 @@ public class FullScreenDigestViewModel: ObservableObject {
|
|||
}
|
||||
}
|
||||
|
||||
func digestNeedsRefresh() -> Bool {
|
||||
let fileManager = FileManager.default
|
||||
let localURL = URL.om_cachesDirectory.appendingPathComponent("digest.json")
|
||||
do {
|
||||
let attributes = try fileManager.attributesOfItem(atPath: localURL.path)
|
||||
if let modificationDate = attributes[.modificationDate] as? Date {
|
||||
// Two hours ago
|
||||
let twoHoursAgo = Date().addingTimeInterval(-2 * 60 * 60)
|
||||
return modificationDate < twoHoursAgo
|
||||
}
|
||||
} catch {
|
||||
print("Error: \(error)")
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@available(iOS 17.0, *)
|
||||
|
|
|
|||
|
|
@ -361,7 +361,9 @@ struct AnimatingCellHeight: AnimatableModifier {
|
|||
if viewModel.currentFolder == "following", viewModel.fetcher.items.count > 0 {
|
||||
viewModel.stopUsingFollowingPrimer = true
|
||||
}
|
||||
await viewModel.checkForDigestUpdate(dataService: dataService)
|
||||
if dataService.digestNeedsRefresh() {
|
||||
await viewModel.checkForDigestUpdate(dataService: dataService)
|
||||
}
|
||||
}
|
||||
.environment(\.editMode, self.$isEditMode)
|
||||
.navigationBarTitleDisplayMode(.inline)
|
||||
|
|
|
|||
|
|
@ -51,9 +51,9 @@ enum LoadingBarStyle {
|
|||
@AppStorage("LibraryTabView::hideFollowingTab") var hideFollowingTab = false
|
||||
@AppStorage("LibraryTabView::digestHidden") var digestHidden = false
|
||||
@AppStorage(UserDefaultKey.lastVisitedDigestId.rawValue) var lastVisitedDigestId = ""
|
||||
@AppStorage("LibraryTabView::digestHidden") var digestHidden = false
|
||||
|
||||
@AppStorage(UserDefaultKey.lastSelectedFeaturedItemFilter.rawValue) var featureFilter = FeaturedItemFilter.continueReading.rawValue
|
||||
@AppStorage(UserDefaultKey.lastSelectedFeaturedItemFilter.rawValue) var featureFilter =
|
||||
FeaturedItemFilter.continueReading.rawValue
|
||||
|
||||
@Published var appliedFilter: InternalFilter? {
|
||||
didSet {
|
||||
|
|
|
|||
|
|
@ -97,7 +97,23 @@ public struct ExplainResult: Codable {
|
|||
public let text: String
|
||||
}
|
||||
|
||||
extension DataService {
|
||||
extension DataService {
|
||||
|
||||
public func digestNeedsRefresh() -> Bool {
|
||||
let fileManager = FileManager.default
|
||||
let localURL = URL.om_cachesDirectory.appendingPathComponent("digest.json")
|
||||
do {
|
||||
let attributes = try fileManager.attributesOfItem(atPath: localURL.path)
|
||||
if let modificationDate = attributes[.modificationDate] as? Date {
|
||||
// Two hours ago
|
||||
let twoHoursAgo = Date().addingTimeInterval(-2 * 60 * 60)
|
||||
return modificationDate < twoHoursAgo
|
||||
}
|
||||
} catch {
|
||||
print("Error: \(error)")
|
||||
}
|
||||
return true
|
||||
}
|
||||
public func refreshDigest() async throws {
|
||||
let encoder = JSONEncoder()
|
||||
let digestRequest = DigestRequest(schedule: "daily", voices: ["openai-nova"])
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ enum FlairLabels: String {
|
|||
case newsletter
|
||||
case rss
|
||||
case feed
|
||||
case digest
|
||||
|
||||
var icon: Image {
|
||||
switch self {
|
||||
|
|
@ -17,6 +18,7 @@ enum FlairLabels: String {
|
|||
case .recommended: return Image.flairRecommended
|
||||
case .newsletter: return Image.flairNewsletter
|
||||
case .feed, .rss: return Image.flairFeed
|
||||
case .digest: return Image.tabDigestSelected
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -27,6 +29,7 @@ enum FlairLabels: String {
|
|||
case .newsletter: return 2
|
||||
case .recommended: return 3
|
||||
case .pinned: return 4
|
||||
case .digest: return 5
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue