Fix bug can't access shop detail after access another activity

This commit is contained in:
Nezumi
2023-03-14 15:29:26 +07:00
parent 431025575f
commit b16d7560c9
5 changed files with 81 additions and 36 deletions
@@ -61,10 +61,10 @@ public interface FoodApi {
@GET("products/shops/{id}")
Call<Foods> listFoodByShopId(@Path("id") int id, @Query("pageNo") int pageNo, @Query("pageSize") int pageSize, @Query("sortBy") String sortBy, @Query("sortDir") String sortDir);
@GET("district/{districtId}/ward")
@GET("districts/{districtId}/wards")
Call<List<DistrictWardResponse>> wardResponse(@Path("districtId") int district_id);
@GET("district")
@GET("districts")
Call<List<DistrictWardResponse>> districtResponse();
@GET("sliders")
@@ -1,26 +1,25 @@
package com.capstone.foodify.Activity;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.widget.NestedScrollView;
import androidx.recyclerview.widget.DividerItemDecoration;
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;
import android.widget.TextView;
import android.widget.Toast;
import com.capstone.foodify.API.FoodApi;
import com.capstone.foodify.Adapter.FoodShopAdapter;
import com.capstone.foodify.Common;
import com.capstone.foodify.Model.Food.Food;
import com.capstone.foodify.Adapter.FoodShopAdapter;
import com.capstone.foodify.Model.Response.Foods;
import com.capstone.foodify.Model.Response.Shops;
import com.capstone.foodify.Model.Shop.Shop;
import com.capstone.foodify.R;
import com.google.android.material.appbar.CollapsingToolbarLayout;
@@ -49,10 +48,10 @@ public class ShopDetailActivity extends AppCompatActivity {
RecyclerView recycler_view_food_shop;
FoodShopAdapter adapter;
private CollapsingToolbarLayout collapsingToolbarLayout;
private PopupDialog popupDialog;
private NestedScrollView nestedScrollView;
private ProgressBar progressBar;
private Shop shop;
private ConstraintLayout progressLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -70,10 +69,7 @@ public class ShopDetailActivity extends AppCompatActivity {
nestedScrollView = findViewById(R.id.food_detail);
progressBar = findViewById(R.id.progress_bar);
end_of_list_text_view = findViewById(R.id.end_of_list_text);
popupDialog = PopupDialog.getInstance(this);
popupDialog.setStyle(Styles.PROGRESS).setProgressDialogTint(getResources().getColor(R.color.primaryColor, null))
.setCancelable(false).showDialog();
progressLayout = findViewById(R.id.progress_layout);
//Get data
if (getIntent() != null)
@@ -130,12 +126,15 @@ public class ShopDetailActivity extends AppCompatActivity {
recycler_view_food_shop.setAdapter(adapter);
initData(shop);
progressLayout.setVisibility(View.GONE);
}
@Override
public void onFailure(Call<Foods> call, Throwable t) {
//Check internet connection
Common.showNotificationError(getBaseContext(), ShopDetailActivity.this);
progressLayout.setVisibility(View.GONE);
}
});
}
@@ -176,7 +175,6 @@ public class ShopDetailActivity extends AppCompatActivity {
hideProgressBarAndShowEndOfListText();
nestedScrollView.setVisibility(View.VISIBLE);
popupDialog.dismissDialog();
}
private void hideProgressBarAndShowEndOfListText(){
@@ -12,6 +12,7 @@ import android.net.NetworkInfo;
import android.os.Build;
import android.widget.Toast;
import androidx.annotation.IntRange;
import androidx.annotation.NonNull;
import com.capstone.foodify.Model.Basket.Basket;
@@ -47,19 +48,39 @@ public class Common {
return Typeface.createFromAsset(assetManager, "font/opensans.ttf");
}
public static boolean checkInternetConnection(Context context){
ConnectivityManager connectivityManager =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
Network activeNetwork = connectivityManager.getActiveNetwork();
NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(activeNetwork);
if (capabilities != null) {
if (capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_SUPL)) return true;
else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) return true;
else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)) return true;
else return false;
@IntRange(from = 0, to = 3)
public static int getConnectionType(Context context) {
int result = 0; // Returns connection type. 0: none; 1: mobile data; 2: wifi
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (cm != null) {
NetworkCapabilities capabilities = cm.getNetworkCapabilities(cm.getActiveNetwork());
if (capabilities != null) {
if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
result = 2;
} else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
result = 1;
} else if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN)) {
result = 3;
}
}
}
} else {
if (cm != null) {
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork != null) {
// connected to the internet
if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
result = 2;
} else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
result = 1;
} else if (activeNetwork.getType() == ConnectivityManager.TYPE_VPN) {
result = 3;
}
}
}
}
return false;
return result;
}
public static void showErrorInternetConnectionNotification(Activity activity){
@@ -78,7 +99,7 @@ public class Common {
}
public static void showNotificationError(Context context, Activity activity) {
if(checkInternetConnection(context)){
if(getConnectionType(context) != 0){
//Has internet connection
showErrorServerNotification(activity);
} else {
@@ -65,10 +65,6 @@ public class HomeFragment extends Fragment {
popupDialog = PopupDialog.getInstance(getContext());
//Show progress bar
popupDialog.setStyle(Styles.PROGRESS).setProgressDialogTint(getResources().getColor(R.color.primaryColor, null))
.setCancelable(false).showDialog();
if(listFood.isEmpty() || recentFood.isEmpty()){
getListFood();
@@ -90,7 +86,18 @@ public class HomeFragment extends Fragment {
return view;
}
@Override
public void onDestroy() {
super.onDestroy();
System.out.println("Main activity destroy!");
}
private void showSlider(){
//Show progress bar
popupDialog.setStyle(Styles.PROGRESS).setProgressDialogTint(getResources().getColor(R.color.primaryColor, null))
.setCancelable(false).showDialog();
FoodApi.apiService.listSlider().enqueue(new Callback<List<Slider>>() {
@Override
public void onResponse(Call<List<Slider>> call, Response<List<Slider>> response) {
@@ -20,7 +20,6 @@
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
app:contentScrim="@color/primaryDarkColor"
app:title="Shop Name"
android:theme="@style/CustomToolbarTheme"
>
@@ -162,6 +161,26 @@
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80000000"
android:id="@+id/progress_layout"
>
<ProgressBar
android:id="@+id/progressBarLoadData"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminateTint="@color/primaryColor"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>