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" /> - -