diff --git a/.idea/androidTestResultsUserPreferences.xml b/.idea/androidTestResultsUserPreferences.xml
index abd2b2e..162046b 100644
--- a/.idea/androidTestResultsUserPreferences.xml
+++ b/.idea/androidTestResultsUserPreferences.xml
@@ -16,6 +16,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/build.gradle b/app/build.gradle
index 4299067..a35a216 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -71,7 +71,9 @@ dependencies {
implementation 'com.github.slavce14:SJ-Dialog:1.5'
implementation 'com.saadahmedev.popup-dialog:popup-dialog:1.0.2'
implementation 'com.github.gabriel-TheCode:AestheticDialogs:1.3.6'
+ implementation 'io.github.pilgr:paperdb:2.7.2'
//Firebase
implementation platform('com.google.firebase:firebase-bom:31.2.3')
+ implementation("com.squareup.okhttp3:okhttp:4.10.0")
}
\ No newline at end of file
diff --git a/app/src/main/java/com/capstone/foodify/API/FoodApi.java b/app/src/main/java/com/capstone/foodify/API/FoodApi.java
index e776f42..53c1b78 100644
--- a/app/src/main/java/com/capstone/foodify/API/FoodApi.java
+++ b/app/src/main/java/com/capstone/foodify/API/FoodApi.java
@@ -23,11 +23,10 @@ import retrofit2.http.Query;
public interface FoodApi {
-
Gson gson = new GsonBuilder().setDateFormat("HH:mm:ss dd-MM-yyyy").create();
FoodApi apiService = new Retrofit.Builder()
- .baseUrl("http://10.0.2.2:8080/api/").addConverterFactory(GsonConverterFactory.create(gson))
+ .baseUrl("http://192.168.1.183:8080/api/").addConverterFactory(GsonConverterFactory.create(gson))
.build()
.create(FoodApi.class);
@@ -66,13 +65,4 @@ public interface FoodApi {
@GET("district")
Call> districtResponse();
-
- @GET("wishlist")
- Call> getListFavoriteFood();
-
- @POST("wishlist")
- Call addFoodToFavorite(@Body Food food);
-
- @DELETE("wishlist/{id}")
- Call removeFoodFromFavorite(@Path("id") int id);
}
diff --git a/app/src/main/java/com/capstone/foodify/API/FoodApiToken.java b/app/src/main/java/com/capstone/foodify/API/FoodApiToken.java
new file mode 100644
index 0000000..915fed0
--- /dev/null
+++ b/app/src/main/java/com/capstone/foodify/API/FoodApiToken.java
@@ -0,0 +1,54 @@
+package com.capstone.foodify.API;
+
+import static com.capstone.foodify.Common.TOKEN;
+
+import androidx.annotation.NonNull;
+
+import com.capstone.foodify.Model.Food.Food;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+import java.io.IOException;
+import java.util.List;
+
+import okhttp3.Interceptor;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.Response;
+import retrofit2.Call;
+import retrofit2.Retrofit;
+import retrofit2.converter.gson.GsonConverterFactory;
+import retrofit2.http.Body;
+import retrofit2.http.DELETE;
+import retrofit2.http.GET;
+import retrofit2.http.POST;
+import retrofit2.http.Path;
+
+public interface FoodApiToken {
+ Gson gson = new GsonBuilder().setDateFormat("HH:mm:ss dd-MM-yyyy").create();
+
+ OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new Interceptor() {
+ @NonNull
+ @Override
+ public Response intercept(@NonNull Chain chain) throws IOException {
+ Request newRequest = chain.request().newBuilder().addHeader("Authorization", "Bearer " + TOKEN).build();
+ return chain.proceed(newRequest);
+ }
+ }).build();
+
+
+ FoodApiToken apiService = new Retrofit.Builder()
+ .client(client)
+ .baseUrl("http://10.0.2.2:8080/api/").addConverterFactory(GsonConverterFactory.create(gson))
+ .build()
+ .create(FoodApiToken.class);
+
+ @GET("wishlist")
+ Call> getListFavoriteFood();
+
+ @POST("wishlist")
+ Call addFoodToFavorite(@Body Food food);
+
+ @DELETE("wishlist/{id}")
+ Call removeFoodFromFavorite(@Path("id") int id);
+}
diff --git a/app/src/main/java/com/capstone/foodify/Activity/FoodDetailActivity.java b/app/src/main/java/com/capstone/foodify/Activity/FoodDetailActivity.java
index 9a1abe4..0b2532b 100644
--- a/app/src/main/java/com/capstone/foodify/Activity/FoodDetailActivity.java
+++ b/app/src/main/java/com/capstone/foodify/Activity/FoodDetailActivity.java
@@ -6,6 +6,7 @@ import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
+import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
@@ -25,7 +26,7 @@ import com.capstone.foodify.API.FoodApi;
import com.capstone.foodify.Common;
import com.capstone.foodify.Model.Basket.Basket;
import com.capstone.foodify.Model.Food.Food;
-import com.capstone.foodify.Model.Image;
+import com.capstone.foodify.Model.Image.Image;
import com.capstone.foodify.Model.Review.Review;
import com.capstone.foodify.Adapter.ReviewAdapter;
import com.capstone.foodify.R;
@@ -267,6 +268,8 @@ public class FoodDetailActivity extends AppCompatActivity {
@Override
public void onFailure(Call call, Throwable t) {
Common.showNotificationError(t, getBaseContext(), FoodDetailActivity.this);
+
+ Log.e("ERROR", "Get Detail Food Error!");
}
});
}
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 ce2c308..0943ae7 100644
--- a/app/src/main/java/com/capstone/foodify/Activity/MainActivity.java
+++ b/app/src/main/java/com/capstone/foodify/Activity/MainActivity.java
@@ -1,6 +1,7 @@
package com.capstone.foodify.Activity;
import android.annotation.SuppressLint;
+import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.Toast;
@@ -12,19 +13,58 @@ import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager2.widget.ViewPager2;
+import com.capstone.foodify.API.FoodApi;
import com.capstone.foodify.Common;
+import com.capstone.foodify.Model.Image.Images;
import com.capstone.foodify.R;
import com.capstone.foodify.ViewPagerAdapter;
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.Task;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.navigation.NavigationBarView;
import com.google.firebase.FirebaseApp;
+import com.google.firebase.auth.FirebaseAuth;
+import com.google.firebase.auth.FirebaseUser;
+import com.google.firebase.auth.GetTokenResult;
+import com.saadahmedsoft.popupdialog.PopupDialog;
+
+import io.paperdb.Paper;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
public class MainActivity extends AppCompatActivity {
ViewPager2 viewPager2;
ViewPagerAdapter viewPagerAdapter;
BottomNavigationView bottomNavigationView;
+ private FirebaseAuth mAuth;
+ private FirebaseUser user;
+ @Override
+ public void onStart() {
+ super.onStart();
+ //Get user from Paper
+ user = Paper.book().read("user");
+
+ // Check if user is signed in (non-null) and update UI accordingly.
+ user = mAuth.getCurrentUser();
+ if(user != null){
+ user.getIdToken(true)
+ .addOnCompleteListener(new OnCompleteListener() {
+ @Override
+ public void onComplete(@NonNull Task task) {
+ if(task.isSuccessful()){
+ Common.TOKEN = task.getResult().getToken();
+ } else {
+ Toast.makeText(MainActivity.this, "Error when taking token!", Toast.LENGTH_SHORT).show();
+ }
+ }
+ });
+ }
+
+
+ }
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -33,6 +73,12 @@ public class MainActivity extends AppCompatActivity {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
setContentView(R.layout.activity_main);
+ //Initialize Firebase Auth
+ mAuth = FirebaseAuth.getInstance();
+
+ //Paper Init
+ Paper.init(this);
+
initComponent();
bottomNavigation();
@@ -62,10 +108,18 @@ public class MainActivity extends AppCompatActivity {
viewPager2.setCurrentItem(2);
break;
case R.id.activity_favorite:
- viewPager2.setCurrentItem(3);
+ if(Common.TOKEN != null){
+ viewPager2.setCurrentItem(3);
+ } else {
+ startActivity(new Intent(MainActivity.this, SignInActivity.class));
+ }
break;
case R.id.activity_profile:
- viewPager2.setCurrentItem(4);
+ if(Common.TOKEN != null){
+ viewPager2.setCurrentItem(4);
+ } else {
+ startActivity(new Intent(MainActivity.this, SignInActivity.class));
+ }
break;
}
return false;
diff --git a/app/src/main/java/com/capstone/foodify/Activity/ShopDetailActivity.java b/app/src/main/java/com/capstone/foodify/Activity/ShopDetailActivity.java
index d806031..e9729b9 100644
--- a/app/src/main/java/com/capstone/foodify/Activity/ShopDetailActivity.java
+++ b/app/src/main/java/com/capstone/foodify/Activity/ShopDetailActivity.java
@@ -8,6 +8,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
+import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.ProgressBar;
@@ -135,6 +136,8 @@ public class ShopDetailActivity extends AppCompatActivity {
public void onFailure(Call call, Throwable t) {
//Check internet connection
Common.showNotificationError(t, getBaseContext(), ShopDetailActivity.this);
+
+ Log.e("ERROR", "List Food By Shop Id Error!");
}
});
}
@@ -155,6 +158,8 @@ public class ShopDetailActivity extends AppCompatActivity {
@Override
public void onFailure(Call call, Throwable t) {
Common.showNotificationError(t, getBaseContext(), ShopDetailActivity.this);
+
+ Log.e("ERROR", "Get Detail Shop Error!");
}
});
}
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 69b438b..62de475 100644
--- a/app/src/main/java/com/capstone/foodify/Activity/SignInActivity.java
+++ b/app/src/main/java/com/capstone/foodify/Activity/SignInActivity.java
@@ -25,29 +25,37 @@ import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.auth.GetTokenResult;
+import com.saadahmedsoft.popupdialog.PopupDialog;
+import com.saadahmedsoft.popupdialog.Styles;
+
+import io.paperdb.Paper;
public class SignInActivity extends AppCompatActivity {
private FirebaseAuth mAuth;
TextView signUp_textView, forgotPassword_textView;
-
TextInputLayout textInput_account, textInput_password;
TextInputEditText email, password;
MaterialButton signInButton;
-
ImageView back_image;
+ PopupDialog popupDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+
//Init firebase app
FirebaseApp.initializeApp(SignInActivity.this);
-
setContentView(R.layout.activity_sign_in);
+ //Init Paper
+ Paper.init(this);
// Initialize Firebase Auth
mAuth = FirebaseAuth.getInstance();
+ //Init Popup Dialog
+ popupDialog = PopupDialog.getInstance(SignInActivity.this);
+
initComponent();
setFontUI();
@@ -73,10 +81,16 @@ public class SignInActivity extends AppCompatActivity {
}
});
+
//Set event when user click sign in button
signInButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
+
+ //Show progress bar
+ popupDialog.setStyle(Styles.PROGRESS).setProgressDialogTint(getResources().getColor(R.color.primaryColor, null))
+ .setCancelable(false).showDialog();
+
mAuth.signInWithEmailAndPassword(email.getText().toString(), password.getText().toString())
.addOnCompleteListener(SignInActivity.this, new OnCompleteListener() {
@Override
@@ -85,14 +99,20 @@ public class SignInActivity extends AppCompatActivity {
// Sign in success, update UI with the signed-in user's information
FirebaseUser user = mAuth.getCurrentUser();
+ //Save user
+ Paper.book().write("user", user);
+
user.getIdToken(true)
.addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
if(task.isSuccessful()){
- String idToken = task.getResult().getToken();
+ Common.TOKEN = task.getResult().getToken();
- System.out.println("TOKEN: " + idToken);
+ //Dismiss progress bar dialog
+ popupDialog.dismissDialog();
+
+ startActivity(new Intent(SignInActivity.this, MainActivity.class));
} else {
Toast.makeText(SignInActivity.this, "Error when taking token!", Toast.LENGTH_SHORT).show();
}
@@ -100,8 +120,10 @@ public class SignInActivity extends AppCompatActivity {
});
} else {
// If sign in fails, display a message to the user.
- Toast.makeText(SignInActivity.this, "Authentication failed.",
+ Toast.makeText(SignInActivity.this, "Thông tin đăng nhập không đúng! Vui lòng kiểm tra và thử lại!",
Toast.LENGTH_SHORT).show();
+
+ popupDialog.dismissDialog();
}
}
});
diff --git a/app/src/main/java/com/capstone/foodify/Adapter/FoodFavoriteAdapter.java b/app/src/main/java/com/capstone/foodify/Adapter/FoodFavoriteAdapter.java
index 11c996a..7f60c0d 100644
--- a/app/src/main/java/com/capstone/foodify/Adapter/FoodFavoriteAdapter.java
+++ b/app/src/main/java/com/capstone/foodify/Adapter/FoodFavoriteAdapter.java
@@ -13,6 +13,7 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.capstone.foodify.API.FoodApi;
+import com.capstone.foodify.API.FoodApiToken;
import com.capstone.foodify.Model.Food.Food;
import com.capstone.foodify.R;
@@ -81,7 +82,7 @@ public class FoodFavoriteAdapter extends RecyclerView.Adapter() {
+ FoodApiToken.apiService.removeFoodFromFavorite(index).enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
Toast.makeText(context, "Remove successful!", Toast.LENGTH_SHORT).show();
@@ -98,7 +99,7 @@ public class FoodFavoriteAdapter extends RecyclerView.Adapter() {
+ FoodApiToken.apiService.addFoodToFavorite(food).enqueue(new Callback() {
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) {
Toast.makeText(context, "Add successful!", Toast.LENGTH_SHORT).show();
diff --git a/app/src/main/java/com/capstone/foodify/Common.java b/app/src/main/java/com/capstone/foodify/Common.java
index 2cea49e..e1c8aa2 100644
--- a/app/src/main/java/com/capstone/foodify/Common.java
+++ b/app/src/main/java/com/capstone/foodify/Common.java
@@ -27,6 +27,8 @@ import java.util.Locale;
public class Common {
public static List LIST_BASKET_FOOD = new ArrayList<>();
+ public static String TOKEN = null;
+
public static String changeCurrencyUnit(float price){
Locale locale = new Locale("vi", "VN");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
diff --git a/app/src/main/java/com/capstone/foodify/Fragment/FavoriteFragment.java b/app/src/main/java/com/capstone/foodify/Fragment/FavoriteFragment.java
index 5095e9e..630f6f8 100644
--- a/app/src/main/java/com/capstone/foodify/Fragment/FavoriteFragment.java
+++ b/app/src/main/java/com/capstone/foodify/Fragment/FavoriteFragment.java
@@ -11,12 +11,14 @@ import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.capstone.foodify.API.FoodApi;
+import com.capstone.foodify.API.FoodApiToken;
import com.capstone.foodify.Common;
import com.capstone.foodify.ItemTouchHelperListener;
import com.capstone.foodify.Model.Food.Food;
@@ -67,31 +69,34 @@ public class FavoriteFragment extends Fragment implements ItemTouchHelperListene
private void getListFavoriteFood() {
//Get data from api
- FoodApi.apiService.getListFavoriteFood().enqueue(new Callback>() {
- @Override
- public void onResponse(@NonNull Call> call, @NonNull Response> response) {
- List listFoodData = response.body();
- if(listFoodData != null){
- listFavoriteFood.addAll(listFoodData);
- }
- Collections.sort(listFavoriteFood);
-
- adapter.setData(listFavoriteFood);
- recyclerView_favorite_food.setAdapter(adapter);
- }
-
- @Override
- public void onFailure(Call> call, Throwable t) {
- //Check internet connection
- if(Common.checkInternetConnection(getContext())){
- //Has internet connection
- Toast.makeText(getContext(), "Error: " + t, Toast.LENGTH_SHORT).show();
- } else {
- //No internet, show notification
- Common.showErrorInternetConnectionNotification(getActivity());
- }
- }
- });
+// FoodApiToken.apiService.getListFavoriteFood().enqueue(new Callback>() {
+// @Override
+// public void onResponse(@NonNull Call> call, @NonNull Response> response) {
+// List listFoodData = response.body();
+// if(listFoodData != null){
+// listFavoriteFood.addAll(listFoodData);
+// }
+// Collections.sort(listFavoriteFood);
+//
+// adapter.setData(listFavoriteFood);
+// recyclerView_favorite_food.setAdapter(adapter);
+// }
+//
+// @Override
+// public void onFailure(Call> call, Throwable t) {
+// //Check internet connection
+// if(Common.checkInternetConnection(getContext())){
+// //Has internet connection
+// Toast.makeText(getContext(), "Error: " + t, Toast.LENGTH_SHORT).show();
+// } else {
+// //No internet, show notification
+// Common.showErrorInternetConnectionNotification(getActivity());
+//
+// Log.e("ERROR", "Get list favorite food error!");
+//
+// }
+// }
+// });
}
@Override
diff --git a/app/src/main/java/com/capstone/foodify/Fragment/HomeFragment.java b/app/src/main/java/com/capstone/foodify/Fragment/HomeFragment.java
index be89330..f3fc765 100644
--- a/app/src/main/java/com/capstone/foodify/Fragment/HomeFragment.java
+++ b/app/src/main/java/com/capstone/foodify/Fragment/HomeFragment.java
@@ -1,6 +1,7 @@
package com.capstone.foodify.Fragment;
import android.os.Bundle;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -114,6 +115,9 @@ public class HomeFragment extends Fragment {
public void onFailure(Call call, Throwable t) {
//Check internet connection
Common.showNotificationError(t, getContext(), getActivity());
+
+ Log.e("ERROR", "Get recommend food error!");
+
}
});
}
@@ -138,6 +142,9 @@ public class HomeFragment extends Fragment {
public void onFailure(Call call, Throwable t) {
//Check internet connection
Common.showNotificationError(t,getContext(), getActivity());
+
+ Log.e("ERROR", "Get recent food error!");
+
}
});
}
@@ -161,6 +168,8 @@ public class HomeFragment extends Fragment {
public void onFailure(Call call, Throwable t) {
//Check internet connection
Common.showNotificationError(t, getContext(), getActivity());
+
+ Log.e("ERROR", "Get all shop error!");
}
});
}
diff --git a/app/src/main/java/com/capstone/foodify/Fragment/ProfileFragment.java b/app/src/main/java/com/capstone/foodify/Fragment/ProfileFragment.java
index 91897c6..bbcbff1 100644
--- a/app/src/main/java/com/capstone/foodify/Fragment/ProfileFragment.java
+++ b/app/src/main/java/com/capstone/foodify/Fragment/ProfileFragment.java
@@ -1,5 +1,6 @@
package com.capstone.foodify.Fragment;
+import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
@@ -8,37 +9,38 @@ import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
+import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.fragment.app.Fragment;
import com.capstone.foodify.Activity.AccountAndProfileActivity;
import com.capstone.foodify.Activity.AddressManagerActivity;
+import com.capstone.foodify.Activity.MainActivity;
import com.capstone.foodify.Activity.OrderActivity;
import com.capstone.foodify.Activity.SignInActivity;
import com.capstone.foodify.Activity.SignUpActivity;
+import com.capstone.foodify.Common;
import com.capstone.foodify.R;
+import com.google.firebase.auth.FirebaseAuth;
+import com.saadahmedsoft.popupdialog.PopupDialog;
+import com.saadahmedsoft.popupdialog.Styles;
+import com.saadahmedsoft.popupdialog.listener.OnDialogButtonClickListener;
+
+import io.paperdb.Paper;
public class ProfileFragment extends Fragment {
-
- Button btnSignUp, btnSignIn;
-
- LinearLayout account_and_profile, manage_address, order_history;
+ LinearLayout account_and_profile, manage_address, order_history, log_out;
+ PopupDialog popupDialog;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_profile, container, false);
- btnSignUp = rootView.findViewById(R.id.sign_up_button);
account_and_profile = rootView.findViewById(R.id.account_and_profile);
manage_address = rootView.findViewById(R.id.manage_address);
order_history = rootView.findViewById(R.id.order_history);
- btnSignIn = rootView.findViewById(R.id.sign_in_button);
+ log_out = rootView.findViewById(R.id.log_out);
- btnSignUp.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- startActivity(new Intent(getActivity(), SignUpActivity.class));
- }
- });
+ popupDialog = PopupDialog.getInstance(getContext());
account_and_profile.setOnClickListener(new View.OnClickListener() {
@Override
@@ -61,10 +63,37 @@ public class ProfileFragment extends Fragment {
}
});
- btnSignIn.setOnClickListener(new View.OnClickListener() {
+ log_out.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- getContext().startActivity(new Intent(getContext(), SignInActivity.class));
+
+ PopupDialog.getInstance(getContext())
+ .setStyle(Styles.STANDARD)
+ .setHeading("Đăng xuất?")
+ .setDescription("Bạn thực sự muốn đăng xuất?")
+ .setPopupDialogIcon(R.drawable.baseline_logout)
+ .setPopupDialogIconTint(R.color.primaryColor)
+ .setPositiveButtonBackground(R.drawable.bg_color_primary_corner)
+ .setPositiveButtonText("Có")
+ .setNegativeButtonText("Không")
+ .setCancelable(false)
+ .showDialog(new OnDialogButtonClickListener() {
+ @Override
+ public void onPositiveClicked(Dialog dialog) {
+ FirebaseAuth.getInstance().signOut();
+
+ //Delete user from local storage
+ Paper.book().delete("user");
+
+ Common.TOKEN = null;
+ startActivity(new Intent(getContext(), MainActivity.class));
+ }
+
+ @Override
+ public void onNegativeClicked(Dialog dialog) {
+ super.onNegativeClicked(dialog);
+ }
+ });
}
});
return rootView;
diff --git a/app/src/main/java/com/capstone/foodify/Fragment/SearchFragment.java b/app/src/main/java/com/capstone/foodify/Fragment/SearchFragment.java
index 85cff1e..e765ee2 100644
--- a/app/src/main/java/com/capstone/foodify/Fragment/SearchFragment.java
+++ b/app/src/main/java/com/capstone/foodify/Fragment/SearchFragment.java
@@ -1,6 +1,7 @@
package com.capstone.foodify.Fragment;
import android.os.Bundle;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -160,6 +161,8 @@ public class SearchFragment extends Fragment {
public void onFailure(Call call, Throwable t) {
//Check internet connection
Common.showNotificationError(t, getContext(), getActivity());
+
+ Log.e("ERROR", "Get search food by name error!");
}
});
}
@@ -238,6 +241,8 @@ public class SearchFragment extends Fragment {
public void onFailure(Call> call, Throwable t) {
//Check internet connection
Common.showNotificationError(t, getContext(), getActivity());
+
+ Log.e("ERROR", "Get list category Error!");
}
});
}
@@ -253,9 +258,10 @@ public class SearchFragment extends Fragment {
@Override
public void onFailure(Call call, Throwable t) {
- //Check internet connection
//Check internet connection
Common.showNotificationError(t, getContext(), getActivity());
+
+ Log.e("ERROR", "Get List Food By Category Error!");
}
});
}
@@ -272,6 +278,8 @@ public class SearchFragment extends Fragment {
public void onFailure(Call call, Throwable t) {
//Check internet connection
Common.showNotificationError(t, getContext(), getActivity());
+
+ Log.e("ERROR", "Get list food error!");
}
});
}
diff --git a/app/src/main/java/com/capstone/foodify/Model/Food/Food.java b/app/src/main/java/com/capstone/foodify/Model/Food/Food.java
index 17db296..5f88bb1 100644
--- a/app/src/main/java/com/capstone/foodify/Model/Food/Food.java
+++ b/app/src/main/java/com/capstone/foodify/Model/Food/Food.java
@@ -1,7 +1,7 @@
package com.capstone.foodify.Model.Food;
import com.capstone.foodify.Model.Category.Category;
-import com.capstone.foodify.Model.Image;
+import com.capstone.foodify.Model.Image.Image;
import com.capstone.foodify.Model.Shop.Shop;
import java.util.List;
diff --git a/app/src/main/java/com/capstone/foodify/Model/Image.java b/app/src/main/java/com/capstone/foodify/Model/Image/Image.java
similarity index 92%
rename from app/src/main/java/com/capstone/foodify/Model/Image.java
rename to app/src/main/java/com/capstone/foodify/Model/Image/Image.java
index ea8efbe..936dbf3 100644
--- a/app/src/main/java/com/capstone/foodify/Model/Image.java
+++ b/app/src/main/java/com/capstone/foodify/Model/Image/Image.java
@@ -1,4 +1,4 @@
-package com.capstone.foodify.Model;
+package com.capstone.foodify.Model.Image;
public class Image {
private int id;
diff --git a/app/src/main/java/com/capstone/foodify/Model/Image/Images.java b/app/src/main/java/com/capstone/foodify/Model/Image/Images.java
new file mode 100644
index 0000000..f4f2599
--- /dev/null
+++ b/app/src/main/java/com/capstone/foodify/Model/Image/Images.java
@@ -0,0 +1,26 @@
+package com.capstone.foodify.Model.Image;
+
+import com.capstone.foodify.Model.Page;
+
+import java.util.List;
+
+public class Images {
+ private List images;
+ private Page page;
+
+ public List getImages() {
+ return images;
+ }
+
+ public void setImages(List images) {
+ this.images = images;
+ }
+
+ public Page getPage() {
+ return page;
+ }
+
+ public void setPage(Page page) {
+ this.page = page;
+ }
+}
diff --git a/app/src/main/res/drawable/baseline_logout.xml b/app/src/main/res/drawable/baseline_logout.xml
new file mode 100644
index 0000000..70d8b8f
--- /dev/null
+++ b/app/src/main/res/drawable/baseline_logout.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/drawable/bg_color_primary_corner.xml b/app/src/main/res/drawable/bg_color_primary_corner.xml
new file mode 100644
index 0000000..7641064
--- /dev/null
+++ b/app/src/main/res/drawable/bg_color_primary_corner.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_profile.xml b/app/src/main/res/layout/fragment_profile.xml
index b741b5c..8221140 100644
--- a/app/src/main/res/layout/fragment_profile.xml
+++ b/app/src/main/res/layout/fragment_profile.xml
@@ -7,14 +7,12 @@
tools:context=".Fragment.ProfileFragment">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file