diff --git a/app/src/main/java/com/capstone/foodify/Activity/SignInActivity.java b/app/src/main/java/com/capstone/foodify/Activity/SignInActivity.java index 5f82517..b108125 100644 --- a/app/src/main/java/com/capstone/foodify/Activity/SignInActivity.java +++ b/app/src/main/java/com/capstone/foodify/Activity/SignInActivity.java @@ -43,12 +43,12 @@ public class SignInActivity extends AppCompatActivity { private FirebaseAuth mAuth; TextView signUp_textView, forgotPassword_textView; - TextInputLayout textInput_phone, textInput_password; - TextInputEditText edt_phone, edt_password; + TextInputLayout textInput_email, textInput_password; + TextInputEditText edt_email, edt_password; MaterialButton signInButton; ImageView back_image; ConstraintLayout progressLayout; - String phone, password = null; + String email, password = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -60,6 +60,9 @@ public class SignInActivity extends AppCompatActivity { //Init Paper Paper.init(this); + if(Common.TOKEN != null) + startActivity(new Intent(this, MainActivity.class)); + // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance(); @@ -103,7 +106,7 @@ public class SignInActivity extends AppCompatActivity { } private void initData(){ - phone = edt_phone.getText().toString(); + email = edt_email.getText().toString(); password = edt_password.getText().toString(); } @@ -111,19 +114,19 @@ public class SignInActivity extends AppCompatActivity { boolean dataHasValidate = true; //Check phone number - if(phone.isEmpty()){ - textInput_phone.setError("Số điện thoại không được bỏ trống!"); + if(email.isEmpty()){ + textInput_email.setError("Email không được bỏ trống!"); dataHasValidate = false; } else { - - Pattern patternPhone = Pattern.compile(Common.PHONE_PATTERN); - Matcher matcherPhone = patternPhone.matcher(phone); - if(!matcherPhone.find()){ - textInput_phone.setError("Số điện thoại không đúng định dạng. Vui lòng kiểm tra lại!"); + //Check email valid + Pattern patternEmail = Pattern.compile(Common.VALID_EMAIL_ADDRESS_REGEX, Pattern.CASE_INSENSITIVE); + Matcher matcherEmail = patternEmail.matcher(email); + if(!matcherEmail.matches()){ + textInput_email.setError("Địa chỉ email không đúng định dạng. Xin vui lòng kiểm tra lại!"); dataHasValidate = false; } else { - textInput_phone.setErrorEnabled(false); + textInput_email.setErrorEnabled(false); } } @@ -147,7 +150,7 @@ public class SignInActivity extends AppCompatActivity { mAuth.setLanguageCode("vi"); - mAuth.signInWithEmailAndPassword(edt_phone.getText().toString(), edt_password.getText().toString()) + mAuth.signInWithEmailAndPassword(edt_email.getText().toString(), edt_password.getText().toString()) .addOnCompleteListener(SignInActivity.this, new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { @@ -187,12 +190,12 @@ public class SignInActivity extends AppCompatActivity { } private void initComponent() { - textInput_phone = findViewById(R.id.textInput_phone); + textInput_email = findViewById(R.id.textInput_email); textInput_password = findViewById(R.id.textInput_password); signUp_textView = findViewById(R.id.sign_up_textView); forgotPassword_textView = findViewById(R.id.forgotPassword_textView); back_image = findViewById(R.id.back_image); - edt_phone = findViewById(R.id.edt_email); + edt_email = findViewById(R.id.edt_email); edt_password = findViewById(R.id.edt_password); signInButton = findViewById(R.id.sign_in_button); @@ -201,7 +204,7 @@ public class SignInActivity extends AppCompatActivity { } private void setFontUI() { - textInput_phone.setTypeface(Common.setFontBebas(getAssets())); + textInput_email.setTypeface(Common.setFontBebas(getAssets())); textInput_password.setTypeface(Common.setFontBebas(getAssets())); } diff --git a/app/src/main/java/com/capstone/foodify/Activity/SignUpActivity.java b/app/src/main/java/com/capstone/foodify/Activity/SignUpActivity.java index c27cad6..2d4d291 100644 --- a/app/src/main/java/com/capstone/foodify/Activity/SignUpActivity.java +++ b/app/src/main/java/com/capstone/foodify/Activity/SignUpActivity.java @@ -53,7 +53,6 @@ import retrofit2.Callback; import retrofit2.Response; public class SignUpActivity extends AppCompatActivity { - public static final String VALID_EMAIL_ADDRESS_REGEX = "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$"; public static final String FORMAT_DATE="dd/MM/yyyy"; TextInputLayout textInput_password, textInput_phone, textInput_email, textInput_address, textInput_confirmPassword, textInput_fullName, textInput_birthDay; @@ -169,7 +168,7 @@ public class SignUpActivity extends AppCompatActivity { getDataFromForm(); //Check email valid - Pattern patternEmail = Pattern.compile(VALID_EMAIL_ADDRESS_REGEX, Pattern.CASE_INSENSITIVE); + Pattern patternEmail = Pattern.compile(Common.VALID_EMAIL_ADDRESS_REGEX, Pattern.CASE_INSENSITIVE); Matcher matcherEmail = patternEmail.matcher(email); if(!matcherEmail.matches()){ textInput_email.setError("Địa chỉ email không đúng định dạng. Xin vui lòng kiểm tra lại!"); @@ -310,6 +309,7 @@ public class SignUpActivity extends AppCompatActivity { intent.putExtra("phone", edt_phone.getText().toString()); intent.putExtra("verificationId", verificationId); intent.putExtra("token", forceResendingToken); + intent.putExtra("password", password); startActivity(intent); finish(); } diff --git a/app/src/main/java/com/capstone/foodify/Activity/VerifyAccountActivity.java b/app/src/main/java/com/capstone/foodify/Activity/VerifyAccountActivity.java index 4554982..1b8cb96 100644 --- a/app/src/main/java/com/capstone/foodify/Activity/VerifyAccountActivity.java +++ b/app/src/main/java/com/capstone/foodify/Activity/VerifyAccountActivity.java @@ -44,10 +44,11 @@ public class VerifyAccountActivity extends AppCompatActivity { private EditText inputCode1, inputCode2, inputCode3, inputCode4, inputCode5, inputCode6; ImageView close_image; MaterialButton confirm_code; - String verificationId, phone = null; + String verificationId, phone, password = null; ConstraintLayout progressLayout; TextView resendCodeText, resendCodeTextButton, countDown, errorText; User user; + FirebaseAuth mAuth; @Override protected void onCreate(Bundle savedInstanceState) { @@ -61,8 +62,12 @@ public class VerifyAccountActivity extends AppCompatActivity { verificationId = getIntent().getStringExtra("verificationId"); phone = getIntent().getStringExtra("phone"); user = (User) getIntent().getSerializableExtra("user"); + password = getIntent().getStringExtra("password"); } + //Init firebase auth + mAuth = FirebaseAuth.getInstance(); + //Init text changedListener textChangedListenerEditTextOTP(); @@ -166,7 +171,7 @@ public class VerifyAccountActivity extends AppCompatActivity { inputCode4.getText().toString() + inputCode5.getText().toString() + inputCode6.getText().toString(); - if(verificationId != null) { + if(verificationId != null && user != null && password != null) { //Show progress bar progressLayout.setVisibility(View.VISIBLE); @@ -174,34 +179,41 @@ public class VerifyAccountActivity extends AppCompatActivity { verificationId, code ); - FirebaseAuth.getInstance().signInWithCredential(phoneAuthCredential) - .addOnCompleteListener(new OnCompleteListener() { - @Override - public void onComplete(@NonNull Task task) { - //Dismiss progress layout - progressLayout.setVisibility(View.GONE); - if(task.isSuccessful()) { + if(phoneAuthCredential.getSmsCode().equals(code)){ + //Create user account + mAuth.createUserWithEmailAndPassword(user.getEmail(), password) + .addOnCompleteListener(this, new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if(task.isSuccessful()){ + //Add information user to server + FoodApi.apiService.register(user).enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { - //Add information user to server - FoodApi.apiService.register(user).enqueue(new Callback() { - @Override - public void onResponse(Call call, Response response) { - //Create user success; - Toast.makeText(VerifyAccountActivity.this, "Tạo tài khoản thành công!", Toast.LENGTH_SHORT).show(); - startActivity(new Intent(VerifyAccountActivity.this, SignInActivity.class)); - } + progressLayout.setVisibility(View.GONE); + //Create user success; + Toast.makeText(VerifyAccountActivity.this, "Tạo tài khoản thành công!", Toast.LENGTH_SHORT).show(); + startActivity(new Intent(VerifyAccountActivity.this, SignInActivity.class)); + } - @Override - public void onFailure(Call call, Throwable t) { - Common.showErrorServerNotification(VerifyAccountActivity.this); - } - }); - } else { - Toast.makeText(VerifyAccountActivity.this, "Mã code không đúng. Vui lòng kiểm tra lại!", Toast.LENGTH_SHORT).show(); + @Override + public void onFailure(Call call, Throwable t) { + progressLayout.setVisibility(View.GONE); + showErrorText(t.toString()); + Common.showErrorServerNotification(VerifyAccountActivity.this); + } + }); + } else { + progressLayout.setVisibility(View.GONE); + Common.showErrorServerNotification(VerifyAccountActivity.this); + } } - } - }); + }); + } + + } } diff --git a/app/src/main/java/com/capstone/foodify/Common.java b/app/src/main/java/com/capstone/foodify/Common.java index 3a9b94e..43b1113 100644 --- a/app/src/main/java/com/capstone/foodify/Common.java +++ b/app/src/main/java/com/capstone/foodify/Common.java @@ -28,6 +28,7 @@ import java.util.List; import java.util.Locale; public class Common { + public static final String VALID_EMAIL_ADDRESS_REGEX = "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$"; public static final String PHONE_CODE = "+84"; public static final String PASSWORD_PATTERN = "^(?=.*[0-9])(?=.*[A-Z])(?=.*[@#$%^&+=!_])(?=\\S+$).{4,}$"; public static final String PHONE_PATTERN = "^0[98753]{1}\\d{8}$"; diff --git a/app/src/main/res/layout/activity_sign_in.xml b/app/src/main/res/layout/activity_sign_in.xml index 8b38de8..6624ea4 100644 --- a/app/src/main/res/layout/activity_sign_in.xml +++ b/app/src/main/res/layout/activity_sign_in.xml @@ -40,14 +40,14 @@ app:layout_constraintTop_toBottomOf="@+id/textView" /> + android:inputType="textEmailAddress" /> @@ -73,7 +73,7 @@ app:boxBackgroundColor="@color/white" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/textInput_phone" + app:layout_constraintTop_toBottomOf="@+id/textInput_email" app:passwordToggleEnabled="true" app:passwordToggleTint="@color/primaryColor" app:startIconDrawable="@drawable/baseline_vpn_key_24"