Commit a9d6efbc authored by Filipe de Lima Brito's avatar Filipe de Lima Brito

Validate inputs

parent 223cacfb
package chat.rocket.android.authentication.login.presentation package chat.rocket.android.authentication.login.presentation
import android.widget.EditText
import chat.rocket.android.authentication.infraestructure.AuthTokenRepository import chat.rocket.android.authentication.infraestructure.AuthTokenRepository
import chat.rocket.android.authentication.presentation.AuthenticationNavigator import chat.rocket.android.authentication.presentation.AuthenticationNavigator
import chat.rocket.android.core.lifecycle.CancelStrategy import chat.rocket.android.core.lifecycle.CancelStrategy
import chat.rocket.android.util.launchUI import chat.rocket.android.util.launchUI
import chat.rocket.android.util.textContent
import chat.rocket.common.RocketChatException import chat.rocket.common.RocketChatException
import chat.rocket.common.RocketChatTwoFactorException import chat.rocket.common.RocketChatTwoFactorException
import chat.rocket.common.util.PlatformLogger import chat.rocket.common.util.PlatformLogger
...@@ -19,7 +21,6 @@ class LoginPresenter @Inject constructor(private val view: LoginView, ...@@ -19,7 +21,6 @@ class LoginPresenter @Inject constructor(private val view: LoginView,
private val okHttpClient: OkHttpClient, private val okHttpClient: OkHttpClient,
private val logger: PlatformLogger, private val logger: PlatformLogger,
private val repository: AuthTokenRepository) { private val repository: AuthTokenRepository) {
val client: RocketChatClient = RocketChatClient.create { val client: RocketChatClient = RocketChatClient.create {
httpClient = okHttpClient httpClient = okHttpClient
restUrl = HttpUrl.parse(navigator.currentServer)!! restUrl = HttpUrl.parse(navigator.currentServer)!!
...@@ -28,27 +29,39 @@ class LoginPresenter @Inject constructor(private val view: LoginView, ...@@ -28,27 +29,39 @@ class LoginPresenter @Inject constructor(private val view: LoginView,
platformLogger = logger platformLogger = logger
} }
fun authenticate(username: String, password: String) { fun authenticate(usernameOrEmail: EditText, password: EditText) {
// TODO - validate input val user = usernameOrEmail.textContent
val pass = password.textContent
if (user.isBlank() && pass.isEmpty()) {
view.shakeView(usernameOrEmail)
view.shakeView(password)
} else if (user.isBlank()) {
view.shakeView(usernameOrEmail)
} else if (pass.isEmpty()) {
view.shakeView(password)
} else {
launchUI(strategy) { launchUI(strategy) {
view.showLoading() view.showLoading()
try { try {
val token = client.login(username, password) val token = client.login(user, pass)
navigator.toChatList() navigator.toChatList()
} catch (ex: RocketChatException) { } catch (ex: RocketChatException) {
when(ex) { when (ex) {
is RocketChatTwoFactorException -> is RocketChatTwoFactorException -> navigator.toTwoFA(navigator.currentServer!!, user, pass)
navigator.toTwoFA(navigator.currentServer!!, username, password) else -> {
else -> val errorMessage = ex.message
view.onLoginError(ex.message) if (errorMessage != null) {
view.showMessage(errorMessage)
}
}
} }
} finally { } finally {
view.hideLoading() view.hideLoading()
} }
} }
} }
}
fun signup() { fun signup() {
navigator.toSignUp(navigator.currentServer!!) navigator.toSignUp(navigator.currentServer!!)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment