From 00d5790a7a6fba68ea8c9fb59b437b0ce5466d92 Mon Sep 17 00:00:00 2001 From: Strugaru Alexandra Date: Tue, 21 Mar 2017 10:27:48 +0100 Subject: [PATCH 1/2] unwrapped optional --- Source/FolioReaderPage.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/FolioReaderPage.swift b/Source/FolioReaderPage.swift index c3ee639b2..a18b0d24f 100755 --- a/Source/FolioReaderPage.swift +++ b/Source/FolioReaderPage.swift @@ -273,7 +273,7 @@ open class FolioReaderPage: UICollectionViewCell, UIWebViewDelegate, UIGestureRe let baseURL = absoluteURLString.substring(to: range.lowerBound) let positionString = absoluteURLString.substring(from: range.lowerBound) if let point = getEventTouchPoint(fromPositionParameterString: positionString) { - let attributeContentString = (baseURL.replacingOccurrences(of: "\(url.scheme)://", with: "").removingPercentEncoding) + let attributeContentString = (baseURL.replacingOccurrences(of: "\(_urlScheme)://", with: "").removingPercentEncoding) // Call the on click action block listener.onClickAction(attributeContentString, point) // Mark the scheme as class based click listener scheme From 3171e75cbd11f42eef3e413b3ba1601b134adf28 Mon Sep 17 00:00:00 2001 From: Hans Seiffert Date: Wed, 22 Mar 2017 15:21:40 +0100 Subject: [PATCH 2/2] Fix not working ClassBasedOnClickListener schemes --- Source/FolioReaderPage.swift | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/Source/FolioReaderPage.swift b/Source/FolioReaderPage.swift index a18b0d24f..776e6d82e 100755 --- a/Source/FolioReaderPage.swift +++ b/Source/FolioReaderPage.swift @@ -180,13 +180,15 @@ open class FolioReaderPage: UICollectionViewCell, UIWebViewDelegate, UIGestureRe } open func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool { - guard let webView = webView as? FolioReaderWebView else { - return true + guard + let webView = webView as? FolioReaderWebView, + let scheme = request.url?.scheme else { + return true } guard let url = request.url else { return false } - if url.scheme == "highlight" { + if scheme == "highlight" { shouldShowBar = false @@ -198,7 +200,7 @@ open class FolioReaderPage: UICollectionViewCell, UIWebViewDelegate, UIGestureRe menuIsVisible = true return false - } else if url.scheme == "play-audio" { + } else if scheme == "play-audio" { guard let decoded = url.absoluteString.removingPercentEncoding else { return false } let playID = decoded.substring(from: decoded.index(decoded.startIndex, offsetBy: 13)) @@ -207,7 +209,7 @@ open class FolioReaderPage: UICollectionViewCell, UIWebViewDelegate, UIGestureRe FolioReader.shared.readerAudioPlayer?.playAudio(href, fragmentID: playID) return false - } else if url.scheme == "file" { + } else if scheme == "file" { let anchorFromURL = url.fragment @@ -245,10 +247,10 @@ open class FolioReaderPage: UICollectionViewCell, UIWebViewDelegate, UIGestureRe } return true - } else if url.scheme == "mailto" { + } else if scheme == "mailto" { print("Email") return true - } else if url.absoluteString != "about:blank" && url.scheme!.contains("http") && navigationType == .linkClicked { + } else if url.absoluteString != "about:blank" && scheme.contains("http") && navigationType == .linkClicked { if #available(iOS 9.0, *) { let safariVC = SFSafariViewController(url: request.url!) @@ -266,14 +268,14 @@ open class FolioReaderPage: UICollectionViewCell, UIWebViewDelegate, UIGestureRe var isClassBasedOnClickListenerScheme = false for listener in readerConfig.classBasedOnClickListeners { - if let _urlScheme = url.scheme, - (_urlScheme == listener.schemeName), + if + (scheme == listener.schemeName), let absoluteURLString = request.url?.absoluteString, let range = absoluteURLString.range(of: "/clientX=") { let baseURL = absoluteURLString.substring(to: range.lowerBound) let positionString = absoluteURLString.substring(from: range.lowerBound) if let point = getEventTouchPoint(fromPositionParameterString: positionString) { - let attributeContentString = (baseURL.replacingOccurrences(of: "\(_urlScheme)://", with: "").removingPercentEncoding) + let attributeContentString = (baseURL.replacingOccurrences(of: "\(scheme)://", with: "").removingPercentEncoding) // Call the on click action block listener.onClickAction(attributeContentString, point) // Mark the scheme as class based click listener scheme