From 014a0dc9887086f9f0328515b233522ffce81b2a Mon Sep 17 00:00:00 2001 From: Scott Pfeil Date: Fri, 7 Jan 2022 16:08:15 -0500 Subject: [PATCH] base page type to template for old web overrides. --- MVMCoreUI/Atomic/Atoms/Views/WebView.swift | 9 +++++++-- MVMCoreUI/Atomic/Templates/TemplateModel.swift | 8 +++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift index e6708055..66f0d8ed 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift @@ -170,8 +170,13 @@ extension WebView : WKNavigationDelegate { public func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { //validate request url //all validated link should be open in safari - if (navigationAction.navigationType == .linkActivated), let urlString = navigationAction.request.url?.absoluteString.removingPercentEncoding, !urlString.contains("#") { - MVMCoreActionHandler.shared()?.openURL(inWebView: navigationAction.request.url, actionInformation: nil, additionalData: nil, delegateObject: nil) + if (navigationAction.navigationType == .linkActivated), + let url = navigationAction.request.url, + let urlString = url.absoluteString.removingPercentEncoding, + !urlString.contains("#") { + MVMCoreDispatchUtility.performBlock(onMainThread: { + UIApplication.shared.open(navigationAction.request.url!, options: [:], completionHandler: nil) + }) decisionHandler(.cancel) } else { decisionHandler(.allow) diff --git a/MVMCoreUI/Atomic/Templates/TemplateModel.swift b/MVMCoreUI/Atomic/Templates/TemplateModel.swift index 45c2ed1a..27cb3183 100644 --- a/MVMCoreUI/Atomic/Templates/TemplateModel.swift +++ b/MVMCoreUI/Atomic/Templates/TemplateModel.swift @@ -58,10 +58,16 @@ import Foundation //-------------------------------------------------- // MARK: - Codec //-------------------------------------------------- + + open class func defaultPageType() -> String? { return nil } required public init(from decoder: Decoder) throws { let typeContainer = try decoder.container(keyedBy: CodingKeys.self) - pageType = try typeContainer.decode(String.self, forKey: .pageType) + if let defaultPageType = Self.defaultPageType() { + pageType = try typeContainer.decodeIfPresent(String.self, forKey: .pageType) ?? defaultPageType + } else { + pageType = try typeContainer.decode(String.self, forKey: .pageType) + } screenHeading = try typeContainer.decodeIfPresent(String.self, forKey: .screenHeading) backgroundColor = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor) formRules = try typeContainer.decodeIfPresent([FormGroupRule].self, forKey: .formRules)