From 3f3de64705a00c271088f7b7527a4a9a4529a976 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 30 Aug 2025 08:45:45 +0200 Subject: [PATCH] Improved setup internet check --- .../java/eu/faircode/email/FragmentSetup.java | 38 ++++++++++++------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentSetup.java b/app/src/main/java/eu/faircode/email/FragmentSetup.java index 3b3d0df83e..0c992391e2 100644 --- a/app/src/main/java/eu/faircode/email/FragmentSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java @@ -910,6 +910,12 @@ public class FragmentSetup extends FragmentBase implements SharedPreferences.OnS return view; } + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + checkInternet.run(); + } + @Override public void onDestroyView() { PreferenceManager.getDefaultSharedPreferences(getContext()).unregisterOnSharedPreferenceChangeListener(this); @@ -1493,31 +1499,37 @@ public class FragmentSetup extends FragmentBase implements SharedPreferences.OnS } }; - private ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() { + private final ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() { @Override - public void onAvailable(Network network) { - getMainHandler().post(new Runnable() { - @Override - public void run() { - updateInternet(true); - } - }); + public void onAvailable(@NonNull Network network) { + check(); } @Override public void onLost(@NonNull Network network) { + check(); + } + + private void check() { getMainHandler().post(new Runnable() { @Override public void run() { - updateInternet(false); + if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) + checkInternet.run(); } }); } + }; - private void updateInternet(boolean available) { - if (!getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) - return; - tvNoInternet.setVisibility(available ? View.GONE : View.VISIBLE); + private final Runnable checkInternet = new Runnable() { + @Override + public void run() { + try { + ConnectionHelper.NetworkState state = ConnectionHelper.getNetworkState(getContext()); + tvNoInternet.setVisibility(state.isConnected() ? View.GONE : View.VISIBLE); + } catch (Throwable ex) { + Log.e(ex); + } } }; }