mirror of
https://github.com/Ranchero-Software/NetNewsWire
synced 2025-08-12 06:26:36 +00:00
Merge pull request #2041 from stuartbreckenridge/mail-fix-ios
mailto links now open on iOS
This commit is contained in:
@@ -12,6 +12,7 @@ import RSCore
|
||||
import Account
|
||||
import Articles
|
||||
import SafariServices
|
||||
import MessageUI
|
||||
|
||||
protocol WebViewControllerDelegate: class {
|
||||
func webViewController(_: WebViewController, articleExtractorButtonStateDidUpdate: ArticleExtractorButtonState)
|
||||
@@ -316,6 +317,30 @@ extension WebViewController: WKNavigationDelegate {
|
||||
let vc = SFSafariViewController(url: url)
|
||||
self.present(vc, animated: true)
|
||||
}
|
||||
} else if components?.scheme == "mailto" {
|
||||
decisionHandler(.cancel)
|
||||
|
||||
guard let emailAddress = url.emailAddress else {
|
||||
return
|
||||
}
|
||||
|
||||
if MFMailComposeViewController.canSendMail() {
|
||||
let mailComposeViewController = MFMailComposeViewController()
|
||||
mailComposeViewController.setToRecipients([emailAddress])
|
||||
mailComposeViewController.mailComposeDelegate = self
|
||||
self.present(mailComposeViewController, animated: true, completion: {})
|
||||
} else {
|
||||
let alert = UIAlertController(title: NSLocalizedString("Error", comment: "Error"), message: NSLocalizedString("This device cannot send emails.", comment: "This device cannot send emails."), preferredStyle: .alert)
|
||||
alert.addAction(.init(title: NSLocalizedString("Dismiss", comment: "Dismiss"), style: .cancel, handler: nil))
|
||||
self.present(alert, animated: true, completion: nil)
|
||||
}
|
||||
} else if components?.scheme == "tel" {
|
||||
decisionHandler(.cancel)
|
||||
|
||||
if UIApplication.shared.canOpenURL(url) {
|
||||
UIApplication.shared.open(url, options: [.universalLinksOnly : false], completionHandler: nil)
|
||||
}
|
||||
|
||||
} else {
|
||||
decisionHandler(.allow)
|
||||
}
|
||||
@@ -672,3 +697,10 @@ private extension WebViewController {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// MARK: MFMailComposeViewControllerDelegate
|
||||
extension WebViewController: MFMailComposeViewControllerDelegate {
|
||||
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
|
||||
self.dismiss(animated: true, completion: nil)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user