Управление ViewState с помощью ConfirmationDialog с помощью RxJava - PullRequest
0 голосов
/ 05 мая 2020
override fun submitIntent(): Observable<Triple<Long, Long, String>> {



        AlertOP.showPasswordVerificationDialog(requireContext(), object : GeneralDialogListener{
            override fun onPositiveClick() {

            }

            override fun onNegativeClick() {

            }
        })

        return binding.btnShareData.clicks().map {

            binding.data?.let {
                KeyboardOp.hide(requireActivity(), binding.etDataVolume)

                Triple(selectedCreditAccountID, selectedBundleCreditID, it.dataVolume)
            }
        }

    }

Вот проблема, я хочу вызвать это

return binding.btnShareData.clicks().map {

            binding.data?.let {
                KeyboardOp.hide(requireActivity(), binding.etDataVolume)

                Triple(selectedCreditAccountID, selectedBundleCreditID, it.dataVolume)
            }
        }

только тогда, когда onPositiveClick нажимается с помощью RxJava. AlertOP.showPasswordVerificationDialog(... - это диалоговое окно подтверждения. Пожалуйста, помогите и проигнорируйте, если задали этот вопрос некорректно. Извините.

1 Ответ

0 голосов
/ 06 мая 2020

Итак, после некоторого поиска я смог решить проблему, используя PublishSubject из RxJava Вот посмотрите мой обновленный код

private val verifyPasswordSubmitEventBridge = PublishSubject.create<Boolean>()

... 

override fun submitIntent(): Observable<Triple<Long, Long, String>> {
        binding.btnShareData.setOnClickListener {

            AlertOP.showPasswordVerificationDialog(
                requireContext(),
                object : GeneralDialogListener {
                    override fun onPositiveClick() {
                        verifyPasswordSubmitEventBridge.onNext(true)
                    }

                    override fun onNegativeClick() {
                        verifyPasswordSubmitEventBridge.onNext(false)
                    }
                })
        }
        return verifyPasswordSubmitEventBridge.filter { it }.map {
            binding.data?.let {
                KeyboardOp.hide(requireActivity(), binding.etDataVolume)

                Triple(selectedCreditAccountID, selectedBundleCreditID, it.dataVolume)
            }

        }
    }

, и теперь я могу достичь того, что требовалось, на submitIntent ViewState теперь я могу показать подтверждение dialog, прежде чем перейти к вызову API, используя RxJava

...