//
//  MessageViewController.swift
//  Paiai_iOS
//
//  Created by FFIB on 2018/6/14.
//  Copyright © 2018 FFIB. All rights reserved.
//

import UIKit
import RxSwift
import PaiaiUIKit
import PaiaiDataKit

final class MessageViewController: UIViewController {

    @IBOutlet weak var sysUnreadTip: UIView!
    @IBOutlet weak var thumbupUnreadTip: UIView!
    @IBOutlet weak var commentUnreadTip: UIView!

    @IBOutlet weak var sysBtn: UIButton!
    @IBOutlet weak var thumbupBtn: UIButton!
    @IBOutlet weak var commentBtn: UIButton!

    var viewModel: MessageViewModel!
    var userInfoViewModel: UserInfoViewModel!

    private var disposeBag = DisposeBag()

    override func viewDidLoad() {
        super.viewDidLoad()
        binding()
    }

    override func didMove(toParent parent: UIViewController?) {
        self.viewModel.reload()
    }
}

extension MessageViewController {
    func binding() {
        bindInteraction()
        bindViewModelToTipView()
        bindUerInfoViewModelToView()
    }

    func bindInteraction() {
        sysBtn.rx.tap.bind(to: viewModel.sysBtnTapped).disposed(by: disposeBag)
        thumbupBtn.rx.tap.bind(to: viewModel.thumbupBtnTapped).disposed(by: disposeBag)
        commentBtn.rx.tap.bind(to: viewModel.commentBtnTapped).disposed(by: disposeBag)
    }

    func bindViewModelToTipView() {
        viewModel.sysReadedTip.bind(to: sysUnreadTip.rx.isHidden).disposed(by: disposeBag)
        viewModel.commentReadedTip.bind(to: commentUnreadTip.rx.isHidden).disposed(by: disposeBag)
        viewModel.thumbupReadedTip.bind(to: thumbupUnreadTip.rx.isHidden).disposed(by: disposeBag)
    }

    func bindUerInfoViewModelToView() {
        userInfoViewModel.isLoggedIn
            .asDriver(onErrorJustReturn: ())
            .drive(onNext: {[unowned self] (_) in
                self.viewModel.clear()
                self.viewModel.reload()
            }).disposed(by: disposeBag)
    }
}

extension MessageViewController: Storyboarded {
    static func instantiate() -> MessageViewController {
        return UIStoryboard.message.instantiateViewController(type: MessageViewController.self)
    }
}