Add notification when lost internet

This commit is contained in:
Nezumi
2023-03-08 16:38:18 +07:00
parent 400ed79536
commit 0e0965209d
9 changed files with 118 additions and 17 deletions
+2
View File
@@ -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'
}
+1
View File
@@ -4,6 +4,7 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
@@ -1,18 +1,17 @@
package com.capstone.foodify.Activity;
import androidx.appcompat.app.AppCompatActivity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import androidx.appcompat.app.AppCompatActivity;
import com.capstone.foodify.Common;
import com.capstone.foodify.R;
import com.google.android.material.textfield.TextInputLayout;
@@ -28,6 +27,7 @@ public class AccountAndProfileActivity extends AppCompatActivity {
EditText edt_birthday;
final Calendar myCalendar= Calendar.getInstance();
LinearLayout change_password;
Button update_button;
ImageView back_image;
@@ -54,7 +54,6 @@ public class AccountAndProfileActivity extends AppCompatActivity {
}
});
}
private void initComponent() {
@@ -66,6 +65,8 @@ public class AccountAndProfileActivity extends AppCompatActivity {
textInput_birthDay = (TextInputLayout) findViewById(R.id.textInput_birthDay);
change_password = (LinearLayout) findViewById(R.id.change_password);
update_button = (Button) findViewById(R.id.updated_button);
back_image = (ImageView) findViewById(R.id.back_image);
edt_birthday = (EditText) findViewById(R.id.edt_birthDay);
@@ -37,6 +37,8 @@ import com.denzcoskun.imageslider.models.SlideModel;
import com.mcdev.quantitizerlibrary.AnimationStyle;
import com.mcdev.quantitizerlibrary.HorizontalQuantitizer;
import com.mcdev.quantitizerlibrary.QuantitizerListener;
import com.saadahmedsoft.popupdialog.PopupDialog;
import com.saadahmedsoft.popupdialog.Styles;
import com.willy.ratingbar.RotationRatingBar;
import java.text.NumberFormat;
@@ -58,13 +60,12 @@ public class FoodDetailActivity extends AppCompatActivity {
private static final List<String> 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(){
@@ -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;
@@ -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();
}
}
@@ -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<List<Food>> 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());
}
}
});
}
@@ -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<List<Food>> 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<List<Food>> 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());
}
}
});
}
@@ -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<List<Category>> 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<List<Food>> 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<List<Food>> 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());
}
}
});
}