mirror of
https://github.com/Nezumi-2711/PRM392.git
synced 2026-09-22 13:48:29 +00:00
Update function
This commit is contained in:
@@ -10,7 +10,7 @@ android {
|
|||||||
minSdk 23
|
minSdk 23
|
||||||
targetSdk 30
|
targetSdk 30
|
||||||
versionCode 1
|
versionCode 1
|
||||||
versionName "79.0"
|
versionName "80.0"
|
||||||
|
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,13 +60,17 @@
|
|||||||
android:exported="false" />
|
android:exported="false" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".ChangePassword"
|
android:name=".ChangePassword"
|
||||||
android:exported="false" />
|
android:exported="false"
|
||||||
|
android:theme="@style/Theme.Foodify.NoActionBar"
|
||||||
|
/>
|
||||||
<activity
|
<activity
|
||||||
android:name=".ForgotPassword"
|
android:name=".ForgotPassword"
|
||||||
android:exported="false" />
|
android:exported="false"
|
||||||
|
android:theme="@style/Theme.Foodify.NoActionBar"/>
|
||||||
<activity
|
<activity
|
||||||
android:name=".VerifyPhone"
|
android:name=".VerifyPhone"
|
||||||
android:exported="false" />
|
android:exported="false"
|
||||||
|
android:theme="@style/Theme.Foodify.NoActionBar"/>
|
||||||
<activity
|
<activity
|
||||||
android:name=".OrderStatus"
|
android:name=".OrderStatus"
|
||||||
android:exported="false" />
|
android:exported="false" />
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import androidx.appcompat.app.AppCompatActivity;
|
|||||||
|
|
||||||
import com.google.firebase.database.DatabaseReference;
|
import com.google.firebase.database.DatabaseReference;
|
||||||
import com.google.firebase.database.FirebaseDatabase;
|
import com.google.firebase.database.FirebaseDatabase;
|
||||||
|
import com.waterbase.foodify.Common.Common;
|
||||||
import com.waterbase.foodify.Model.User;
|
import com.waterbase.foodify.Model.User;
|
||||||
|
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
@@ -58,7 +59,7 @@ public class ChangePassword extends AppCompatActivity {
|
|||||||
|
|
||||||
//Check same password
|
//Check same password
|
||||||
if (edtPassword.getText().toString().equals(edtPasswordVerify.getText().toString())) {
|
if (edtPassword.getText().toString().equals(edtPasswordVerify.getText().toString())) {
|
||||||
table_user.child(phone).child("password").setValue(edtPasswordVerify.getText().toString());
|
table_user.child(phone).child("password").setValue(Common.encryptPassword(edtPasswordVerify.getText().toString()));
|
||||||
Toast.makeText(ChangePassword.this, "Đổi mật khẩu thành công. Vui lòng đăng nhập lại để tiếp tục!", Toast.LENGTH_SHORT).show();
|
Toast.makeText(ChangePassword.this, "Đổi mật khẩu thành công. Vui lòng đăng nhập lại để tiếp tục!", Toast.LENGTH_SHORT).show();
|
||||||
startActivity(new Intent(ChangePassword.this, SignIn.class));
|
startActivity(new Intent(ChangePassword.this, SignIn.class));
|
||||||
finish();
|
finish();
|
||||||
|
|||||||
@@ -11,6 +11,9 @@ import com.waterbase.foodify.Remote.APIService;
|
|||||||
import com.waterbase.foodify.Remote.IGoogleService;
|
import com.waterbase.foodify.Remote.IGoogleService;
|
||||||
import com.waterbase.foodify.Remote.RetrofitClient;
|
import com.waterbase.foodify.Remote.RetrofitClient;
|
||||||
|
|
||||||
|
import java.math.BigInteger;
|
||||||
|
import java.security.MessageDigest;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
@@ -82,4 +85,36 @@ public class Common {
|
|||||||
DateFormat.format("dd-MM-yyyy HH:mm", calendar).toString());
|
DateFormat.format("dd-MM-yyyy HH:mm", calendar).toString());
|
||||||
return date.toString();
|
return date.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String encryptPassword(String input)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
// getInstance() method is called with algorithm SHA-1
|
||||||
|
MessageDigest md = MessageDigest.getInstance("SHA-1");
|
||||||
|
|
||||||
|
// digest() method is called
|
||||||
|
// to calculate message digest of the input string
|
||||||
|
// returned as array of byte
|
||||||
|
byte[] messageDigest = md.digest(input.getBytes());
|
||||||
|
|
||||||
|
// Convert byte array into signum representation
|
||||||
|
BigInteger no = new BigInteger(1, messageDigest);
|
||||||
|
|
||||||
|
// Convert message digest into hex value
|
||||||
|
String hashtext = no.toString(16);
|
||||||
|
|
||||||
|
// Add preceding 0s to make it 32 bit
|
||||||
|
while (hashtext.length() < 32) {
|
||||||
|
hashtext = "0" + hashtext;
|
||||||
|
}
|
||||||
|
|
||||||
|
// return the HashText
|
||||||
|
return hashtext;
|
||||||
|
}
|
||||||
|
|
||||||
|
// For specifying wrong message digest algorithms
|
||||||
|
catch (NoSuchAlgorithmException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,6 +73,8 @@ import io.paperdb.Paper;
|
|||||||
|
|
||||||
public class Home extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
|
public class Home extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
|
||||||
|
|
||||||
|
private long backPressedTime;
|
||||||
|
|
||||||
String versionNameApp = BuildConfig.VERSION_NAME;
|
String versionNameApp = BuildConfig.VERSION_NAME;
|
||||||
|
|
||||||
FirebaseDatabase database;
|
FirebaseDatabase database;
|
||||||
@@ -471,7 +473,7 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati
|
|||||||
//Write value
|
//Write value
|
||||||
Paper.book().write("sub_new", "true");
|
Paper.book().write("sub_new", "true");
|
||||||
if(!NotificationManagerCompat.from(Home.this).areNotificationsEnabled()){
|
if(!NotificationManagerCompat.from(Home.this).areNotificationsEnabled()){
|
||||||
showNotificationAlertDialog("Oops, máy bạn chưa được bật thông báo! Bạn có muốn bật để nhận thông báo từ hệ thống báo không?");
|
showNotificationAlertDialog("Oops, máy bạn chưa được cấp quyền thông báo! Bạn có muốn bật để nhận thông báo từ hệ thống không?");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
FirebaseMessaging.getInstance().unsubscribeFromTopic(Common.topicName);
|
FirebaseMessaging.getInstance().unsubscribeFromTopic(Common.topicName);
|
||||||
@@ -622,4 +624,17 @@ public class Home extends AppCompatActivity implements NavigationView.OnNavigati
|
|||||||
|
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBackPressed() {
|
||||||
|
if(backPressedTime + 2000 > System.currentTimeMillis()) {
|
||||||
|
super.onBackPressed();
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
Toast.makeText(this, "Nhấn BACK 1 lần nữa để thoát!", Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
|
||||||
|
backPressedTime = System.currentTimeMillis();
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -58,7 +58,7 @@ public class SignIn extends AppCompatActivity {
|
|||||||
//Save user& password
|
//Save user& password
|
||||||
if(ckbRemember.isChecked()) {
|
if(ckbRemember.isChecked()) {
|
||||||
Paper.book().write(Common.USER_KEY, edtPhone.getText().toString());
|
Paper.book().write(Common.USER_KEY, edtPhone.getText().toString());
|
||||||
Paper.book().write(Common.PWD_KEY, edtPassword.getText().toString());
|
Paper.book().write(Common.PWD_KEY, Common.encryptPassword(edtPassword.getText().toString()));
|
||||||
}
|
}
|
||||||
final ProgressDialog mDialog = new ProgressDialog(SignIn.this);
|
final ProgressDialog mDialog = new ProgressDialog(SignIn.this);
|
||||||
mDialog.setMessage("Xin vui lòng chờ...");
|
mDialog.setMessage("Xin vui lòng chờ...");
|
||||||
@@ -77,7 +77,7 @@ public class SignIn extends AppCompatActivity {
|
|||||||
mDialog.dismiss();
|
mDialog.dismiss();
|
||||||
User user = dataSnapshot.child(edtPhone.getText().toString()).getValue(User.class);
|
User user = dataSnapshot.child(edtPhone.getText().toString()).getValue(User.class);
|
||||||
user.setPhone(edtPhone.getText().toString());
|
user.setPhone(edtPhone.getText().toString());
|
||||||
if (user.getPassword().equals(edtPassword.getText().toString())) {
|
if (user.getPassword().equals(Common.encryptPassword(edtPassword.getText().toString()))) {
|
||||||
Intent homeIntent = new Intent(SignIn.this, Home.class);
|
Intent homeIntent = new Intent(SignIn.this, Home.class);
|
||||||
Common.currentUser = user;
|
Common.currentUser = user;
|
||||||
startActivity(homeIntent);
|
startActivity(homeIntent);
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ public class SignUp extends AppCompatActivity {
|
|||||||
public void onCodeSent(String verificationId, PhoneAuthProvider.ForceResendingToken forceResendingToken) {
|
public void onCodeSent(String verificationId, PhoneAuthProvider.ForceResendingToken forceResendingToken) {
|
||||||
progressBar.setVisibility(View.GONE);
|
progressBar.setVisibility(View.GONE);
|
||||||
btnSignUp.setVisibility(View.VISIBLE);
|
btnSignUp.setVisibility(View.VISIBLE);
|
||||||
User user = new User(edtName.getText().toString(), edtPassword.getText().toString());
|
User user = new User(edtName.getText().toString(), Common.encryptPassword(edtPassword.getText().toString()));
|
||||||
Intent intent = new Intent(SignUp.this, VerifyPhone.class);
|
Intent intent = new Intent(SignUp.this, VerifyPhone.class);
|
||||||
intent.putExtra("user", user);
|
intent.putExtra("user", user);
|
||||||
intent.putExtra("phone", edtPhone.getText().toString());
|
intent.putExtra("phone", edtPhone.getText().toString());
|
||||||
|
|||||||
@@ -133,6 +133,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="Chưa có tài khoản Foodify?"
|
android:text="Chưa có tài khoản Foodify?"
|
||||||
|
android:layout_marginRight="4dp"
|
||||||
android:fontFamily="@font/regular"
|
android:fontFamily="@font/regular"
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
android:textColor="#FBFBFB"
|
android:textColor="#FBFBFB"
|
||||||
|
|||||||
@@ -155,27 +155,29 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="Đã tạo tài khoản?"
|
android:text="Đã tạo tài khoản?"
|
||||||
|
android:layout_marginRight="4dp"
|
||||||
android:fontFamily="@font/regular"
|
android:fontFamily="@font/regular"
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
|
android:gravity="center"
|
||||||
android:textColor="#FBFBFB"
|
android:textColor="#FBFBFB"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toStartOf="@+id/txtSignIn"
|
||||||
app:layout_constraintHorizontal_bias=".3"
|
app:layout_constraintHorizontal_chainStyle="packed"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/frameLayout" />
|
app:layout_constraintTop_toBottomOf="@+id/frameLayout" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
android:id="@+id/txtSignIn"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginLeft="5dp"
|
|
||||||
android:text="Đăng nhập tại đây!"
|
android:text="Đăng nhập tại đây!"
|
||||||
|
android:gravity="center"
|
||||||
android:fontFamily="@font/bold"
|
android:fontFamily="@font/bold"
|
||||||
android:onClick="login"
|
android:onClick="login"
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
android:textColor="@color/purple_500"
|
android:textColor="@color/purple_500"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintHorizontal_bias="0"
|
|
||||||
app:layout_constraintStart_toEndOf="@+id/textView"
|
app:layout_constraintStart_toEndOf="@+id/textView"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/frameLayout" />
|
app:layout_constraintTop_toBottomOf="@+id/frameLayout" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
@@ -1,16 +1,58 @@
|
|||||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||||
<!-- Base application theme. -->
|
<!-- Base application theme. -->
|
||||||
<style name="Theme.Foodify" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
|
<style name="Theme.Foodify" parent="Theme.MaterialComponents.Light.DarkActionBar">
|
||||||
<!-- Primary brand color. -->
|
<!-- Primary brand color. -->
|
||||||
<item name="colorPrimary">@color/purple_200</item>
|
<item name="colorPrimary">@color/purple_500</item>
|
||||||
<item name="colorPrimaryVariant">@color/purple_700</item>
|
<item name="colorPrimaryVariant">@color/purple_700</item>
|
||||||
<item name="colorOnPrimary">@color/black</item>
|
<item name="colorOnPrimary">@color/white</item>
|
||||||
<!-- Secondary brand color. -->
|
<!-- Secondary brand color. -->
|
||||||
<item name="colorSecondary">@color/teal_200</item>
|
<item name="colorSecondary">@color/teal_200</item>
|
||||||
<item name="colorSecondaryVariant">@color/teal_200</item>
|
<item name="colorSecondaryVariant">@color/teal_700</item>
|
||||||
<item name="colorOnSecondary">@color/black</item>
|
<item name="colorOnSecondary">@color/black</item>
|
||||||
<!-- Status bar color. -->
|
<!-- Status bar color. -->
|
||||||
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
|
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
|
||||||
<!-- Customize your theme here. -->
|
<!-- Customize your theme here. -->
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style name="Theme.Foodify.NoActionBar">
|
||||||
|
<item name="windowActionBar">false</item>
|
||||||
|
<item name="windowNoTitle">true</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Theme.Foodify.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
|
||||||
|
|
||||||
|
<style name="Theme.Foodify.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
|
||||||
|
|
||||||
|
<style name="CollapsedAppbar" parent="@android:style/TextAppearance.Medium">
|
||||||
|
<item name="android:textSize">24sp</item>
|
||||||
|
<item name="android:textColor">@android:color/white</item>
|
||||||
|
<item name="android:textStyle">normal</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="ExpandedAppbar" parent="@android:style/TextAppearance.Material.Title">
|
||||||
|
<item name="android:textColor">@color/purple_500</item>
|
||||||
|
<item name="android:textStyle">normal</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!--Rating Dialog -->
|
||||||
|
<style name="RatingDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
|
||||||
|
<item name="background">@android:color/white</item>
|
||||||
|
<item name="android:buttonBarPositiveButtonStyle">@style/RatingDialogButtonStyle</item>
|
||||||
|
<item name="android:buttonBarNegativeButtonStyle">@style/RatingDialogButtonStyle</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="RatingDialogButtonStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog">
|
||||||
|
<item name="android:textColor">@color/colorAccent</item>
|
||||||
|
<item name="android:textSize">@dimen/text_size_medium</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="RatingDialogFadeAnim">
|
||||||
|
<item name="android:windowEnterAnimation">@android:anim/fade_in</item>
|
||||||
|
<item name="android:windowExitAnimation">@android:anim/fade_out</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="fontTextViewStyle" parent="android:Widget.TextView">
|
||||||
|
<item name="android:fontFamily">@fonts/</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||||
<!-- Base application theme. -->
|
<!-- Base application theme. -->
|
||||||
<style name="Theme.Foodify" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
|
<style name="Theme.Foodify" parent="Theme.MaterialComponents.Light.DarkActionBar">
|
||||||
<!-- Primary brand color. -->
|
<!-- Primary brand color. -->
|
||||||
<item name="colorPrimary">@color/purple_500</item>
|
<item name="colorPrimary">@color/purple_500</item>
|
||||||
<item name="colorPrimaryVariant">@color/purple_700</item>
|
<item name="colorPrimaryVariant">@color/purple_700</item>
|
||||||
|
|||||||
Reference in New Issue
Block a user