Better empty state for the following tabs

This commit is contained in:
Jackson Harper
2024-01-02 16:18:01 +08:00
parent b81d2a33b6
commit c6517ebb8e
23 changed files with 354 additions and 142 deletions

View File

@ -37,7 +37,10 @@ import Views
@State var lastMoreFetched: Date?
@State var lastFiltersFetched: Date?
@State var isModifyingNewsletterDestination = false
@AppStorage(UserDefaultKey.hideFeatureSection.rawValue) var hideFeatureSection = false
@AppStorage(UserDefaultKey.stopUsingFollowingPrimer.rawValue) var stopUsingFollowingPrimer = false
@AppStorage("LibraryTabView::hideFollowingTab") var hideFollowingTab = false
@Published var appliedFilter: InternalFilter? {
@ -325,4 +328,34 @@ import Views
func findFilter(_: DataService, named: String) -> InternalFilter? {
filters.first(where: { $0.name == named })
}
func modifyingNewsletterDestinationToFollowing(dataService: DataService) async {
isModifyingNewsletterDestination = true
do {
var errorCount = 0
let objectIDs = try await dataService.newsletterEmails()
let newsletters = await dataService.viewContext.perform {
let newsletters = objectIDs.compactMap { dataService.viewContext.object(with: $0) as? NewsletterEmail }
return newsletters
}
for newsletter in newsletters {
if let emailId = newsletter.emailId, newsletter.folder != "following" {
do {
try await dataService.updateNewsletterEmail(emailID: emailId, folder: "following")
} catch {
print("error updating newsletter: ", error)
errorCount += 1
}
}
}
if errorCount > 0 {
snackbar("There was an error modifying \(errorCount) of your emails")
} else {
snackbar("Email destination modified")
}
} catch {
snackbar("Error modifying emails")
}
}
}