@@ -2,6 +2,8 @@
22#import <Foundation/Foundation.h>
33#import <WebKit/WebKit.h>
44
5+BOOL openApp(NSURL * url);
6+
57extern void jsaddleStart(HsStablePtr);
68extern void jsaddleResult(HsStablePtr, const char * _Nonnull result);
79
@@ -37,6 +39,20 @@ extern void jsaddleResult(HsStablePtr, const char * _Nonnull result);
3739 jsaddleResult(self.resultHandler, [s UTF8String]);
3840}
3941
42+- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
43+{
44+ NSURL *url = navigationAction.request.URL;
45+
46+ if(!navigationAction.targetFrame && ![url.scheme isEqualToString:@"file"]) {
47+ if(openApp(url))
48+ decisionHandler(WKNavigationActionPolicyCancel);
49+ else
50+ decisionHandler(WKNavigationActionPolicyAllow);
51+ }
52+ else
53+ decisionHandler(WKNavigationActionPolicyAllow);
54+}
55+
4056@end
4157
4258void addJSaddleHandler(WKWebView *webView, HsStablePtr startHandler, HsStablePtr resultHandler) {