Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class LoginActivity: AppCompatActivity(), LoginContract.View {
- var mPresenter: LoginContract.Presenter? = LoginPresenter(this)
- override fun onCreate() {
- loginBtn.setOnClickListener { onLoginButtonClicked() }
- }
- override fun onLoginButtonClicked() {
- mPresenter?.onLoginBtnPressed(etUsername.text, etPassword.text)
- }
- // Move to Router
- // override fun goToOtpPage(userId: String) {
- // val intent = Intent(view, OtpActivity::class.java)
- // intent.putExtra(Constants.IntentExtras.USERID, userId)
- // startActivity(intent)
- // }
- override fun showError(message: String) {
- toast("Error: {$message}")
- }
- }
- class LoginPresenter(var mView: LoginContract.View?): LoginContract.Presenter, LoginContract.InteractorOutput {
- // Initialized Router to the Presenter and passes view as activity
- var mRouter: LoginContract.Router? = LoginRouter(mView as? Activity)
- var mInteractor: LoginContract.Interactor? = LoginInteractor(this)
- override fun onLoginBtnPressed(username: String, password: String) {
- mInteractor?.login(username, password)
- }
- override fun onLoginSuccess(userid: String) {
- mRouter?.goToOtpPage(user)
- }
- override fun onLoginError(message: String) {
- mView?.showError(message)
- }
- }
- class LoginInteractor(var mOutput: LoginContract.InteractorOutput?): LoginContract.Interactor {
- override fun login(username: String, password: String) {
- mRepository.login(username, password)
- ?.subscribeOn(Schedulers.io())
- ?.observeOn(AndroidSchedulers.mainThread())
- ?.subscribe({
- //do something here, like save it to db
- mOutput?.onLoginSuccess(it)
- },{
- mOutput?.onLoginError(it.message ?: "Error!")
- })
- }
- }
- // Separated from the view
- class LoginRouter(var mActivity: Activity?): LoginContract.Router {
- override fun goToOtpPage(userid: String) {
- val intent = Intent(view, OtpActivity::class.java)
- intent.putExtra(Constants.IntentExtras.USERID, userid)
- mActivity?.startActivity(intent)
- }
- }
Add Comment
Please, Sign In to add comment