import UIKit
import RxSwift
import RxCocoa

let countDownSeconds: Int = 60

class ViewController: UIViewController {
    let bag = DisposeBag()
    
    @IBOutlet weak var button: UIButton!
    
    var disposable: Disposable? = nil
    
    override func viewDidLoad() {
        super.viewDidLoad()
        button.setTitle("获取验证码", for: .normal)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
    
    @IBAction func buttonAction(_ sender: UIButton) {
        self.disposable?.dispose()
        self.disposable =
            Observable<Int>.timer(0, period: 1, scheduler: MainScheduler.instance).map { $0 + 1 }
                .map { countDownSeconds - $0 }
                .do(onNext: {  [weak self] (element) in
                    guard let `self` = self else { return }
                    if element == 0 {
                        self.disposable?.dispose()
                        self.button.isEnabled = true
                        self.button.titleLabel?.text = "重新获取"
                        self.button.setTitle("重新获取", for: .normal)
                    } else {
                        self.button.isEnabled = false
                    }
                })
                .subscribe(onNext: { [weak self] (element) in
                    guard let `self` = self else { return }
                    self.button.titleLabel?.text = "\(element)秒后"
                    self.button.setTitle("\(element)秒后", for: .normal)
                })
    }
}