X-Git-Url: https://git.mdrn.pl/wl-app.git/blobdiff_plain/53b27422d140022594fc241cca91c3183be57bca..48b2fe9f7c2dc3d9aeaaa6dbfb27c7da4f3235ff:/iOS/WolneLektury/Screens/Authorization/AuthorizationWebViewController.swift diff --git a/iOS/WolneLektury/Screens/Authorization/AuthorizationWebViewController.swift b/iOS/WolneLektury/Screens/Authorization/AuthorizationWebViewController.swift new file mode 100644 index 0000000..bab8af6 --- /dev/null +++ b/iOS/WolneLektury/Screens/Authorization/AuthorizationWebViewController.swift @@ -0,0 +1,60 @@ +// +// AuthorizationWebViewController.swift +// WolneLektury +// +// Created by Pawel Dabrowski on 14/07/2018. +// Copyright © 2018 Fundacja Nowoczesna Polska. All rights reserved. +// + +import UIKit +import OAuthSwift +typealias WebView = UIWebView // WKWebView + +class AuthorizationWebViewController: OAuthWebViewController { + + var targetURL: URL? + let webView: WebView = WebView() + + override func viewDidLoad() { + super.viewDidLoad() + + self.webView.frame = UIScreen.main.bounds + self.webView.scalesPageToFit = true + self.webView.delegate = self + self.view.addSubview(self.webView) + loadAddressURL() + } + + override func handle(_ url: URL) { + targetURL = url + super.handle(url) + self.loadAddressURL() + } + + func loadAddressURL() { + guard let url = targetURL else { + return + } + let req = URLRequest(url: url) + self.webView.loadRequest(req) + } + + open override func doHandle(_ url: URL) { + let completion: () -> Void = { [unowned self] in + self.delegate?.oauthWebViewControllerDidPresent() + } + appDelegate.mainNavigator.setRootViewController(controller: self) + } +} + +// MARK: delegate +extension AuthorizationWebViewController: UIWebViewDelegate { + func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool { + if let url = request.url, url.scheme == "oauth-swift" { + // Call here AppDelegate.sharedInstance.applicationHandleOpenURL(url) if necessary ie. if AppDelegate not configured to handle URL scheme + // compare the url with your own custom provided one in `authorizeWithCallbackURL` + self.dismissWebViewController() + } + return true + } +}