// // NewsDetailVC.swift // Sirani // // Created by Anhar Solehudin on 06/04/19. // Copyright © 2019 Anhar Solehudin. All rights reserved. // import UIKit import WebKit class NewsDetailVC: UIViewController { // Outlets @IBOutlet weak var wvNews: WKWebView! @IBOutlet weak var progressLoading: UIView! @IBOutlet weak var tanggalLabel: UILabel! @IBOutlet weak var titleLabel: UILabel! @IBOutlet weak var thumbImageView: UIImageView! // Initialize private var presenter: NewsDetailPresenter! // Segue Id private let unwindToHomeSegueId = "unwindNewsDetailToHomeSegueId" private let unwindToNewsListSegueId = "unwindNewsDetailToNewsListSegueId" let SEGUE_HOME_ID = 21 let SEGUE_NEWS_LIST_ID = 22 // Constant private let alertNoConnectionTitle = "Informasi" private let alertNoConnectionMsg = "Sepertinya Anda sedang tidak tersambung pada koneksi internet" private let alertNoConnectionActionYes = "OK" // Public Variable, Use by Segue var newsId: Int = 0 var date: String? var judul: String? var urlThumb: String? var segueId: Int = 0 // Variables private var loading = false // View Lifecycles override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent } override func viewWillAppear(_ animated: Bool) { presenter.attachView(view: self) } override func viewDidLoad() { super.viewDidLoad() presenter = NewsDetailPresenter(siraniApiServices: SiraniApiServices()) tanggalLabel.text = self.date titleLabel.text = self.judul thumbImageView.loadFrom(URLAddress: self.urlThumb ?? "") } override func viewDidAppear(_ animated: Bool) { loadData() } override func viewDidDisappear(_ animated: Bool) { presenter.detachView() } // private functions private func loadData() { if !loading { if ConnectionHelper.isConnectedToNetwork() { print("Load data \(newsId)") presenter.loadData(newsId: newsId) } else { showNoConnection() } } } // Actions @IBAction func onBtnBackTap(_ sender: Any) { if segueId == SEGUE_HOME_ID { performSegue(withIdentifier: unwindToHomeSegueId, sender: self) } else if segueId == SEGUE_NEWS_LIST_ID { performSegue(withIdentifier: unwindToNewsListSegueId, sender: self) } } } // NewsDetailViewDelegate extension NewsDetailVC: NewsDetailViewDelegate { func showNoConnection() { let alertNoConnection = UIAlertController( title: alertNoConnectionTitle, message: alertNoConnectionMsg, preferredStyle: .alert ) alertNoConnection.addAction( UIAlertAction(title: alertNoConnectionActionYes, style: .default, handler: nil) ) self.present(alertNoConnection, animated: true, completion: nil) } func showLoading() { loading = true progressLoading.show() } func hideLoading() { loading = false progressLoading.hide() } func setNewsDetail(newsDetail: NewsDetail) { var news = newsDetail.news news = news.replacingOccurrences(of: "<", with: "<") news = news.replacingOccurrences(of: """, with: "\"") news = news.replacingOccurrences(of: "&", with: "&") news = news.replacingOccurrences(of: "'", with: "'") news = news.replacingOccurrences(of: ">", with: ">") self.wvNews.loadHTMLString(news, baseURL: nil) } }