From 0e0965209d494dbfc0cd8d9878a556166359b167 Mon Sep 17 00:00:00 2001 From: Nezumi <123229563+Nez27@users.noreply.github.com> Date: Wed, 8 Mar 2023 16:38:18 +0700 Subject: [PATCH] Add notification when lost internet --- app/build.gradle | 2 + app/src/main/AndroidManifest.xml | 1 + .../Activity/AccountAndProfileActivity.java | 11 ++--- .../foodify/Activity/FoodDetailActivity.java | 14 ++++--- .../foodify/Activity/MainActivity.java | 2 + .../java/com/capstone/foodify/Common.java | 42 +++++++++++++++++++ .../foodify/Fragment/FavoriteFragment.java | 10 ++++- .../foodify/Fragment/HomeFragment.java | 25 ++++++++++- .../foodify/Fragment/SearchFragment.java | 28 +++++++++++-- 9 files changed, 118 insertions(+), 17 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index c364b78..bd16584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,4 +61,6 @@ dependencies { implementation 'com.github.ome450901:SimpleRatingBar:1.5.1' implementation 'com.cepheuen.elegant-number-button:lib:1.0.2' 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' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2b8add7..8aa1e18 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,6 +4,7 @@ + imageFood = new ArrayList<>(); private TextView foodName_txt, shopName_txt, discount_txt, price_txt, total_txt, countRating_txt, description_content_txt; private ConstraintLayout content_view; - private ProgressBar progressBar; private Button add_to_basket_button; - private View line; private float totalPrice, price; private RecyclerView recyclerView_review; private ReviewAdapter reviewAdapter; private Button rating_button; + private PopupDialog popupDialog; @Override @@ -80,10 +81,8 @@ public class FoodDetailActivity extends AppCompatActivity { shopName_txt = findViewById(R.id.shop_name_text_view); discount_txt = findViewById(R.id.discount); price_txt = findViewById(R.id.price); - progressBar = findViewById(R.id.progress_bar); add_to_basket_button = findViewById(R.id.add_to_basket_button); favourite_icon = findViewById(R.id.favorite_icon); - line = findViewById(R.id.line); total_txt = findViewById(R.id.total_text_view); countRating_txt = findViewById(R.id.count_rating_text_view); description_content_txt = findViewById(R.id.content_description_text_view); @@ -91,6 +90,8 @@ public class FoodDetailActivity extends AppCompatActivity { rating_button = findViewById(R.id.rating_button); content_view = findViewById(R.id.content_view); + popupDialog = PopupDialog.getInstance(this); + reviewAdapter = new ReviewAdapter(this); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, RecyclerView.VERTICAL, false); @@ -215,13 +216,14 @@ public class FoodDetailActivity extends AppCompatActivity { private void hideUI() { content_view.setVisibility(View.GONE); - progressBar.setVisibility(View.VISIBLE); + popupDialog.setStyle(Styles.PROGRESS).setProgressDialogTint(getResources().getColor(R.color.primaryColor, null)) + .setCancelable(false).showDialog(); } private void showUI() { content_view.setVisibility(View.VISIBLE); - progressBar.setVisibility(View.GONE); + popupDialog.dismissDialog(); } private void initData(){ 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 d45c023..882506c 100644 --- a/app/src/main/java/com/capstone/foodify/Activity/MainActivity.java +++ b/app/src/main/java/com/capstone/foodify/Activity/MainActivity.java @@ -3,6 +3,7 @@ package com.capstone.foodify.Activity; import android.annotation.SuppressLint; import android.os.Bundle; import android.view.MenuItem; +import android.widget.Toast; import androidx.appcompat.app.AppCompatDelegate; import androidx.core.splashscreen.SplashScreen; @@ -11,6 +12,7 @@ import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.viewpager2.widget.ViewPager2; +import com.capstone.foodify.Common; import com.capstone.foodify.R; import com.capstone.foodify.ViewPagerAdapter; import com.google.android.material.bottomnavigation.BottomNavigationView; diff --git a/app/src/main/java/com/capstone/foodify/Common.java b/app/src/main/java/com/capstone/foodify/Common.java index 2ca882c..e85ea04 100644 --- a/app/src/main/java/com/capstone/foodify/Common.java +++ b/app/src/main/java/com/capstone/foodify/Common.java @@ -1,10 +1,22 @@ package com.capstone.foodify; +import android.app.Activity; import android.content.Context; import android.content.res.AssetManager; import android.graphics.Typeface; +import android.net.ConnectivityManager; +import android.net.Network; +import android.net.NetworkCapabilities; +import android.net.NetworkInfo; +import android.os.Build; + +import androidx.annotation.NonNull; import com.capstone.foodify.Model.Basket.Basket; +import com.thecode.aestheticdialogs.AestheticDialog; +import com.thecode.aestheticdialogs.DialogStyle; +import com.thecode.aestheticdialogs.DialogType; +import com.thecode.aestheticdialogs.OnDialogClickListener; import java.text.NumberFormat; import java.util.ArrayList; @@ -27,4 +39,34 @@ public class Common { public static Typeface setFontOpenSans(AssetManager assetManager){ 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; + } + return false; + } + + public static void showErrorInternetConnectionNotification(Activity activity){ + new AestheticDialog.Builder(activity, DialogStyle.CONNECTIFY, DialogType.ERROR) + .setTitle("Lỗi kết nối mạng!") + .setMessage("Vui lòng kiểm tra kết nối và thử lại bạn nha!") + .setCancelable(false) + .setOnClickListener(new OnDialogClickListener() { + @Override + public void onClick(@NonNull AestheticDialog.Builder builder) { + activity.finish(); + System.exit(0); + } + }) + .show(); + } } 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 b4ea4e8..a180cfa 100644 --- a/app/src/main/java/com/capstone/foodify/Fragment/FavoriteFragment.java +++ b/app/src/main/java/com/capstone/foodify/Fragment/FavoriteFragment.java @@ -17,6 +17,7 @@ import android.view.ViewGroup; import android.widget.Toast; import com.capstone.foodify.API.FoodApi; +import com.capstone.foodify.Common; import com.capstone.foodify.ItemTouchHelperListener; import com.capstone.foodify.Model.Food.Food; import com.capstone.foodify.Model.Food.FoodFavoriteAdapter; @@ -81,7 +82,14 @@ public class FavoriteFragment extends Fragment implements ItemTouchHelperListene @Override public void onFailure(Call> call, Throwable t) { - Toast.makeText(getContext(), "Error: " + t, Toast.LENGTH_SHORT).show(); + //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()); + } } }); } 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 6ce4ff4..d21406b 100644 --- a/app/src/main/java/com/capstone/foodify/Fragment/HomeFragment.java +++ b/app/src/main/java/com/capstone/foodify/Fragment/HomeFragment.java @@ -1,16 +1,19 @@ package com.capstone.foodify.Fragment; import android.os.Bundle; +import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; +import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.capstone.foodify.API.FoodApi; +import com.capstone.foodify.Common; import com.capstone.foodify.Model.Food.Food; import com.capstone.foodify.Model.Menu.Menu; import com.capstone.foodify.Model.Menu.MenuAdapter; @@ -20,6 +23,10 @@ import com.capstone.foodify.R; import com.denzcoskun.imageslider.ImageSlider; import com.denzcoskun.imageslider.constants.ScaleTypes; import com.denzcoskun.imageslider.models.SlideModel; +import com.thecode.aestheticdialogs.AestheticDialog; +import com.thecode.aestheticdialogs.DialogStyle; +import com.thecode.aestheticdialogs.DialogType; +import com.thecode.aestheticdialogs.OnDialogClickListener; import java.util.ArrayList; import java.util.List; @@ -112,7 +119,14 @@ public class HomeFragment extends Fragment { @Override public void onFailure(Call> call, Throwable t) { - Toast.makeText(getContext(), "Lỗi" + t, Toast.LENGTH_LONG).show(); + //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()); + } } }); } @@ -132,7 +146,14 @@ public class HomeFragment extends Fragment { @Override public void onFailure(Call> call, Throwable t) { - Toast.makeText(getContext(), "Lỗi" + t, Toast.LENGTH_LONG).show(); + //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()); + } } }); } 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 a7aad3d..8b2a24b 100644 --- a/app/src/main/java/com/capstone/foodify/Fragment/SearchFragment.java +++ b/app/src/main/java/com/capstone/foodify/Fragment/SearchFragment.java @@ -19,6 +19,7 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.capstone.foodify.API.FoodApi; +import com.capstone.foodify.Common; import com.capstone.foodify.Model.Category.Category; import com.capstone.foodify.Model.Food.Food; import com.capstone.foodify.Model.Food.FoodSearchAdapter; @@ -183,7 +184,14 @@ public class SearchFragment extends Fragment { @Override public void onFailure(Call> call, Throwable t) { - Toast.makeText(getContext(), "Error: " + t , Toast.LENGTH_SHORT).show(); + //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()); + } } }); } @@ -198,7 +206,14 @@ public class SearchFragment extends Fragment { @Override public void onFailure(Call> call, Throwable t) { - Toast.makeText(getContext(), "Error: " + t, Toast.LENGTH_SHORT).show(); + //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()); + } } }); } @@ -212,7 +227,14 @@ public class SearchFragment extends Fragment { @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()); + } } }); }