diff --git a/buildSrc/build/kotlin/compileKotlin/build-history.bin b/buildSrc/build/kotlin/compileKotlin/build-history.bin index 504ddc3..2e56a75 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/build-history.bin and b/buildSrc/build/kotlin/compileKotlin/build-history.bin differ diff --git a/buildSrc/build/kotlin/compileKotlin/last-build.bin b/buildSrc/build/kotlin/compileKotlin/last-build.bin index de5d81f..be1c191 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/last-build.bin and b/buildSrc/build/kotlin/compileKotlin/last-build.bin differ diff --git a/buildSrc/build/libs/buildSrc.jar b/buildSrc/build/libs/buildSrc.jar index cbf95cb..5f2654c 100644 Binary files a/buildSrc/build/libs/buildSrc.jar and b/buildSrc/build/libs/buildSrc.jar differ diff --git a/feature/login/src/main/java/com/moneybox/minimb/feature/login/data/LoginDataSource.kt b/feature/login/src/main/java/com/moneybox/minimb/feature/login/data/LoginDataSource.kt index c5535c4..25c2e9c 100644 --- a/feature/login/src/main/java/com/moneybox/minimb/feature/login/data/LoginDataSource.kt +++ b/feature/login/src/main/java/com/moneybox/minimb/feature/login/data/LoginDataSource.kt @@ -25,6 +25,8 @@ class LoginDataSource @Inject constructor(private val service : LoginDataService errorResponseRemote?.let { it.message?.let { msg -> emit(ApiResponseResult.error(msg, result.code().toString())) + } ?: kotlin.run { + emit(ApiResponseResult.error("Server Error", result.code().toString())) } } } diff --git a/feature/login/src/main/java/com/moneybox/minimb/feature/login/domain/utilities/LoginActivityHandler.kt b/feature/login/src/main/java/com/moneybox/minimb/feature/login/domain/utilities/LoginActivityHandler.kt index 22c8a98..abce61f 100644 --- a/feature/login/src/main/java/com/moneybox/minimb/feature/login/domain/utilities/LoginActivityHandler.kt +++ b/feature/login/src/main/java/com/moneybox/minimb/feature/login/domain/utilities/LoginActivityHandler.kt @@ -11,11 +11,8 @@ class LoginActivityHandler (val binding : ActivityLoginBinding){ fun passwordValidator(editable: Editable) { with(binding){ if (etPassword == null) return - val minimumLength = 5 - if (!TextUtils.isEmpty(editable.toString()) && editable.length < minimumLength) { - etPassword.error = "Password must be minimum $minimumLength length" - } else { - etPassword.error = null + if (TextUtils.isEmpty(editable.toString())) { + etPassword.error = binding.root.resources.getString(R.string.error_empty_password) } } } diff --git a/feature/login/src/main/java/com/moneybox/minimb/feature/login/presentation/login/LoginActivity.kt b/feature/login/src/main/java/com/moneybox/minimb/feature/login/presentation/login/LoginActivity.kt index 1c34a88..ad3689c 100644 --- a/feature/login/src/main/java/com/moneybox/minimb/feature/login/presentation/login/LoginActivity.kt +++ b/feature/login/src/main/java/com/moneybox/minimb/feature/login/presentation/login/LoginActivity.kt @@ -43,10 +43,22 @@ class LoginActivity : AppCompatActivity() { with(loginViewModel){ loginClick.observe(this@LoginActivity, Observer { if (it){ - if (isNetworkAvailable(this@LoginActivity)) { - login() + if(this.isValid()) { + if (isNetworkAvailable(this@LoginActivity)) { + login() + } else { + Snackbar.make( + binding.root, + getString(R.string.no_internet), + Snackbar.LENGTH_LONG + ).show() + } }else{ - Snackbar.make(binding.root, getString(R.string.no_internet), Snackbar.LENGTH_LONG).show() + Snackbar.make( + binding.root, + getString(R.string.empty_fields), + Snackbar.LENGTH_LONG + ).show() } } }) diff --git a/feature/login/src/main/java/com/moneybox/minimb/feature/login/presentation/login/LoginViewModel.kt b/feature/login/src/main/java/com/moneybox/minimb/feature/login/presentation/login/LoginViewModel.kt index 0394a68..947e6a1 100644 --- a/feature/login/src/main/java/com/moneybox/minimb/feature/login/presentation/login/LoginViewModel.kt +++ b/feature/login/src/main/java/com/moneybox/minimb/feature/login/presentation/login/LoginViewModel.kt @@ -1,6 +1,7 @@ package com.moneybox.minimb.feature.login.presentation.login import android.content.SharedPreferences +import android.text.TextUtils import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope @@ -33,6 +34,7 @@ class LoginViewModel @Inject constructor(private val loginRepository: LoginRepos val password = MutableLiveData("") fun login(){ + val userMap = HashMap() userMap["email"] = email.value!! userMap["password"] = password.value!! @@ -69,4 +71,7 @@ class LoginViewModel @Inject constructor(private val loginRepository: LoginRepos _loginResultStored.value = false } } + fun isValid() : Boolean{ + return !TextUtils.isEmpty(email.value) && !TextUtils.isEmpty(password.value) + } } \ No newline at end of file diff --git a/feature/login/src/main/res/layout/activity_login.xml b/feature/login/src/main/res/layout/activity_login.xml index d13a28c..4af13a3 100644 --- a/feature/login/src/main/res/layout/activity_login.xml +++ b/feature/login/src/main/res/layout/activity_login.xml @@ -25,37 +25,56 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/moneybox_logo" - app:layout_constraintBottom_toTopOf="@+id/et_email" + app:layout_constraintBottom_toTopOf="@+id/email_text_input_layout" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> - + app:layout_constraintBottom_toTopOf="@+id/password_text_input_layout" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="1.0" > + + + - + app:passwordToggleEnabled="true" + app:passwordToggleTint="@color/secondary" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + +