Unverified Commit bc498fc2 authored by Leonardo Aramaki's avatar Leonardo Aramaki Committed by GitHub

Merge pull request #655 from aniketsingh03/patch-4

[IMPROVEMENT] Adds error messages to login edit texts
parents fcc9a2a5 2a281fa3
...@@ -12,31 +12,31 @@ import chat.rocket.android.activity.MainActivity; ...@@ -12,31 +12,31 @@ import chat.rocket.android.activity.MainActivity;
*/ */
public class LaunchUtil { public class LaunchUtil {
/** /**
* launch MainActivity with proper flags. * launch MainActivity with proper flags.
*/ */
public static void showMainActivity(Context context) { public static void showMainActivity(Context context) {
Intent intent = new Intent(context, MainActivity.class); Intent intent = new Intent(context, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(intent); context.startActivity(intent);
} }
/** /**
* launch AddServerActivity with proper flags. * launch AddServerActivity with proper flags.
*/ */
public static void showAddServerActivity(Context context) { public static void showAddServerActivity(Context context) {
Intent intent = new Intent(context, AddServerActivity.class); Intent intent = new Intent(context, AddServerActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(intent); context.startActivity(intent);
} }
/** /**
* launch ServerConfigActivity with proper flags. * launch ServerConfigActivity with proper flags.
*/ */
public static void showLoginActivity(Context context, String hostname) { public static void showLoginActivity(Context context, String hostname) {
Intent intent = new Intent(context, LoginActivity.class); Intent intent = new Intent(context, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra(LoginActivity.KEY_HOSTNAME, hostname); intent.putExtra(LoginActivity.KEY_HOSTNAME, hostname);
context.startActivity(intent); context.startActivity(intent);
} }
} }
...@@ -13,6 +13,10 @@ public interface LoginContract { ...@@ -13,6 +13,10 @@ public interface LoginContract {
void hideLoader(); void hideLoader();
void showErrorInUsernameEditText();
void showErrorInPasswordEditText();
void showError(String message); void showError(String message);
void showLoginServices(List<LoginServiceConfiguration> loginServiceList); void showLoginServices(List<LoginServiceConfiguration> loginServiceList);
......
...@@ -3,7 +3,9 @@ package chat.rocket.android.fragment.server_config ...@@ -3,7 +3,9 @@ package chat.rocket.android.fragment.server_config
import android.os.Bundle import android.os.Bundle
import android.support.constraint.ConstraintLayout import android.support.constraint.ConstraintLayout
import android.support.design.widget.Snackbar import android.support.design.widget.Snackbar
import android.support.design.widget.TextInputLayout
import android.support.v4.app.Fragment import android.support.v4.app.Fragment
import android.text.TextUtils
import android.view.View import android.view.View
import android.widget.Button import android.widget.Button
import android.widget.TextView import android.widget.TextView
...@@ -14,8 +16,10 @@ import chat.rocket.android.log.RCLog ...@@ -14,8 +16,10 @@ import chat.rocket.android.log.RCLog
import chat.rocket.core.models.LoginServiceConfiguration import chat.rocket.core.models.LoginServiceConfiguration
import chat.rocket.persistence.realm.repositories.RealmLoginServiceConfigurationRepository import chat.rocket.persistence.realm.repositories.RealmLoginServiceConfigurationRepository
import chat.rocket.persistence.realm.repositories.RealmPublicSettingRepository import chat.rocket.persistence.realm.repositories.RealmPublicSettingRepository
import com.jakewharton.rxbinding2.widget.RxTextView
import java.util.* import java.util.*
/** /**
* Login screen. * Login screen.
*/ */
...@@ -26,6 +30,8 @@ class LoginFragment : AbstractServerConfigFragment(), LoginContract.View { ...@@ -26,6 +30,8 @@ class LoginFragment : AbstractServerConfigFragment(), LoginContract.View {
private lateinit var waitingView: View private lateinit var waitingView: View
private lateinit var txtUsername: TextView private lateinit var txtUsername: TextView
private lateinit var txtPasswd: TextView private lateinit var txtPasswd: TextView
private lateinit var textInputUsername: TextInputLayout
private lateinit var textInputPassword: TextInputLayout
override fun getLayout(): Int { override fun getLayout(): Int {
return R.layout.fragment_login return R.layout.fragment_login
...@@ -48,6 +54,11 @@ class LoginFragment : AbstractServerConfigFragment(), LoginContract.View { ...@@ -48,6 +54,11 @@ class LoginFragment : AbstractServerConfigFragment(), LoginContract.View {
val btnUserRegistration = rootView.findViewById<Button>(R.id.btn_user_registration) val btnUserRegistration = rootView.findViewById<Button>(R.id.btn_user_registration)
txtUsername = rootView.findViewById(R.id.editor_username) txtUsername = rootView.findViewById(R.id.editor_username)
txtPasswd = rootView.findViewById(R.id.editor_passwd) txtPasswd = rootView.findViewById(R.id.editor_passwd)
textInputUsername = rootView.findViewById(R.id.text_input_username)
textInputPassword = rootView.findViewById(R.id.text_input_passwd)
setUpRxBinders()
waitingView = rootView.findViewById(R.id.waiting) waitingView = rootView.findViewById(R.id.waiting)
btnEmail.setOnClickListener { _ -> presenter.login(txtUsername.text.toString(), txtPasswd.text.toString()) } btnEmail.setOnClickListener { _ -> presenter.login(txtUsername.text.toString(), txtPasswd.text.toString()) }
...@@ -58,11 +69,34 @@ class LoginFragment : AbstractServerConfigFragment(), LoginContract.View { ...@@ -58,11 +69,34 @@ class LoginFragment : AbstractServerConfigFragment(), LoginContract.View {
} }
} }
fun setUpRxBinders() {
RxTextView.textChanges(txtUsername).subscribe { text ->
if (!TextUtils.isEmpty(text) && textInputUsername.isErrorEnabled)
textInputUsername.setErrorEnabled(false)
}
RxTextView.textChanges(txtPasswd).subscribe { text ->
if (!TextUtils.isEmpty(text) && textInputPassword.isErrorEnabled)
textInputPassword.setErrorEnabled(false)
}
}
override fun showLoader() { override fun showLoader() {
container.visibility = View.GONE container.visibility = View.GONE
waitingView.visibility = View.VISIBLE waitingView.visibility = View.VISIBLE
} }
override fun showErrorInUsernameEditText() {
textInputUsername.setErrorEnabled(true);
textInputUsername.setError("Enter a Username")
}
override fun showErrorInPasswordEditText() {
textInputPassword.setErrorEnabled(true);
textInputPassword.setError("Enter a Password")
}
override fun hideLoader() { override fun hideLoader() {
waitingView.visibility = View.GONE waitingView.visibility = View.GONE
container.visibility = View.VISIBLE container.visibility = View.VISIBLE
......
...@@ -31,6 +31,7 @@ class LoginPresenter(private val loginServiceConfigurationRepository: LoginServi ...@@ -31,6 +31,7 @@ class LoginPresenter(private val loginServiceConfigurationRepository: LoginServi
getLoginServices() getLoginServices()
} }
override fun goBack() { override fun goBack() {
val context = RocketChatApplication.getInstance() val context = RocketChatApplication.getInstance()
val hostname = RocketChatCache.getSelectedServerHostname() val hostname = RocketChatCache.getSelectedServerHostname()
...@@ -43,7 +44,19 @@ class LoginPresenter(private val loginServiceConfigurationRepository: LoginServi ...@@ -43,7 +44,19 @@ class LoginPresenter(private val loginServiceConfigurationRepository: LoginServi
} }
override fun login(username: String, password: String) { override fun login(username: String, password: String) {
if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)) {
//set error to edit texts
if (TextUtils.isEmpty(username) && TextUtils.isEmpty(password)) {
view.showErrorInUsernameEditText()
view.showErrorInPasswordEditText()
return
}
if (TextUtils.isEmpty(username)) {
view.showErrorInUsernameEditText()
return
}
if (TextUtils.isEmpty(password)) {
view.showErrorInPasswordEditText()
return return
} }
......
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