You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

103 lines
2.7 KiB

//
// 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)
}
}