From 461249db592299b01b937b4674e033994036e2a4 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Wed, 27 Apr 2022 11:29:58 -0700 Subject: [PATCH] fix mac app --- .../App/Views/Home/HomeFeedViewMac.swift | 26 ++++++++++++++----- .../Views/Profile/NewsletterEmailsView.swift | 2 +- .../Models/DataModels/NewsletterEmail.swift | 22 ++++++++++++---- .../InternalNewsletterEmail.swift | 17 ------------ 4 files changed, 38 insertions(+), 29 deletions(-) diff --git a/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewMac.swift b/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewMac.swift index f185006e8..7c354f05c 100644 --- a/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewMac.swift +++ b/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewMac.swift @@ -14,6 +14,10 @@ import Views @ObservedObject var viewModel: HomeFeedViewModel + func loadItems(isRefresh: Bool) { + Task { await viewModel.loadItems(dataService: dataService, isRefresh: isRefresh) } + } + var body: some View { List { Section { @@ -23,8 +27,18 @@ import Views viewModel: viewModel ) .contextMenu { + Button( + action: { viewModel.itemUnderLabelEdit = item }, + label: { Label("Edit Labels", systemImage: "tag") } + ) Button(action: { - viewModel.setLinkArchived(dataService: dataService, linkId: item.id, archived: !item.isArchived) + withAnimation(.linear(duration: 0.4)) { + viewModel.setLinkArchived( + dataService: dataService, + objectID: item.objectID, + archived: !item.isArchived + ) + } }, label: { Label( item.isArchived ? "Unarchive" : "Archive", @@ -51,7 +65,7 @@ import Views Button("Remove Link", role: .destructive) { if let itemToRemove = itemToRemove { withAnimation { - viewModel.removeLink(dataService: dataService, linkId: itemToRemove.id) + viewModel.removeLink(dataService: dataService, objectID: itemToRemove.objectID) self.itemToRemove = nil } } @@ -81,16 +95,16 @@ import Views .onChange(of: viewModel.searchTerm) { _ in // Maybe we should debounce this, but // it feels like it works ok without - viewModel.loadItems(dataService: dataService, isRefresh: true) + loadItems(isRefresh: true) } .onSubmit(of: .search) { - viewModel.loadItems(dataService: dataService, isRefresh: true) + loadItems(isRefresh: true) } .toolbar { ToolbarItem { Button( action: { - viewModel.loadItems(dataService: dataService, isRefresh: true) + loadItems(isRefresh: true) }, label: { Label("Refresh Feed", systemImage: "arrow.clockwise") } ) @@ -105,7 +119,7 @@ import Views } .onAppear { if viewModel.items.isEmpty { - viewModel.loadItems(dataService: dataService, isRefresh: true) + loadItems(isRefresh: true) } } } diff --git a/apple/OmnivoreKit/Sources/App/Views/Profile/NewsletterEmailsView.swift b/apple/OmnivoreKit/Sources/App/Views/Profile/NewsletterEmailsView.swift index 7e148ceef..dcd233a9e 100644 --- a/apple/OmnivoreKit/Sources/App/Views/Profile/NewsletterEmailsView.swift +++ b/apple/OmnivoreKit/Sources/App/Views/Profile/NewsletterEmailsView.swift @@ -91,7 +91,7 @@ struct NewsletterEmailsView: View { #if os(macOS) let pasteBoard = NSPasteboard.general pasteBoard.clearContents() - pasteBoard.writeObjects([newsletterEmail.email as NSString]) + pasteBoard.writeObjects([newsletterEmail.unwrappedEmail as NSString]) #endif Snackbar.show(message: "Email copied") diff --git a/apple/OmnivoreKit/Sources/Models/DataModels/NewsletterEmail.swift b/apple/OmnivoreKit/Sources/Models/DataModels/NewsletterEmail.swift index 5a7f540ba..825d6cace 100644 --- a/apple/OmnivoreKit/Sources/Models/DataModels/NewsletterEmail.swift +++ b/apple/OmnivoreKit/Sources/Models/DataModels/NewsletterEmail.swift @@ -1,11 +1,23 @@ +import CoreData import Foundation public extension NewsletterEmail { - var unwrappedEmailId: String { - emailId ?? "" - } + var unwrappedEmailId: String { emailId ?? "" } - var unwrappedEmail: String { - email ?? "" + var unwrappedEmail: String { email ?? "" } + + static func lookup(byID emailID: String, inContext context: NSManagedObjectContext) -> NewsletterEmail? { + let fetchRequest: NSFetchRequest = NewsletterEmail.fetchRequest() + fetchRequest.predicate = NSPredicate( + format: "%K == %@", #keyPath(NewsletterEmail.emailId), emailID + ) + + var email: NewsletterEmail? + + context.performAndWait { + email = (try? context.fetch(fetchRequest))?.first + } + + return email } } diff --git a/apple/OmnivoreKit/Sources/Services/InternalModels/InternalNewsletterEmail.swift b/apple/OmnivoreKit/Sources/Services/InternalModels/InternalNewsletterEmail.swift index 1ad7b9553..7620bec8e 100644 --- a/apple/OmnivoreKit/Sources/Services/InternalModels/InternalNewsletterEmail.swift +++ b/apple/OmnivoreKit/Sources/Services/InternalModels/InternalNewsletterEmail.swift @@ -56,20 +56,3 @@ extension Sequence where Element == InternalNewsletterEmail { return result } } - -extension NewsletterEmail { - static func lookup(byID emailID: String, inContext context: NSManagedObjectContext) -> NewsletterEmail? { - let fetchRequest: NSFetchRequest = NewsletterEmail.fetchRequest() - fetchRequest.predicate = NSPredicate( - format: "%K == %@", #keyPath(NewsletterEmail.emailId), emailID - ) - - var email: NewsletterEmail? - - context.performAndWait { - email = (try? context.fetch(fetchRequest))?.first - } - - return email - } -}