diff --git a/aestheticdialogs/src/main/res/layout/dialog_flat.xml b/aestheticdialogs/src/main/res/layout/dialog_flat.xml index 9033a31..029e9e7 100644 --- a/aestheticdialogs/src/main/res/layout/dialog_flat.xml +++ b/aestheticdialogs/src/main/res/layout/dialog_flat.xml @@ -26,7 +26,7 @@ android:layout_height="120dp" app:srcCompat="@drawable/ic_info_blue_24dp" android:layout_marginBottom="10dp" - android:layout_marginTop="10dp"/> + android:layout_marginTop="5dp"/> + android:text="An error occured on remote service, please try again later" + android:textSize="13sp" + /> diff --git a/app/release/app-release.apk b/app/release/foodify.apk similarity index 75% rename from app/release/app-release.apk rename to app/release/foodify.apk index 14f16ac..8e14d86 100644 Binary files a/app/release/app-release.apk and b/app/release/foodify.apk differ diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index beadcf3..5cb0642 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -12,7 +12,7 @@ "filters": [], "attributes": [], "versionCode": 1, - "versionName": "1.0.0-beta", + "versionName": "1.0.0", "outputFile": "app-release.apk" } ], diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 12d0525..04ba6f6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -79,7 +79,8 @@ + android:screenOrientation="portrait" + /> call, Response response) { - CustomResponse responseData = response.body(); - if(response.code() == 200){ Toast.makeText(AddressManagerActivity.this, "Đã thêm địa chỉ thành công!", Toast.LENGTH_SHORT).show(); diff --git a/app/src/main/java/com/capstone/foodify/Activity/FavoriteFoodActivity.java b/app/src/main/java/com/capstone/foodify/Activity/FavoriteFoodActivity.java index 1e45368..99e1d71 100644 --- a/app/src/main/java/com/capstone/foodify/Activity/FavoriteFoodActivity.java +++ b/app/src/main/java/com/capstone/foodify/Activity/FavoriteFoodActivity.java @@ -120,6 +120,7 @@ public class FavoriteFoodActivity extends AppCompatActivity implements ItemTouch listFavoriteFoodView = findViewById(R.id.list_favorite_food_view); //Get list favorite food + CURRENT_PAGE = 0; getListFavoriteFood(CURRENT_PAGE); //Set layout recyclerview @@ -212,8 +213,8 @@ public class FavoriteFoodActivity extends AppCompatActivity implements ItemTouch } //Show notification food has been delete - Snackbar snackbar = Snackbar.make(listFavoriteFoodView, foodNameDelete + " remove!", Snackbar.LENGTH_LONG); - snackbar.setAction("Undo", new View.OnClickListener() { + Snackbar snackbar = Snackbar.make(listFavoriteFoodView, "Đã xoá " + foodNameDelete + " khỏi danh sách yêu thích!", Snackbar.LENGTH_LONG); + snackbar.setAction("Hoàn tác", new View.OnClickListener() { @Override public void onClick(View view) { adapter.undoItem(foodDelete, indexDelete, FavoriteFoodActivity.this); diff --git a/app/src/main/java/com/capstone/foodify/Activity/MainActivity.java b/app/src/main/java/com/capstone/foodify/Activity/MainActivity.java index b5a5c43..7726502 100644 --- a/app/src/main/java/com/capstone/foodify/Activity/MainActivity.java +++ b/app/src/main/java/com/capstone/foodify/Activity/MainActivity.java @@ -559,14 +559,20 @@ public class MainActivity extends AppCompatActivity { public static List POWER_MANAGER_INTENTS = Arrays.asList( new Intent().setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity")), new Intent().setComponent(new ComponentName("com.letv.android.letvsafe", "com.letv.android.letvsafe.AutobootManageActivity")), + new Intent().setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity")), new Intent().setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity")), + new Intent().setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.appcontrol.activity.StartupAppControlActivity")), new Intent().setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.permission.startup.StartupAppListActivity")), new Intent().setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.startupapp.StartupAppListActivity")), new Intent().setComponent(new ComponentName("com.oppo.safe", "com.oppo.safe.permission.startup.StartupAppListActivity")), new Intent().setComponent(new ComponentName("com.iqoo.secure", "com.iqoo.secure.ui.phoneoptimize.AddWhiteListActivity")), new Intent().setComponent(new ComponentName("com.iqoo.secure", "com.iqoo.secure.ui.phoneoptimize.BgStartUpManager")), new Intent().setComponent(new ComponentName("com.vivo.permissionmanager", "com.vivo.permissionmanager.activity.BgStartUpManagerActivity")), - new Intent().setComponent(new ComponentName("com.asus.mobilemanager", "com.asus.mobilemanager.entry.FunctionActivity")).setData(android.net.Uri.parse("mobilemanager://function/entry/AutoStart")) + new Intent().setComponent(new ComponentName("com.samsung.android.lool", "com.samsung.android.sm.battery.ui.BatteryActivity")), + new Intent().setComponent(new ComponentName("com.samsung.android.lool", "com.samsung.android.sm.ui.battery.BatteryActivity")), + new Intent().setComponent(new ComponentName("com.htc.pitroad", "com.htc.pitroad.landingpage.activity.LandingPageActivity")), + new Intent().setComponent(new ComponentName("com.asus.mobilemanager", "com.asus.mobilemanager.MainActivity")), + new Intent().setComponent(new ComponentName("com.transsion.phonemanager", "com.itel.autobootmanager.activity.AutoBootMgrActivity")) ); diff --git a/app/src/main/java/com/capstone/foodify/Activity/OrderActivity.java b/app/src/main/java/com/capstone/foodify/Activity/OrderActivity.java index 936ffc0..248f902 100644 --- a/app/src/main/java/com/capstone/foodify/Activity/OrderActivity.java +++ b/app/src/main/java/com/capstone/foodify/Activity/OrderActivity.java @@ -63,6 +63,8 @@ public class OrderActivity extends AppCompatActivity { viewPagerAdapter = new ViewPagerAdapter(this); viewPager2.setAdapter(viewPagerAdapter); + viewPager2.setUserInputEnabled(false); + orderActivity = this; tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 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 68013a5..eb0bf7c 100644 --- a/app/src/main/java/com/capstone/foodify/Activity/SignInActivity.java +++ b/app/src/main/java/com/capstone/foodify/Activity/SignInActivity.java @@ -54,15 +54,18 @@ public class SignInActivity extends AppCompatActivity { private String email, password = null; private TextView txt_countdown, txt_verify_email; private LinearLayout countdown_layout; + private boolean isCounting = false; private final CountDownTimer count = new CountDownTimer(60000, 1000) { @Override public void onTick(long millisUntilFinished) { + isCounting = true; txt_countdown.setText(millisUntilFinished / 1000 + " giây"); } @Override public void onFinish() { + isCounting = false; countdown_layout.setVisibility(View.GONE); txt_verify_email.setVisibility(View.VISIBLE); @@ -275,27 +278,44 @@ public class SignInActivity extends AppCompatActivity { } else { //Email user not verify - //Count down resend code - countdown_layout.setVisibility(View.VISIBLE); - count.start(); - //Send email verify - user.sendEmailVerification(); + if(!isCounting){ - txt_verify_email.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - //When user click on the text + //UI + txt_verify_email.setVisibility(View.GONE); + countdown_layout.setVisibility(View.VISIBLE); - //Count down resend code - countdown_layout.setVisibility(View.VISIBLE); - count.start(); + //Count down resend code + count.start(); + //Send email verify + user.sendEmailVerification(); - //Send email verify - user.sendEmailVerification(); + txt_verify_email.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //When user click on the text - txt_verify_email.setVisibility(View.GONE); - } - }); + //Count down resend code + countdown_layout.setVisibility(View.VISIBLE); + count.start(); + + //Send email verify + user.sendEmailVerification().addOnCompleteListener(new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if(task.isSuccessful()){ + //Send email success + Toast.makeText(SignInActivity.this, "Đã gửi email thành công!", Toast.LENGTH_SHORT).show(); + } else { + //Send email failed + Toast.makeText(SignInActivity.this, "Đã có lỗi xảy ra!", Toast.LENGTH_SHORT).show(); + } + } + }); + + txt_verify_email.setVisibility(View.GONE); + } + }); + } //Log out user mAuth.signOut(); @@ -306,7 +326,7 @@ public class SignInActivity extends AppCompatActivity { } } else { - showNotification(DialogStyle.RAINBOW, DialogType.WARNING, "Thông tin đăng nhập không đúng! Vui lòng kiểm tra và thử lại!"); + showNotification(DialogStyle.TOASTER, DialogType.WARNING, "Thông tin đăng nhập không đúng! Vui lòng kiểm tra và thử lại!"); //Dismiss progress bar progressLayout.setVisibility(View.GONE); 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 edc92eb..f52e2b4 100644 --- a/app/src/main/java/com/capstone/foodify/Activity/VerifyAccountActivity.java +++ b/app/src/main/java/com/capstone/foodify/Activity/VerifyAccountActivity.java @@ -43,6 +43,7 @@ import com.google.android.material.button.MaterialButton; import com.google.firebase.FirebaseException; import com.google.firebase.auth.AuthResult; import com.google.firebase.auth.FirebaseAuth; +import com.google.firebase.auth.FirebaseUser; import com.google.firebase.auth.PhoneAuthCredential; import com.google.firebase.auth.PhoneAuthOptions; import com.google.firebase.auth.PhoneAuthProvider; @@ -267,61 +268,89 @@ public class VerifyAccountActivity extends AppCompatActivity { code ); - if(phoneAuthCredential.getSmsCode().equals(code)){ - //Create user account - mAuth.createUserWithEmailAndPassword(user.getEmail(), password) - .addOnCompleteListener(this, new OnCompleteListener() { + mAuth.signInWithCredential(phoneAuthCredential).addOnCompleteListener(new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if(task.isSuccessful()){ + //Verify + + FirebaseUser phoneUser = task.getResult().getUser(); + assert phoneUser != null; + phoneUser.delete().addOnCompleteListener(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) { - - if(response.code() == 200){ - progressLayout.setVisibility(View.GONE); - //Create user success; - - new AestheticDialog.Builder(VerifyAccountActivity.this, DialogStyle.FLAT, DialogType.SUCCESS) - .setTitle("Thông báo!") - .setMessage("Đã tạo tài khoản thành công!") - .setCancelable(false) - .setOnClickListener(new OnDialogClickListener() { - @Override - public void onClick(@NonNull AestheticDialog.Builder dialog) { - dialog.dismiss(); - FirebaseAuth.getInstance().signOut(); - startActivity(new Intent(VerifyAccountActivity.this, SignInActivity.class)); - finish(); - } - }) - .show(); - } else { - progressLayout.setVisibility(View.GONE); - Toast.makeText(VerifyAccountActivity.this, "Lỗi hệ thống! Code: " + response.code(), Toast.LENGTH_SHORT).show(); - } - } - - @Override - public void onFailure(Call call, Throwable t) { - progressLayout.setVisibility(View.GONE); - showErrorText(t.toString()); - Log.e(TAG, t.toString()); - } - }); - } else { - progressLayout.setVisibility(View.GONE); - Common.showErrorServerNotification(VerifyAccountActivity.this, "Đã có lỗi kết nối! Vui lòng thử lại sau!"); - } + public void onComplete(@NonNull Task task) { + createUserAccount(); } }); - } - + } else { + //Not verify + Common.notificationDialog(VerifyAccountActivity.this, DialogStyle.TOASTER, DialogType.ERROR, "Thông báo!", "Mã OTP sai! Vui lòng kiểm tra lại"); + progressLayout.setVisibility(View.GONE); + } + } + }); } } + private void createUserAccount() { + //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) { + + if(response.code() == 200){ + progressLayout.setVisibility(View.GONE); + //Create user success; + + //Send email + FirebaseUser firebaseUser = task.getResult().getUser(); + assert firebaseUser != null; + firebaseUser.sendEmailVerification(); + + new AestheticDialog.Builder(VerifyAccountActivity.this, DialogStyle.FLAT, DialogType.SUCCESS) + .setTitle("Đã tạo tài khoản thành công!") + .setMessage("Hiện tại bạn còn 1 bước xác thực email để có thể đăng nhập app! Vui lòng kiểm tra email và làm theo hướng dẫn " + + "để có thể tiếp tục!") + .setCancelable(false) + .setOnClickListener(new OnDialogClickListener() { + @Override + public void onClick(@NonNull AestheticDialog.Builder dialog) { + dialog.dismiss(); + + FirebaseAuth.getInstance().signOut(); + startActivity(new Intent(VerifyAccountActivity.this, SignInActivity.class)); + finish(); + } + }) + .show(); + } else { + progressLayout.setVisibility(View.GONE); + Toast.makeText(VerifyAccountActivity.this, "Lỗi hệ thống! Code: " + response.code(), Toast.LENGTH_SHORT).show(); + } + } + + @Override + public void onFailure(Call call, Throwable t) { + progressLayout.setVisibility(View.GONE); + showErrorText(t.toString()); + Log.e(TAG, t.toString()); + } + }); + } else { + progressLayout.setVisibility(View.GONE); + Common.showErrorServerNotification(VerifyAccountActivity.this, "Đã có lỗi kết nối! Vui lòng thử lại sau!"); + } + } + }); + } + private void showErrorText(String msg){ errorText.setText(msg); } diff --git a/app/src/main/res/layout/activity_food_detail.xml b/app/src/main/res/layout/activity_food_detail.xml index 0922ac0..769d8af 100644 --- a/app/src/main/res/layout/activity_food_detail.xml +++ b/app/src/main/res/layout/activity_food_detail.xml @@ -360,29 +360,29 @@ android:id="@+id/user_comment_layout" > - - - + + + + + - - - + + + - + + - - + android:layout_height="wrap_content"> + + - - - +