// // WebLinksViewController.swift // // // Created by shishir sapkota // import Foundation import UIKit import Alamofire import WebKit import RxSwift class WebLinksViewController: UIViewController, WKUIDelegate { // MARK: Properties // MARK: Outlets private let disposeBag = DisposeBag() @IBOutlet weak var backBtn: UIBarButtonItem! var navTitle: String = "" var url: String? var titleString: String = "" // MARK: VC's Life cycle var webView: WKWebView? var activityIndicator: UIActivityIndicatorView? override func viewDidLoad() { super.viewDidLoad() let barButton = UIBarButtonItem.init( title: "penny_test_close_text".localized(), style: UIBarButtonItem.Style.plain, target: self, action: #selector(self.cancel) ) self.navigationItem.rightBarButtonItem = barButton webView = WKWebView(frame: self.view.frame) setupWebView() activityIndicator = UIActivityIndicatorView(style: UIActivityIndicatorView.Style.gray) activityIndicator?.center = self.view.center self.view.addSubview(webView!) self.view.addSubview(activityIndicator!) setUIBinding() } private func setUIBinding() { backBtn.rx.tap.bind {[weak self] in self?.dismiss(animated: true) }.disposed(by: disposeBag) } private func setupWebView() { self.webView?.uiDelegate = self webView?.navigationDelegate = self } // MARK: IBActions override func viewWillAppear(_ animated: Bool) { self.navigationItem.title = titleString self.openURLInWebView() setupNormalNavigation() if self.presentingViewController == nil { self.navigationItem.leftBarButtonItem = nil } } @objc func cancel() { self.dismiss(animated: true, completion: nil) } func openURLInWebView() { if NetworkReachabilityManager()?.isReachable == true { if let url = URL.init(string: self.url ?? "") { let request = URLRequest(url: url) webView?.load(request) } } else { self.alert(type: .error, message: "no_internet_connection_error".localized(), title: "") } } } // MARK: WKNavigationDelegate extension WebLinksViewController: WKNavigationDelegate { func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) { self.activityIndicator?.startAnimating() } func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { self.activityIndicator?.stopAnimating() } func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) { self.activityIndicator?.stopAnimating() self.alert(type: .error, message: error.localizedDescription) } }