added iOS source code
[wl-app.git] / 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 (file)
index 0000000..bab8af6
--- /dev/null
@@ -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
+    }
+}