From 014a0dc9887086f9f0328515b233522ffce81b2a Mon Sep 17 00:00:00 2001 From: Scott Pfeil Date: Fri, 7 Jan 2022 16:08:15 -0500 Subject: [PATCH 1/5] 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) From 5043ba5ba4491a890109d6fb3733f3cd424d0cbe Mon Sep 17 00:00:00 2001 From: Scott Pfeil Date: Fri, 14 Jan 2022 14:34:54 -0500 Subject: [PATCH 2/5] move to web view --- MVMCoreUI/Atomic/Atoms/Views/WebView.swift | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift index 66f0d8ed..1ee08fd7 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift @@ -8,6 +8,7 @@ import UIKit import WebKit +import SafariServices @objcMembers open class WebView: View, MVMCoreUIViewConstrainingProtocol { @@ -175,7 +176,11 @@ extension WebView : WKNavigationDelegate { let urlString = url.absoluteString.removingPercentEncoding, !urlString.contains("#") { MVMCoreDispatchUtility.performBlock(onMainThread: { - UIApplication.shared.open(navigationAction.request.url!, options: [:], completionHandler: nil) + // Presents standard webview. + let safariViewController = SFSafariViewController(url: url) + safariViewController.preferredBarTintColor = .white + safariViewController.preferredControlTintColor = .black + MVMCoreNavigationHandler.shared()?.present(safariViewController, animated: true) }) decisionHandler(.cancel) } else { From 36367deff4134e142c3522a7409fdc48675dea33 Mon Sep 17 00:00:00 2001 From: Scott Pfeil Date: Fri, 11 Feb 2022 14:42:04 -0500 Subject: [PATCH 3/5] changes to legacy webview function --- MVMCoreUI/Atomic/Atoms/Views/WebView.swift | 8 +------- MVMCoreUI/OtherHandlers/MVMCoreUIActionHandler.h | 3 +++ MVMCoreUI/OtherHandlers/MVMCoreUIActionHandler.m | 8 ++++++++ 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift index 1ee08fd7..b4ec9b21 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift @@ -175,13 +175,7 @@ extension WebView : WKNavigationDelegate { let url = navigationAction.request.url, let urlString = url.absoluteString.removingPercentEncoding, !urlString.contains("#") { - MVMCoreDispatchUtility.performBlock(onMainThread: { - // Presents standard webview. - let safariViewController = SFSafariViewController(url: url) - safariViewController.preferredBarTintColor = .white - safariViewController.preferredControlTintColor = .black - MVMCoreNavigationHandler.shared()?.present(safariViewController, animated: true) - }) + MVMCoreUIActionHandler.shared()?.openURL(inWebView: url) decisionHandler(.cancel) } else { decisionHandler(.allow) diff --git a/MVMCoreUI/OtherHandlers/MVMCoreUIActionHandler.h b/MVMCoreUI/OtherHandlers/MVMCoreUIActionHandler.h index c1dee62a..7d3d10c7 100644 --- a/MVMCoreUI/OtherHandlers/MVMCoreUIActionHandler.h +++ b/MVMCoreUI/OtherHandlers/MVMCoreUIActionHandler.h @@ -27,6 +27,9 @@ NS_ASSUME_NONNULL_BEGIN // Shows a topnotification new molecular - (void)topNotificationAction:(nullable NSDictionary *)actionInformation additionalData:(nullable NSDictionary *)additionalData delegateObject:(nullable DelegateObject *)delegateObject; +/// Legacy in app safari webview load +- (void)openURLInWebView:(nonnull NSURL *)url; + @end NS_ASSUME_NONNULL_END diff --git a/MVMCoreUI/OtherHandlers/MVMCoreUIActionHandler.m b/MVMCoreUI/OtherHandlers/MVMCoreUIActionHandler.m index 3673d99e..def5ddf5 100644 --- a/MVMCoreUI/OtherHandlers/MVMCoreUIActionHandler.m +++ b/MVMCoreUI/OtherHandlers/MVMCoreUIActionHandler.m @@ -15,6 +15,7 @@ @import MVMCore.NSDictionary_MFConvenience; @import MVMCore.MVMCoreJSONConstants; @import MVMCore.MVMCoreCache; +@import SafariServices; @implementation MVMCoreUIActionHandler @@ -122,4 +123,11 @@ } } +- (void)openURLInWebView:(nonnull NSURL *)url { + SFSafariViewController *safariViewController = [[SFSafariViewController alloc] initWithURL:url]; + safariViewController.preferredBarTintColor = [UIColor whiteColor]; + safariViewController.preferredControlTintColor = [UIColor blackColor]; + [[MVMCoreNavigationHandler sharedNavigationHandler] presentViewController:safariViewController animated:YES]; +} + @end From ac9259e4161718fb18c40a884cabf3a8d6e24201 Mon Sep 17 00:00:00 2001 From: Scott Pfeil Date: Mon, 14 Feb 2022 12:08:37 -0500 Subject: [PATCH 4/5] remove added header --- MVMCoreUI/Atomic/Atoms/Views/WebView.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift index b4ec9b21..4e32fdb8 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift @@ -8,7 +8,6 @@ import UIKit import WebKit -import SafariServices @objcMembers open class WebView: View, MVMCoreUIViewConstrainingProtocol { From 35625f2ac4ed258b56941e0698e70f4faf815ded Mon Sep 17 00:00:00 2001 From: Scott Pfeil Date: Thu, 17 Feb 2022 10:26:24 -0500 Subject: [PATCH 5/5] name change for open in safari webview --- MVMCoreUI/Atomic/Atoms/Views/WebView.swift | 2 +- MVMCoreUI/OtherHandlers/MVMCoreUIActionHandler.h | 2 +- MVMCoreUI/OtherHandlers/MVMCoreUIActionHandler.m | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift index 4e32fdb8..d3a91920 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/WebView.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/WebView.swift @@ -174,7 +174,7 @@ extension WebView : WKNavigationDelegate { let url = navigationAction.request.url, let urlString = url.absoluteString.removingPercentEncoding, !urlString.contains("#") { - MVMCoreUIActionHandler.shared()?.openURL(inWebView: url) + MVMCoreUIActionHandler.shared()?.openURL(inSafariWebView: url) decisionHandler(.cancel) } else { decisionHandler(.allow) diff --git a/MVMCoreUI/OtherHandlers/MVMCoreUIActionHandler.h b/MVMCoreUI/OtherHandlers/MVMCoreUIActionHandler.h index 7d3d10c7..4c1afd45 100644 --- a/MVMCoreUI/OtherHandlers/MVMCoreUIActionHandler.h +++ b/MVMCoreUI/OtherHandlers/MVMCoreUIActionHandler.h @@ -28,7 +28,7 @@ NS_ASSUME_NONNULL_BEGIN - (void)topNotificationAction:(nullable NSDictionary *)actionInformation additionalData:(nullable NSDictionary *)additionalData delegateObject:(nullable DelegateObject *)delegateObject; /// Legacy in app safari webview load -- (void)openURLInWebView:(nonnull NSURL *)url; +- (void)openURLInSafariWebView:(nonnull NSURL *)url; @end diff --git a/MVMCoreUI/OtherHandlers/MVMCoreUIActionHandler.m b/MVMCoreUI/OtherHandlers/MVMCoreUIActionHandler.m index def5ddf5..fb7fe919 100644 --- a/MVMCoreUI/OtherHandlers/MVMCoreUIActionHandler.m +++ b/MVMCoreUI/OtherHandlers/MVMCoreUIActionHandler.m @@ -123,7 +123,7 @@ } } -- (void)openURLInWebView:(nonnull NSURL *)url { +- (void)openURLInSafariWebView:(nonnull NSURL *)url { SFSafariViewController *safariViewController = [[SFSafariViewController alloc] initWithURL:url]; safariViewController.preferredBarTintColor = [UIColor whiteColor]; safariViewController.preferredControlTintColor = [UIColor blackColor];