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());
+ }
}
});
}