Skip to content

Commit effff76

Browse files
feat(webview): update WKNavigationDelegate to Swift 6 async API
- Replace legacy decidePolicyFor callback pattern with modern async/await version - Update UIApplication.open call to be async - Return navigation policy and webpage preferences tuple instead of using completion handler Signed-off-by: alexanderthoren <alexitoblogger@gmail.com>
1 parent 035e4dd commit effff76

File tree

1 file changed

+9
-18
lines changed

1 file changed

+9
-18
lines changed

Sources/QueueITLib/WebViewController.swift

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,7 @@ final class WebViewController: UIViewController {
7777
}
7878

7979
extension WebViewController: WKNavigationDelegate {
80-
func webView(
81-
_: WKWebView,
82-
decidePolicyFor navigationAction: WKNavigationAction,
83-
decisionHandler: @escaping (WKNavigationActionPolicy) -> Void
84-
) {
80+
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, preferences: WKWebpagePreferences) async -> (WKNavigationActionPolicy, WKWebpagePreferences) {
8581
if !isQueuePassed {
8682
let request = navigationAction.request
8783
let urlString = request.url?.absoluteString
@@ -95,17 +91,14 @@ extension WebViewController: WKNavigationDelegate {
9591

9692
if url.absoluteString == Constants.queueCloseUrl {
9793
delegate?.notifyViewControllerClosed()
98-
decisionHandler(.cancel)
99-
return
94+
return (.cancel, preferences)
10095
} else if url.absoluteString == Constants.queueRestartSessionUrl {
10196
delegate?.notifyViewControllerSessionRestart()
102-
decisionHandler(.cancel)
103-
return
97+
return (.cancel, preferences)
10498
}
10599

106100
if isBlockedUrl(destinationUrl: url) {
107-
decisionHandler(.cancel)
108-
return
101+
return (.cancel, preferences)
109102
}
110103

111104
if isNotFrame {
@@ -116,20 +109,18 @@ extension WebViewController: WKNavigationDelegate {
116109
isQueuePassed = true
117110
let queueitToken = extractQueueToken(urlString)
118111
delegate?.notifyViewControllerQueuePassed(queueToken: queueitToken)
119-
decisionHandler(.cancel)
120-
return
112+
return (.cancel, preferences)
121113
}
122114
}
123115

124116
if navigationAction.navigationType == .linkActivated && !isQueueUrl {
125-
UIApplication.shared.open(request.url!)
126-
decisionHandler(.cancel)
127-
return
117+
await UIApplication.shared.open(request.url!)
118+
return (.cancel, preferences)
128119
}
129120
}
130121
}
131-
132-
decisionHandler(.allow)
122+
123+
return (.allow, preferences)
133124
}
134125

135126
func webView(_: WKWebView, didStartProvisionalNavigation _: WKNavigation!) {}

0 commit comments

Comments
 (0)