Antidote/Antidote/FAQController.swift

80 lines
2.1 KiB
Swift

// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
import Foundation
import WebKit
import SnapKit
private struct Constants {
static let FAQURL = "https://github.com/Zoxcore/Antidote/blob/develop/FAQ/en.md"
}
class FAQController: UIViewController {
fileprivate let theme: Theme
fileprivate var webView: WKWebView!
fileprivate var spinner: UIActivityIndicatorView!
init(theme: Theme) {
self.theme = theme
super.init(nibName: nil, bundle: nil)
hidesBottomBarWhenPushed = true
title = String(localized: "settings_faq")
}
required convenience init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func loadView() {
loadViewWithBackgroundColor(theme.colorForType(.NormalBackground))
createViews()
installConstraints()
}
override func viewDidLoad() {
super.viewDidLoad()
let request = URLRequest(url: URL(string: Constants.FAQURL)!)
webView.load(request)
}
}
extension FAQController: WKNavigationDelegate {
func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
spinner.startAnimating()
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
spinner.stopAnimating()
}
}
private extension FAQController {
func createViews() {
let configuration = WKWebViewConfiguration()
webView = WKWebView(frame: CGRect.zero, configuration: configuration)
webView.navigationDelegate = self
view.addSubview(webView)
spinner = UIActivityIndicatorView(activityIndicatorStyle: .gray)
spinner.hidesWhenStopped = true
view.addSubview(spinner)
}
func installConstraints() {
webView.snp.makeConstraints {
$0.edges.equalTo(view)
}
spinner.snp.makeConstraints {
$0.center.equalTo(view)
}
}
}