package com.ambergleam.android.photogallery.util;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Handler;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import com.ambergleam.android.photogallery.BaseActivity;
import com.ambergleam.android.photogallery.R;
import com.ambergleam.android.photogallery.dialog.ConnectionDialogFragment;
public class ConnectionUtils {
private static final String TAG_CONNECTION_DIALOG = "ConnectionUtils.TAG_CONNECTION_DIALOG";
public static boolean isNetworkAvailable(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
return netInfo != null && netInfo.isConnectedOrConnecting();
}
public static void checkForConnection(final BaseActivity activity) {
if (!isNetworkAvailable(activity)) {
showNoConnectionDialog(activity);
} else {
hideNoConnectionDialog(activity);
}
}
public static void showNoConnectionDialog(@NonNull final BaseActivity activity) {
int delay = activity.getResources().getInteger(R.integer.connection_check_delay_ms);
new Handler().postDelayed(() -> {
if (activity.getSupportFragmentManager() == null) {
return;
}
if (!activity.hasWindowFocus()) {
return;
}
if (!isNetworkAvailable(activity)) {
Fragment existingDialogFragment = activity.getSupportFragmentManager().findFragmentByTag(TAG_CONNECTION_DIALOG);
if (existingDialogFragment != null) {
return;
}
ConnectionDialogFragment dialogFragment = ConnectionDialogFragment.newInstance();
dialogFragment.setCancelable(false);
FragmentTransaction transaction = activity.getSupportFragmentManager().beginTransaction();
transaction.add(dialogFragment, TAG_CONNECTION_DIALOG);
transaction.commit();
}
}, delay);
}
public static void hideNoConnectionDialog(final BaseActivity activity) {
FragmentManager fragmentManager = activity.getSupportFragmentManager();
if (fragmentManager == null) {
return;
}
Fragment fragment = fragmentManager.findFragmentByTag(TAG_CONNECTION_DIALOG);
if (fragment instanceof DialogFragment) {
((DialogFragment) fragment).dismiss();
}
}
}