Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class LoginContracts {
- interface View {
- fun goToHomeScreen(user: User)
- fun showError(message: String)
- }
- interface Presenter {
- fun onDestroy()
- fun onLoginButtonPressed(username: String, password: String)
- }
- interface Interactor {
- fun login(username: String, password: String)
- }
- interface InteractorOutput {
- fun onLoginSuccess(user: User)
- fun onLoginError(message: String)
- }
- }
- class LoginActivity: LoginContracts.View{
- var presenter: LoginContracts.Presenter? = LoginPresenter(this)
- //other fields
- override fun onCreate() {
- //...
- loginButton.setOnClickListener { onLoginButtonClicked() }
- //...
- }
- override fun onDestroy() {
- presenter?.onDestroy()
- presenter = null
- super.onDestroy()
- }
- private fun onLoginButtonClicked() {
- presenter?.onLoginButtonClicked(usernameEditText.text, passwordEditText.text)
- }
- fun goToHomeScreen(user: User) {
- val intent = Intent(view, HomeActivity::class.java)
- intent.putExtra(Constants.IntentExtras.USER, user)
- startActivity(intent)
- }
- fun showError(message: String) {
- //shows the error on a dialog
- }
- }
- class LoginPresenter(var view: LoginContract.View?): LoginContract.Presenter, LoginContract.InteractorOutput {
- var interactor: LoginContract.Interactor? = LoginInteractor(this)
- fun onDestroy() {
- view = null
- interactor = null
- }
- fun onLoginButtonPressed(username: String, password: String) {
- interactor?.login(username, password)
- }
- fun onLoginSuccess(user: User) {
- view?.goToNextScreen(user)
- }
- fun onLoginError(message: String) {
- view?.showError(message)
- }
- }
- class LoginInteractor(var output: LoginContract.InteractorOutput?): LoginContract.Interactor {
- fun login(username: String, password: String) {
- LoginApiManager.login(username, password)
- ?.subscribeOn(Schedulers.newThread())
- ?.observeOn(AndroidSchedulers.mainThread())
- ?.subscribe({
- //does something with the user, like saving it or the token
- output?.onLoginSuccess(it)
- },
- { output?.onLoginError(it.message ?: "Error!") })
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement