metatext/Activities/OpenInSafariActivity.swift

40 lines
1 KiB
Swift
Raw Normal View History

2021-01-31 13:57:30 +00:00
// Copyright © 2021 Metabolist. All rights reserved.
import UIKit
final class OpenInSafariActivity: UIActivity {
private var url: URL?
override var activityType: UIActivity.ActivityType? {
.init(String(describing: Self.self))
}
override var activityTitle: String? {
NSLocalizedString("Open in Safari", comment: "")
}
override var activityImage: UIImage? {
UIImage(systemName: "safari", withConfiguration: UIImage.SymbolConfiguration(scale: .large))
}
override func canPerform(withActivityItems activityItems: [Any]) -> Bool {
activityItems.allSatisfy {
guard let url = $0 as? URL else { return false }
return UIApplication.shared.canOpenURL(url)
}
}
override func prepare(withActivityItems activityItems: [Any]) {
url = activityItems.first { $0 is URL } as? URL
}
override func perform() {
guard let url = url else { return }
UIApplication.shared.open(url) {
self.activityDidFinish($0)
}
}
}