Skip to content

Commit b073f12

Browse files
committed
refactor: use async replyable message handler
1 parent 2700906 commit b073f12

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

xcode/App-Shared/ViewController.swift

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import WebKit
22

33
private let logger = USLogger(#fileID)
44

5-
class ViewController: UIViewController, WKNavigationDelegate, WKScriptMessageHandler, UIDocumentPickerDelegate {
5+
class ViewController: UIViewController, WKNavigationDelegate, WKScriptMessageHandlerWithReply, UIDocumentPickerDelegate {
66

77
@IBOutlet var webView: WKWebView!
88

@@ -13,7 +13,7 @@ class ViewController: UIViewController, WKNavigationDelegate, WKScriptMessageHan
1313
// https://developer.apple.com/documentation/webkit/wkwebviewconfiguration/2875766-seturlschemehandler
1414
configuration.setURLSchemeHandler(USchemeHandler(), forURLScheme: AppWebViewUrlScheme)
1515
// https://developer.apple.com/documentation/webkit/wkusercontentcontroller
16-
configuration.userContentController.add(self, name: "controller")
16+
configuration.userContentController.addScriptMessageHandler(self, contentWorld: .page, name: "controller")
1717
// https://developer.apple.com/documentation/webkit/wkwebview
1818
self.webView = WKWebView(frame: .zero, configuration: configuration)
1919
// https://developer.apple.com/documentation/webkit/wknavigationdelegate
@@ -79,10 +79,13 @@ class ViewController: UIViewController, WKNavigationDelegate, WKScriptMessageHan
7979
decisionHandler(.allow)
8080
}
8181

82-
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
82+
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) async -> (
83+
Any?,
84+
String?
85+
) {
8386
guard let name = message.body as? String else {
8487
logger?.error("\(#function, privacy: .public) - Userscripts iOS received a message without a name")
85-
return
88+
return (nil, "bad message body")
8689
}
8790
if name == "CHANGE_DIRECTORY" {
8891
// https://developer.apple.com/documentation/uikit/view_controllers/providing_access_to_directories
@@ -101,6 +104,7 @@ class ViewController: UIViewController, WKNavigationDelegate, WKScriptMessageHan
101104
UIApplication.shared.open(url)
102105
}
103106
}
107+
return (nil, nil)
104108
}
105109

106110
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) {

0 commit comments

Comments
 (0)