dimanche 1 octobre 2017

Clean architecture. What are the jobs of presenter?

I have been reading some articles about the clean architecture, and how it can be implemented in android. I saw the sample app which shows its Android Implementation. Also, I went through a nice talk on Clean architecture on Android

So, I kind of understand most of the concepts, but there is some clarity that I would like to get on certain things.

As per my Understanding,

  • The View layer is the outer layer which deals with the UI, and framework related stuff
  • The presenter is the direct communicator for the view, which accepts user inputs, and executes certain use cases based on this by passing it to the use case layer or the interactor layer.
  • Interactor executes the use-case, give it back to the callback sent by presenter,
  • Presenter again converts this result into a view understandable data structure (a ViewModel) and just pass it back to the view.

I am not listing more details about the inner layers like repository since my question is related to the above-mentioned steps

Here, does the presenter have the only job of acting as a mediator between UseCases and UI, as a data dispatcher?

Does it only do the view model to use case model conversion and vice-versa?

The input validation logics rely on which layer? Can it be inside the presenter? For example, if we take a small use case of a sign-up process,

Once the user entered the details and clicked sign-up button, and data sent to the presenter, is it like

  • Presenter validates the input values if any error is there notify the view
  • If values are proper, convert it to a use case model, and execute certain use case, and once the result is given by the interactor, again convert to view model, send it to view.

And the second question is, who controls the navigation? The View or the Presenter or the UseCase?

who decides where to go next?

For example - Consider a use case of a login process, Where user will enter the credentials and click OK.

On successful login,

  • If users e-mail is not verified, go to email verify screen
  • If users profile is not completed, set-up the profile then only go to home screen
  • If user is new, show new offers screen, else directly go to home screen

So, who is responsible for making these decisions on which screen to go next? Is it the presenter, which decides and navigate the view accordingly? Or is it the use case handlers responsibility to inform the presenter what is the next State?

Sorry for making the question too long, but I just wanted to elaborate my current understandings. Thanks in advance

Aucun commentaire:

Enregistrer un commentaire