diff --git a/app/src/main/java/org/fossasia/openevent/general/auth/LoginFragment.kt b/app/src/main/java/org/fossasia/openevent/general/auth/LoginFragment.kt
index 3127383fb9..a013096dd3 100644
--- a/app/src/main/java/org/fossasia/openevent/general/auth/LoginFragment.kt
+++ b/app/src/main/java/org/fossasia/openevent/general/auth/LoginFragment.kt
@@ -16,20 +16,20 @@ import androidx.navigation.Navigation.findNavController
import com.google.android.material.snackbar.Snackbar
import kotlinx.android.synthetic.main.activity_main.navigationAuth
import kotlinx.android.synthetic.main.fragment_login.email
-import kotlinx.android.synthetic.main.fragment_login.loginButton
import kotlinx.android.synthetic.main.fragment_login.password
import kotlinx.android.synthetic.main.fragment_login.view.email
import kotlinx.android.synthetic.main.fragment_login.view.loginCoordinatorLayout
import kotlinx.android.synthetic.main.fragment_login.view.forgotPassword
import kotlinx.android.synthetic.main.fragment_login.view.loginButton
import kotlinx.android.synthetic.main.fragment_login.view.loginLayout
-import kotlinx.android.synthetic.main.fragment_login.view.progressBar
import kotlinx.android.synthetic.main.fragment_login.view.sentEmailLayout
import kotlinx.android.synthetic.main.fragment_login.view.tick
import org.fossasia.openevent.general.R
import org.fossasia.openevent.general.search.SmartAuthViewModel
import org.fossasia.openevent.general.utils.Utils
+import org.fossasia.openevent.general.utils.Utils.show
import org.fossasia.openevent.general.utils.Utils.hideSoftKeyboard
+import org.fossasia.openevent.general.utils.Utils.progressDialog
import org.fossasia.openevent.general.utils.extensions.nonNull
import org.koin.androidx.viewmodel.ext.android.viewModel
@@ -48,6 +48,7 @@ class LoginFragment : Fragment() {
): View? {
rootView = inflater.inflate(R.layout.fragment_login, container, false)
+ val progressDialog = progressDialog(context)
val thisActivity = activity
if (thisActivity is AppCompatActivity) {
thisActivity.supportActionBar?.title = "Login"
@@ -81,14 +82,14 @@ class LoginFragment : Fragment() {
loginViewModel.progress
.nonNull()
.observe(this, Observer {
- handleProgressBar(it)
+ progressDialog.show(it)
})
smartAuthViewModel.progress
.nonNull()
.observe(this, Observer {
- handleProgressBar(it)
- })
+ progressDialog.show(it)
+ })
loginViewModel.showNoInternetDialog
.nonNull()
@@ -171,18 +172,12 @@ class LoginFragment : Fragment() {
smartAuthViewModel.requestCredentials(activity)
}
- private fun handleProgressBar(show: Boolean) {
- rootView.progressBar.isVisible = show
- loginButton.isEnabled = !show
- }
-
private fun redirectToEvents() {
findNavController(rootView).popBackStack(R.id.eventsFragment, false)
Snackbar.make(rootView, R.string.welcome_back, Snackbar.LENGTH_SHORT).show()
}
private fun onEmailEntered(enable: Boolean) {
- rootView.loginButton.isEnabled = enable
rootView.forgotPassword.isVisible = enable
}
diff --git a/app/src/main/java/org/fossasia/openevent/general/auth/LoginViewModel.kt b/app/src/main/java/org/fossasia/openevent/general/auth/LoginViewModel.kt
index ffba3f5c15..de3f46791f 100644
--- a/app/src/main/java/org/fossasia/openevent/general/auth/LoginViewModel.kt
+++ b/app/src/main/java/org/fossasia/openevent/general/auth/LoginViewModel.kt
@@ -57,6 +57,9 @@ class LoginViewModel(
if (email.isNullOrEmpty() || password.isNullOrEmpty()) {
mutableError.value = "Email or Password cannot be empty!"
return true
+ } else if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
+ mutableError.value = "Invalid email address!"
+ return true
}
return false
}
diff --git a/app/src/main/java/org/fossasia/openevent/general/auth/SignUpFragment.kt b/app/src/main/java/org/fossasia/openevent/general/auth/SignUpFragment.kt
index 0173fc3aff..9558093df4 100644
--- a/app/src/main/java/org/fossasia/openevent/general/auth/SignUpFragment.kt
+++ b/app/src/main/java/org/fossasia/openevent/general/auth/SignUpFragment.kt
@@ -9,7 +9,6 @@ import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.EditorInfo
import androidx.appcompat.app.AppCompatActivity
-import androidx.core.view.isVisible
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.navigation.Navigation.findNavController
@@ -18,16 +17,15 @@ import kotlinx.android.synthetic.main.fragment_signup.confirmPasswords
import kotlinx.android.synthetic.main.fragment_signup.firstNameText
import kotlinx.android.synthetic.main.fragment_signup.lastNameText
import kotlinx.android.synthetic.main.fragment_signup.passwordSignUp
-import kotlinx.android.synthetic.main.fragment_signup.signUpButton
import kotlinx.android.synthetic.main.fragment_signup.textInputLayoutPassword
import kotlinx.android.synthetic.main.fragment_signup.usernameSignUp
-import kotlinx.android.synthetic.main.fragment_signup.view.progressBarSignUp
import kotlinx.android.synthetic.main.fragment_signup.view.signUpButton
import kotlinx.android.synthetic.main.fragment_signup.view.lastNameText
import kotlinx.android.synthetic.main.fragment_signup.view.passwordSignUp
import kotlinx.android.synthetic.main.fragment_signup.view.signupNestedScrollView
import org.fossasia.openevent.general.R
import org.fossasia.openevent.general.utils.Utils
+import org.fossasia.openevent.general.utils.Utils.show
import org.fossasia.openevent.general.utils.extensions.nonNull
import org.koin.androidx.viewmodel.ext.android.viewModel
@@ -43,6 +41,7 @@ class SignUpFragment : Fragment() {
): View? {
rootView = inflater.inflate(R.layout.fragment_signup, container, false)
+ val progressDialog = Utils.progressDialog(context)
val thisActivity = activity
if (thisActivity is AppCompatActivity) {
thisActivity.supportActionBar?.title = "Sign Up"
@@ -76,8 +75,7 @@ class SignUpFragment : Fragment() {
signUpViewModel.progress
.nonNull()
.observe(this, Observer {
- rootView.progressBarSignUp.isVisible = it
- signUpButton.isEnabled = !it
+ progressDialog.show(it)
})
signUpViewModel.showNoInternetDialog
diff --git a/app/src/main/java/org/fossasia/openevent/general/utils/Utils.kt b/app/src/main/java/org/fossasia/openevent/general/utils/Utils.kt
index b7e9938e5d..9fde585af7 100644
--- a/app/src/main/java/org/fossasia/openevent/general/utils/Utils.kt
+++ b/app/src/main/java/org/fossasia/openevent/general/utils/Utils.kt
@@ -1,6 +1,7 @@
package org.fossasia.openevent.general.utils
import android.app.AlertDialog
+import android.app.ProgressDialog
import android.content.Context
import android.graphics.BitmapFactory
import android.net.Uri
@@ -44,6 +45,18 @@ object Utils {
.show()
}
+ fun progressDialog(context: Context?): ProgressDialog {
+ val dialog = ProgressDialog(context)
+ dialog.setCancelable(false)
+ dialog.setMessage("Loading...")
+ return dialog
+ }
+
+ fun ProgressDialog.show(show: Boolean) {
+ if (show) this.show()
+ else this.dismiss()
+ }
+
fun showSoftKeyboard(context: Context?, view: View) {
view.requestFocus()
val manager = context?.getSystemService(Context.INPUT_METHOD_SERVICE)
diff --git a/app/src/main/res/layout/fragment_login.xml b/app/src/main/res/layout/fragment_login.xml
index 345e8d12c8..f67d90f514 100644
--- a/app/src/main/res/layout/fragment_login.xml
+++ b/app/src/main/res/layout/fragment_login.xml
@@ -76,9 +76,8 @@
android:id="@+id/loginButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:enabled="false"
android:layout_marginTop="@dimen/padding_large"
- android:layout_marginBottom="@dimen/padding_large"
+ android:layout_marginBottom="@dimen/padding_medium"
android:padding="@dimen/padding_medium"
android:textColor="@android:color/white"
android:backgroundTint="@color/colorPrimary"
@@ -91,17 +90,11 @@
android:visibility="gone"
android:layout_height="wrap_content"
android:textColor="@color/colorPrimary"
- android:layout_marginTop="@dimen/padding_large"
+ android:layout_marginTop="@dimen/padding_medium"
android:layout_marginBottom="@dimen/padding_large"
android:padding="@dimen/padding_medium"
android:text="@string/forgot_password" />
-
@@ -129,13 +129,6 @@
android:text="@string/sign_up"
android:textColor="@android:color/white" />
-
-