12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- //
- // BNIBookingWebView.swift
- // FMDB
- //
- // Created by Qindi on 01/04/22.
- //
- import UIKit
- import WebKit
- class BNIBookingWebView: UIViewController, WKNavigationDelegate, UIScrollViewDelegate, UIGestureRecognizerDelegate, WKScriptMessageHandler {
- var webView = WKWebView()
- let closeButton = UIButton()
- var customUrl = ""
-
- override var preferredStatusBarStyle: UIStatusBarStyle {
- return .default
- }
-
- override func viewDidLoad() {
- super.viewDidLoad()
-
- view.addSubview(webView)
- webView.translatesAutoresizingMaskIntoConstraints = false
- webView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
- webView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
- webView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
- webView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
- webView.navigationDelegate = self
- webView.allowsBackForwardNavigationGestures = true
- webView.scrollView.delegate = self
-
- let contentController = webView.configuration.userContentController
- contentController.add(self, name: "sendQueueBNI")
- let source: String = "var meta = document.createElement('meta');" +
- "meta.name = 'viewport';" +
- "meta.content = 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no';" +
- "var head = document.getElementsByTagName('head')[0];" +
- "head.appendChild(meta);"
-
- let script: WKUserScript = WKUserScript(source: source, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
- contentController.addUserScript(script)
-
- let refreshControl = UIRefreshControl()
- refreshControl.addTarget(self, action: #selector(reloadWebView(_:)), for: .valueChanged)
- webView.scrollView.addSubview(refreshControl)
-
- webView.isOpaque = false
- webView.backgroundColor = .white
- webView.scrollView.backgroundColor = .white
-
- var stringQMS = "https://sqbni.murni.id:4200/bnibookingonline/#/?userid="
- if !customUrl.isEmpty {
- stringQMS = customUrl
- }
- if stringQMS.lowercased().contains("?userid=") {
- let name = User.getData(pin: User.getMyPin())!.fullName
- stringQMS += name
- } else if stringQMS.lowercased().contains("?f_pin=") {
- stringQMS += User.getMyPin()!
- }
-
- if stringQMS.contains("<<f_pin>>") {
- stringQMS = stringQMS.replacingOccurrences(of: "<<f_pin>>", with: User.getMyPin()!)
- }
- let url = URL(string: "\(stringQMS)")!
- webView.load(URLRequest(url: url))
- }
-
- func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
- return true
- }
-
- func scrollViewDidScroll(_ scrollView: UIScrollView) {
- }
-
- func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
- if message.name == "sendQueueBNI" {
- guard let dict = message.body as? [String: AnyObject],
- let param1 = dict["param1"] as? String else {
- return
- }
- DispatchQueue.global().async {
- let _ = Nexilis.writeSync(message: CoreMessage_TMessageBank.queueBNI(service_id: param1), timeout: 30 * 1000)
- }
- }
- }
-
- @objc func reloadWebView(_ sender: UIRefreshControl) {
- webView.reload()
- sender.endRefreshing()
- }
- }
|