Merge pull request #3946 from omnivore-app/fix/ios-digest-new-users

Some iOS Digest improvements
This commit is contained in:
Jackson Harper 2024-05-13 17:04:33 +08:00 committed by GitHub
commit 7ed29b576c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 28 additions and 45 deletions

View file

@ -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, *)

View file

@ -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, *)

View file

@ -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)

View file

@ -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 {

View file

@ -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"])

View file

@ -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
}
}
}