set linked item so apply labels view can be shown in share extension
This commit is contained in:
@ -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",
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user