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.
 
 
 
 

109 lines
2.7 KiB

//
// NotificationHistoryViewController.swift
// GME Remit
//
// Created by InKwon James Kim on 2020/02/11.
//Copyright © 2020 Gobal Money Express Co. Ltd. All rights reserved.
//
import UIKit
import RxSwift
import RxCocoa
class NotificationHistoryViewController: UIViewController {
// MARK: Properties
var presenter: NotificationHistoryPresenter!
private let disposeBag = DisposeBag()
// MARK: Computed Properties
// MARK: IBOutlets
@IBOutlet private weak var tableView: UITableView!
@IBOutlet private weak var noticeErrorLabel: UILabel!
@IBOutlet private weak var closeButton: UIBarButtonItem!
// MARK: VC's Life cycle
override func viewDidLoad() {
super.viewDidLoad()
setup()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
setupNormalNavigation()
title = "Notice"
if self.presentingViewController == nil {
self.navigationItem.leftBarButtonItem = nil
}
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
title = ""
}
// MARK: IBActions
}
// MARK: Other Functions
extension NotificationHistoryViewController {
private func setup() {
setUI()
setBinding()
setUIBinding()
}
private func setUI() {
}
private func setUIBinding() {
closeButton.rx.tap.bind {[weak self] in
self?.dismiss(animated: true)
}.disposed(by: disposeBag)
}
private func setBinding() {
let viewWillAppear = rx.sentMessage(#selector(UIViewController.viewWillAppear(_:)))
.mapToVoid().asDriverOnErrorJustComplete()
let input = NotificationHistoryPresenter.Input(
viewWillAppear: viewWillAppear,
selectNoticeIndex: tableView.rx.itemSelected.map {$0.row}.asDriverOnErrorJustComplete()
)
let output = presenter.transform(input: input)
output.isError
.drive(
onNext: { self.alert(type: .error, message: $0.localizedDescription) }
).disposed(by: disposeBag)
output.isProgress
.drive(
onNext: { $0 ? self.showProgressHud() : self.hideProgressHud() }
).disposed(by: disposeBag)
output
.models.drive(
tableView.rx.items(cellIdentifier: "NotificationCell")
) { (_, element: NoticeModel, cell: NotificationCell) in
cell.setModel(element)
}
.disposed(by: disposeBag)
output.models.map {$0.count != 0}.drive(noticeErrorLabel.rx.isHidden).disposed(by: disposeBag)
tableView.rx.setDelegate(self).disposed(by: disposeBag)
}
}
extension NotificationHistoryViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 90
}
}