From b752fdc9d04d7a07031b563a2d92f4de6f1cb85d Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Thu, 30 Jun 2022 16:02:19 -0700 Subject: [PATCH] open mac app when read now button is tapped from share extension --- .../App/AppExtensions/Share/ShareExtensionScene.swift | 9 +++++++-- .../Sources/App/Views/Home/HomeFeedViewMac.swift | 9 +++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/apple/OmnivoreKit/Sources/App/AppExtensions/Share/ShareExtensionScene.swift b/apple/OmnivoreKit/Sources/App/AppExtensions/Share/ShareExtensionScene.swift index 34ace4698..32fb64f83 100644 --- a/apple/OmnivoreKit/Sources/App/AppExtensions/Share/ShareExtensionScene.swift +++ b/apple/OmnivoreKit/Sources/App/AppExtensions/Share/ShareExtensionScene.swift @@ -26,12 +26,17 @@ public class ShareExtensionViewModel: ObservableObject { let saveService = ExtensionSaveService() func handleReadNowAction(requestId: String, extensionContext: NSExtensionContext?) { - // TODO: write macos version #if os(iOS) + let deepLinkUrl = NSURL(string: "omnivore://shareExtensionRequestID/\(requestId)") if let application = UIApplication.value(forKeyPath: #keyPath(UIApplication.shared)) as? UIApplication { - let deepLinkUrl = NSURL(string: "omnivore://shareExtensionRequestID/\(requestId)") application.perform(NSSelectorFromString("openURL:"), with: deepLinkUrl) } + #else + let deepLinkUrl = URL(string: "omnivore://shareExtensionRequestID/\(requestId)") + let workspace = NSWorkspace.value(forKeyPath: #keyPath(NSWorkspace.shared)) as? NSWorkspace + if let workspace = workspace, let deepLinkUrl = deepLinkUrl { + workspace.open(deepLinkUrl) + } #endif extensionContext?.completeRequest(returningItems: [], completionHandler: nil) } diff --git a/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewMac.swift b/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewMac.swift index ff10e5e13..f0a5831a2 100644 --- a/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewMac.swift +++ b/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewMac.swift @@ -131,6 +131,15 @@ import Views loadItems(isRefresh: true) } } + .handlesExternalEvents(preferring: Set(["shareExtensionRequestID"]), allowing: Set(["*"])) + .onOpenURL { url in + viewModel.linkRequest = nil + DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(100)) { + if let linkRequestID = DeepLink.make(from: url)?.linkRequestID { + viewModel.linkRequest = LinkRequest(id: UUID(), serverID: linkRequestID) + } + } + } } }