40 lines
1.0 KiB
Swift
40 lines
1.0 KiB
Swift
|
// 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)
|
||
|
}
|
||
|
}
|
||
|
}
|