diff --git a/apple/Omnivore.xcworkspace/xcshareddata/swiftpm/Package.resolved b/apple/Omnivore.xcworkspace/xcshareddata/swiftpm/Package.resolved index 5090a25ab..0667008b4 100644 --- a/apple/Omnivore.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/apple/Omnivore.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -153,6 +153,15 @@ "version" : "2.1.0" } }, + { + "identity" : "pspdfkit-sp", + "kind" : "remoteSourceControl", + "location" : "https://github.com/PSPDFKit/PSPDFKit-SP", + "state" : { + "branch" : "master", + "revision" : "e9757beadad1b30de84073d3c33c1cd0f7a94b80" + } + }, { "identity" : "sovran-swift", "kind" : "remoteSourceControl", diff --git a/apple/OmnivoreKit/Package.swift b/apple/OmnivoreKit/Package.swift index 58f0d3de0..f5ef78249 100644 --- a/apple/OmnivoreKit/Package.swift +++ b/apple/OmnivoreKit/Package.swift @@ -56,7 +56,7 @@ let package = Package( var appPackageDependencies: [Target.Dependency] { var deps: [Target.Dependency] = ["Views", "Services", "Models", "Utils"] // #if canImport(UIKit) -// deps.append(.product(name: "PSPDFKit", package: "PSPDFKit-SP")) + deps.append(.product(name: "PSPDFKit", package: "PSPDFKit-SP")) // #endif return deps } @@ -70,7 +70,7 @@ var dependencies: [Package.Dependency] { .package(url: "https://github.com/google/GoogleSignIn-iOS", from: "6.2.2") ] // #if canImport(UIKit) -// deps.append(.package(url: "https://github.com/PSPDFKit/PSPDFKit-SP", branch: "master")) + deps.append(.package(url: "https://github.com/PSPDFKit/PSPDFKit-SP", branch: "master")) // #endif return deps } diff --git a/apple/OmnivoreKit/Sources/App/AppExtensions/Share/ShareExtensionViewModel.swift b/apple/OmnivoreKit/Sources/App/AppExtensions/Share/ShareExtensionViewModel.swift index 12daff8c1..be5320762 100644 --- a/apple/OmnivoreKit/Sources/App/AppExtensions/Share/ShareExtensionViewModel.swift +++ b/apple/OmnivoreKit/Sources/App/AppExtensions/Share/ShareExtensionViewModel.swift @@ -1,3 +1,4 @@ +import CoreData import Models import SwiftUI import Utils @@ -104,9 +105,13 @@ public class ShareExtensionViewModel: ObservableObject { func createPage(pageScrapePayload: PageScrapePayload) async -> Bool { var newRequestID: String? + var linkedItemObjectID: NSManagedObjectID? do { - try await services.dataService.persistPageScrapePayload(pageScrapePayload, requestId: requestId) + linkedItemObjectID = try await services.dataService.persistPageScrapePayload( + pageScrapePayload, + requestId: requestId + ) } catch { updateStatusOnMain( requestId: nil, @@ -116,7 +121,7 @@ public class ShareExtensionViewModel: ObservableObject { } do { - updateStatusOnMain(requestId: requestId, newStatus: .saved) + updateStatusOnMain(requestId: requestId, newStatus: .saved, objectID: linkedItemObjectID) switch pageScrapePayload.contentType { case .none: @@ -147,12 +152,16 @@ public class ShareExtensionViewModel: ObservableObject { return true } - func updateStatusOnMain(requestId: String?, newStatus: ShareExtensionStatus) { + func updateStatusOnMain(requestId: String?, newStatus: ShareExtensionStatus, objectID: NSManagedObjectID? = nil) { DispatchQueue.main.async { self.status = newStatus if let requestId = requestId { self.requestId = requestId } + + if let objectID = objectID { + self.linkedItem = self.services.dataService.viewContext.object(with: objectID) as? LinkedItem + } } } } diff --git a/apple/OmnivoreKit/Sources/App/AppExtensions/Share/Views/ShareExtensionView.swift b/apple/OmnivoreKit/Sources/App/AppExtensions/Share/Views/ShareExtensionView.swift index 3089ac009..bb43089f8 100644 --- a/apple/OmnivoreKit/Sources/App/AppExtensions/Share/Views/ShareExtensionView.swift +++ b/apple/OmnivoreKit/Sources/App/AppExtensions/Share/Views/ShareExtensionView.swift @@ -154,6 +154,7 @@ public struct ShareExtensionView: View { Spacer() if let item = viewModel.linkedItem { + // TODO: modify view to work for share ext only ApplyLabelsView(mode: .item(item), onSave: nil) } diff --git a/apple/OmnivoreKit/Sources/Services/DataService/DataService.swift b/apple/OmnivoreKit/Sources/Services/DataService/DataService.swift index 483cb3521..64d58fb33 100644 --- a/apple/OmnivoreKit/Sources/Services/DataService/DataService.swift +++ b/apple/OmnivoreKit/Sources/Services/DataService/DataService.swift @@ -126,7 +126,12 @@ public final class DataService: ObservableObject { } // swiftlint:disable:next function_body_length - public func persistPageScrapePayload(_ pageScrape: PageScrapePayload, requestId: String) async throws { + public func persistPageScrapePayload( + _ pageScrape: PageScrapePayload, + requestId: String + ) async throws -> NSManagedObjectID? { + var objectID: NSManagedObjectID? + let normalizedURL = normalizeURL(pageScrape.url) try await backgroundContext.perform { [weak self] in @@ -179,6 +184,7 @@ public final class DataService: ObservableObject { do { try self.backgroundContext.save() logger.debug("ArticleContent saved succesfully") + objectID = linkedItem.objectID } catch { self.backgroundContext.rollback() @@ -186,5 +192,6 @@ public final class DataService: ObservableObject { throw error } } + return objectID } }