| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- //
- // SecondViewController.swift
- // LoopFollow
- //
- // Created by Jon Fawcett on 6/1/20.
- // Copyright © 2020 Jon Fawcett. All rights reserved.
- //
- import UIKit
- import WebKit
- class NightscoutViewController: UIViewController {
- @IBOutlet weak var webView: WKWebView!
-
- var appStateController: AppStateController?
-
- override func viewDidLoad() {
- super.viewDidLoad()
- if UserDefaultsRepository.forceDarkMode.value {
- overrideUserInterfaceStyle = .dark
- }
-
- var url = UserDefaultsRepository.url.value
- let token = UserDefaultsRepository.token.value
-
- if token != "" {
- url = url + "?token=" + token
- }
-
- guard let myUrl = URL(string: url) else { return }
- webView.configuration.preferences.javaScriptEnabled = true
- webView.navigationDelegate = self
- webView.uiDelegate = self
- webView.load(URLRequest(url: myUrl))
-
- let refreshControl = UIRefreshControl()
- refreshControl.addTarget(self, action: #selector(reloadWebView(_:)), for: .valueChanged)
- webView.scrollView.addSubview(refreshControl)
-
- self.webView.uiDelegate = self
- }
- @objc func reloadWebView(_ sender: UIRefreshControl) {
- webView.reload()
- sender.endRefreshing()
- }
-
- // this handles target=_blank links by opening them in the same view
- func webView(webView: WKWebView!, createWebViewWithConfiguration configuration: WKWebViewConfiguration!, forNavigationAction navigationAction: WKNavigationAction!, windowFeatures: WKWindowFeatures!) -> WKWebView! {
- if let frame = navigationAction.targetFrame,
- frame.isMainFrame {
- return nil
- }
- // for _blank target or non-mainFrame target
- webView.load(navigationAction.request)
- return nil }
- }
- // MARK:- WKUIDelegate implementation
- extension NightscoutViewController: WKNavigationDelegate, WKUIDelegate {
-
- func webView(_ webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (Bool) -> Void) {
-
- let alertCtrl = UIAlertController(title: nil, message: message, preferredStyle: .alert)
-
- alertCtrl.addAction(UIAlertAction(title: "OK", style: .default) { action in
- completionHandler(true)
- })
- alertCtrl.addAction(UIAlertAction(title: "Cancel", style: .cancel) { action in
- completionHandler(false)
- })
-
- present(alertCtrl, animated: true)
- }
-
- func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
-
- guard let _ = navigationAction.request.url else {
- decisionHandler(.cancel)
- return
- }
-
- decisionHandler(.allow)
- }
-
- func webView(_ webView: WKWebView, shouldStartLoadWith request: URLRequest) -> Bool {
-
- guard let url = request.url else {
- return false
- }
-
- NSLog("Should start: \(url.absoluteString)")
- return true
- }
-
- func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
-
- if navigationAction.targetFrame == nil {
- webView.load(navigationAction.request)
- }
-
- return nil
- }
-
-
- }
|