Ofir Bar
03/11/2020, 5:25 PMsatyan
03/11/2020, 5:35 PMFeatureViewModel @Inject(
private val subFeatureAPresenter: subFeatureAPresenter,
private val subfeatureBPresenter: subfeatureBPresenter
) {
fun onAction(action: Action) {
if (action is related to subFeatureAPresenter) {
val change = subFeatureAPresenter.action(action)
// handle change
}
if (action is related to subFeatureBPresenter) {
val change = subFeatureBPresenter.action(action)
// handle change
}
}
}
Anastasia Finogenova
03/12/2020, 1:13 AMSamuel Michael
03/12/2020, 5:00 AMclass AddCreditCardPresenter @Inject constructor(
private val interactor: AddCreditCardContract.Interactor
) : AddCreditCardContract.Presenter {
private var view: AddCreditCardContract.View? = null
init {
interactor.setPresenter(this)
}
override fun onViewAttached(view: AddCreditCardContract.View, router: AddCreditCardContract.Router) {
this.view = view
interactor.onRouterAttached(router)
interactor.onLifeCycleStarted { view as Fragment }
if (view.isEmpty()) {
interactor.loadData()
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
interactor.onActivityResult(requestCode, resultCode, data)
}
override fun onViewDetached() {
view = null
interactor.onRouterDetached()
}
override fun onBackPressed() {
interactor.onBackPressed()
}
override fun onDestroyed() {
interactor.onDestroyed()
}
override fun onDataLoaded(dataModel: AddCreditCardDataModel) {
view?.let { view ->
view.addCreditCardNumber(dataModel.creditCardNumber)
view.addExpiration(dataModel.expiryDate)
view.addCvv(dataModel.securityCode)
view.addNameOnCard(dataModel.nameOnCard)
view.addSelectedAddress(SelectedAddressViewModel(dataModel.selectedAddress, this))
dataModel.saveButton.buttonClickListener = Form(
mutableListOf(dataModel.creditCardNumber, dataModel.expiryDate, dataModel.securityCode, dataModel.nameOnCard)
) {
interactor.saveCard()
}
view.addSaveButton(dataModel.saveButton)
view.showKeyboard()
view.topmostViewLoaded()
}
}
override fun hideSoftKeyboard() {
view?.hideSoftKeyboard()
}
override fun showLoadingIndicator() {
view?.showLoadingIndicator()
}
override fun hideLoadingIndicator() {
view?.hideLoadingIndicator()
}
override fun onBillingAddressClick() {
view?.hideKeyboard()
interactor.goToSelectBillingAddress()
}
}
satyan
03/12/2020, 7:58 AMJeremy
03/13/2020, 7:00 PMOfir Bar
03/14/2020, 1:35 PMAnastasia Finogenova
03/14/2020, 1:53 PMOfir Bar
03/14/2020, 2:22 PMJeremy
03/14/2020, 2:23 PM