Swiftgram/Telegram/SGActionRequestHandler/SGActionRequestHandler.swift
2025-05-09 11:28:14 +03:00

63 lines
2.8 KiB
Swift

// import UIKit
// import MobileCoreServices
// import UrlEscaping
// @objc(SGActionRequestHandler)
// class SGActionRequestHandler: NSObject, NSExtensionRequestHandling {
// var extensionContext: NSExtensionContext?
// func beginRequest(with context: NSExtensionContext) {
// // Do not call super in an Action extension with no user interface
// self.extensionContext = context
// let itemProvider = context.inputItems
// .compactMap({ $0 as? NSExtensionItem })
// .reduce([NSItemProvider](), { partialResult, acc in
// var nextResult = partialResult
// nextResult += acc.attachments ?? []
// return nextResult
// })
// .filter({ $0.hasItemConformingToTypeIdentifier(kUTTypePropertyList as String) })
// .first
// guard let itemProvider = itemProvider else {
// return doneWithInvalidLink()
// }
// itemProvider.loadItem(forTypeIdentifier: kUTTypePropertyList as String, options: nil, completionHandler: { [weak self] item, error in
// DispatchQueue.main.async {
// guard
// let dictionary = item as? NSDictionary,
// let results = dictionary[NSExtensionJavaScriptPreprocessingResultsKey] as? NSDictionary
// else {
// self?.doneWithInvalidLink()
// return
// }
// if let url = results["url"] as? String, let escapedUrl = url.addingPercentEncoding(withAllowedCharacters: .urlQueryValueAllowed) {
// self?.doneWithResults(["openURL": "sg://parseurl?url=\(escapedUrl)"])
// } else {
// self?.doneWithInvalidLink()
// }
// }
// })
// }
// func doneWithInvalidLink() {
// doneWithResults(["alert": "Invalid link"])
// }
// func doneWithResults(_ resultsForJavaScriptFinalizeArg: [String: Any]?) {
// if let resultsForJavaScriptFinalize = resultsForJavaScriptFinalizeArg {
// let resultsDictionary = [NSExtensionJavaScriptFinalizeArgumentKey: resultsForJavaScriptFinalize]
// let resultsProvider = NSItemProvider(item: resultsDictionary as NSDictionary, typeIdentifier: kUTTypePropertyList as String)
// let resultsItem = NSExtensionItem()
// resultsItem.attachments = [resultsProvider]
// self.extensionContext!.completeRequest(returningItems: [resultsItem], completionHandler: nil)
// } else {
// self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil)
// }
// self.extensionContext = nil
// }
// }