RACCommunity / Rex

ReactiveCocoa Extensions
MIT License
226 stars 31 forks source link

How can I handle error flow when I bind action to rex_pressed.value #154

Closed Unihilator closed 8 years ago

Unihilator commented 8 years ago

I want to show error popup when an error happened to signal. How can I handle SignalProducer errors to show error to user?

let emailAndPasswordChecksSignal = emailTextSignal.combineLatestWith(passTextSignal)
        .flatMap(.Merge) { (email, password) -> SignalProducer<(), TextFieldErrorType> in
            if email == nil || email?.characters.count < 1 {
                return SignalProducer<(), TextFieldErrorType>(error: .EmailIsNotCorrect)
            }
            if password == nil || password?.characters.count < 1 {
                return SignalProducer<(), TextFieldErrorType>(error: .PasswordIsEmpty)
            }
            return SignalProducer<(), TextFieldErrorType>(value: ())
        }

        let loginAction = Action<UIButton, (), TextFieldErrorType> { _ in
            return emailAndPasswordChecksSignal
        }