diff --git a/Foodify/app/build.gradle b/Foodify/app/build.gradle index 452cce4..3e7c351 100644 --- a/Foodify/app/build.gradle +++ b/Foodify/app/build.gradle @@ -10,7 +10,7 @@ android { minSdk 23 targetSdk 30 versionCode 1 - versionName "70.0" + versionName "71.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/Cart.java b/Foodify/app/src/main/java/com/waterbase/foodify/Cart.java index 409a072..36d0cc6 100644 --- a/Foodify/app/src/main/java/com/waterbase/foodify/Cart.java +++ b/Foodify/app/src/main/java/com/waterbase/foodify/Cart.java @@ -240,7 +240,9 @@ public class Cart extends AppCompatActivity implements RecyclerItemTouchHelperLi if (isChecked) { if (!TextUtils.isEmpty(Common.currentUser.getHomeAddress()) || Common.currentUser.getHomeAddress() != null) { edtAddress.setText(Common.currentUser.getHomeAddress()); + edtAddress.setEnabled(false); } else + edtAddress.setEnabled(false); Toast.makeText(Cart.this, "Vui lòng điền địa chỉ mặc định của bạn!", Toast.LENGTH_SHORT).show(); } @@ -251,7 +253,11 @@ public class Cart extends AppCompatActivity implements RecyclerItemTouchHelperLi @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) + { edtAddress.setText(""); + edtAddress.setEnabled(true); + } + } }); @@ -275,6 +281,7 @@ public class Cart extends AppCompatActivity implements RecyclerItemTouchHelperLi address = firstObject.getString("formatted_address"); edtAddress.setText(address); + edtAddress.setEnabled(false); } catch (JSONException e) { e.printStackTrace(); } diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/Home.java b/Foodify/app/src/main/java/com/waterbase/foodify/Home.java index a1bfd77..d13828d 100644 --- a/Foodify/app/src/main/java/com/waterbase/foodify/Home.java +++ b/Foodify/app/src/main/java/com/waterbase/foodify/Home.java @@ -1,10 +1,13 @@ package com.waterbase.foodify; +import android.app.NotificationManager; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Typeface; +import android.net.Uri; import android.os.Bundle; +import android.provider.Settings; import android.text.Spannable; import android.text.SpannableString; import android.text.TextUtils; @@ -16,6 +19,7 @@ import android.view.View; import android.view.ViewGroup; import android.view.animation.AnimationUtils; import android.view.animation.LayoutAnimationController; +import android.widget.Button; import android.widget.CheckBox; import android.widget.TextView; import android.widget.Toast; @@ -25,6 +29,7 @@ import androidx.appcompat.app.ActionBarDrawerToggle; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; +import androidx.core.app.NotificationManagerCompat; import androidx.core.view.GravityCompat; import androidx.drawerlayout.widget.DrawerLayout; import androidx.recyclerview.widget.GridLayoutManager; @@ -61,6 +66,8 @@ import com.waterbase.foodify.ViewHolder.MenuViewHolder; import java.util.HashMap; import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import dmax.dialog.SpotsDialog; import io.github.inflationx.calligraphy3.CalligraphyConfig; @@ -75,6 +82,8 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati FirebaseDatabase database; DatabaseReference category; + final String PASSWORD_PATTERN = "^(?=.*[0-9])(?=.*[A-Z])(?=.*[@#$%^&+=!_])(?=\\S+$).{4,}$"; + RecyclerView recyler_menu; FirebaseRecyclerAdapter adapter; @@ -148,7 +157,7 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati //Set font to navigation Menu m = navigationView.getMenu(); - for (int i=0;i= 8) { + //Check old password + if (edtPassword.getText().toString().equals(Common.currentUser.getPassword())) { - //Check new password and repeat password - if(edtNewPassword.getText().toString().equals(edtRepeatPassword.getText().toString())){ - Map passwordUpdate = new HashMap<>(); - passwordUpdate.put("password", edtNewPassword.getText().toString()); + //Check new password and repeat password + if (edtNewPassword.getText().toString().equals(edtRepeatPassword.getText().toString())) { + Map passwordUpdate = new HashMap<>(); + passwordUpdate.put("password", edtNewPassword.getText().toString()); - //Make update - DatabaseReference user = FirebaseDatabase.getInstance().getReference("User"); - user.child(Common.currentUser.getPhone()) - .updateChildren(passwordUpdate) - .addOnCompleteListener(new OnCompleteListener() { - @Override - public void onComplete(@NonNull Task task) { + //Make update + DatabaseReference user = FirebaseDatabase.getInstance().getReference("User"); + user.child(Common.currentUser.getPhone()) + .updateChildren(passwordUpdate) + .addOnCompleteListener(new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + waitingDialog.dismiss(); + Common.currentUser.setPassword(edtNewPassword.getText().toString()); + Toast.makeText(Home.this, "Mật khẩu đã được cập nhật!", Toast.LENGTH_SHORT).show(); + d.dismiss(); + } + }) + .addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception e) { + Toast.makeText(Home.this, "Đã xảy ra lỗi hệ thống: " + e.getMessage(), Toast.LENGTH_SHORT).show(); + } + }); + } else { waitingDialog.dismiss(); - Toast.makeText(Home.this, "Mật khẩu đã được cập nhật!", Toast.LENGTH_SHORT).show(); + edtRepeatPassword.setError("Mật khẩu chưa khớp! Vui lòng thử lại!"); } - }) - .addOnFailureListener(new OnFailureListener() { - @Override - public void onFailure(@NonNull Exception e) { - Toast.makeText(Home.this, "Đã xảy ra lỗi hệ thống: " + e.getMessage(), Toast.LENGTH_SHORT).show(); - } - }); - } else { - waitingDialog.dismiss(); - Toast.makeText(Home.this, "Mật khẩu chưa khớp! Vui lòng thử lại!", Toast.LENGTH_SHORT).show(); + } else { + waitingDialog.dismiss(); + edtPassword.setError("Sai mật khẩu, vui lòng thử lại!"); + } + } else { + waitingDialog.dismiss(); + Toast.makeText(Home.this, "Mật khẩu của bạn cần tối thiểu có 8 ký tự, 1 ký tự viết hoa, 1 số và 1 ký tự đặc biệt!", Toast.LENGTH_LONG).show(); + } + } else { + waitingDialog.dismiss(); + if(TextUtils.isEmpty(edtPassword.getText().toString())){ + edtPassword.setError("Vui lòng điền vào trường này!"); + } else if(TextUtils.isEmpty(edtNewPassword.getText().toString())){ + edtNewPassword.setError("Vui lòng điền vào trường này!"); + } else if(TextUtils.isEmpty(edtRepeatPassword.getText().toString())){ + edtRepeatPassword.setError("Vui lòng điền vào trường này!"); + } + } } - } else { - waitingDialog.dismiss(); - Toast.makeText(Home.this, "Sai mật khẩu! Vui lòng thử lại!", Toast.LENGTH_SHORT).show(); - } + }); } }); - - AlertDialog dialog = alertDialog.create(); - dialog.show(); + d.show(); } @Override @@ -508,7 +590,7 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { - if(item.getItemId() == R.id.menu_search) + if (item.getItemId() == R.id.menu_search) startActivity(new Intent(Home.this, SearchActivity.class)); return super.onOptionsItemSelected(item); diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/SignUp.java b/Foodify/app/src/main/java/com/waterbase/foodify/SignUp.java index 11b81ea..c88d3cd 100644 --- a/Foodify/app/src/main/java/com/waterbase/foodify/SignUp.java +++ b/Foodify/app/src/main/java/com/waterbase/foodify/SignUp.java @@ -42,7 +42,7 @@ public class SignUp extends AppCompatActivity { Button btnSignUp; TextView txtAppName; - final String PASSWORD_PATTERN = "^(?=.*[0-9])(?=.*[A-Z])(?=.*[@#$%^&+=!])(?=\\S+$).{4,}$"; + final String PASSWORD_PATTERN = "^(?=.*[0-9])(?=.*[A-Z])(?=.*[@#$%^&+=!_])(?=\\S+$).{4,}$"; final String PHONE_PATTERN = "^0[98753]{1}\\d{8}$"; diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/Welcome.java b/Foodify/app/src/main/java/com/waterbase/foodify/Welcome.java index 19ac6f4..114d392 100644 --- a/Foodify/app/src/main/java/com/waterbase/foodify/Welcome.java +++ b/Foodify/app/src/main/java/com/waterbase/foodify/Welcome.java @@ -100,17 +100,16 @@ public class Welcome extends AppCompatActivity { startActivity(homeIntent); finish(); } else { - Toast.makeText(Welcome.this, "Số điện thoại hoặc mật khẩu không đúng. Xin vui lòng thử lại!", Toast.LENGTH_SHORT).show(); + Paper.book().destroy(); } } else { mDialog.dismiss(); - Toast.makeText(Welcome.this, "Số điện thoại chưa được đăng ký. Vui lòng đăng ký để sử dụng!", Toast.LENGTH_SHORT).show(); + Paper.book().destroy(); } } @Override public void onCancelled(DatabaseError databaseError) { - } }); } else { diff --git a/Foodify/app/src/main/res/layout/activity_sign_in.xml b/Foodify/app/src/main/res/layout/activity_sign_in.xml index ff2f726..ac0728b 100644 --- a/Foodify/app/src/main/res/layout/activity_sign_in.xml +++ b/Foodify/app/src/main/res/layout/activity_sign_in.xml @@ -136,24 +136,25 @@ android:fontFamily="@font/regular" android:textAlignment="center" android:textColor="#FBFBFB" + android:gravity="center" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias=".3" + app:layout_constraintHorizontal_chainStyle="packed" + app:layout_constraintEnd_toStartOf="@+id/textViewB" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/btnSignIn" /> diff --git a/FoodifyServer/app/build.gradle b/FoodifyServer/app/build.gradle index 46ab543..4884caf 100644 --- a/FoodifyServer/app/build.gradle +++ b/FoodifyServer/app/build.gradle @@ -11,7 +11,7 @@ android { minSdk 23 targetSdk 30 versionCode 1 - versionName "1.0" + versionName "71.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" }