import MobileCoreServices import UniformTypeIdentifiers import UIKit private let schemePrefix = "ShareMedia" private let userDefaultsKey = "ShareKey" private let userDefaultsMessageKey = "ShareMessageKey" private let appGroupIdKey = "AppGroupId" private struct SharedMediaFile: Codable { let path: String let mimeType: String? let thumbnail: String? let duration: Double? let message: String? let type: SharedMediaType } private enum SharedMediaType: String, Codable { case text case url } final class SaveActionViewController: UIViewController { private var hostAppBundleIdentifier = "" private var appGroupId = "" private var sharedMedia: [SharedMediaFile] = [] private let group = DispatchGroup() private var didStart = false override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) guard !didStart else { return } didStart = true loadIdentifiers() loadSharedContent() } private func loadIdentifiers() { let actionExtensionIdentifier = Bundle.main.bundleIdentifier ?? "" if let lastDotIndex = actionExtensionIdentifier.lastIndex(of: ".") { hostAppBundleIdentifier = String(actionExtensionIdentifier[..