From fc24e63319e948facce477f659b301ef1fab3436 Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 20 Feb 2025 17:29:04 +0100 Subject: [PATCH] Fix #1120 - Display a message when clicking a link without Internet connection --- .../main/java/app/fedilab/android/BaseMainActivity.java | 7 ++++--- .../java/app/fedilab/android/mastodon/helper/Helper.java | 5 +++++ app/src/main/res/values/strings.xml | 1 + 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/BaseMainActivity.java b/app/src/main/java/app/fedilab/android/BaseMainActivity.java index 3a7b5b73..e0a1dbb6 100644 --- a/app/src/main/java/app/fedilab/android/BaseMainActivity.java +++ b/app/src/main/java/app/fedilab/android/BaseMainActivity.java @@ -22,6 +22,7 @@ import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_ID; import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_INSTANCE; import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_SOFTWARE; import static app.fedilab.android.mastodon.helper.Helper.PREF_USER_TOKEN; +import static app.fedilab.android.mastodon.helper.Helper.TAG; import static app.fedilab.android.mastodon.helper.Helper.displayReleaseNotesIfNeeded; import static app.fedilab.android.mastodon.helper.ThemeHelper.fetchAccentColor; import static app.fedilab.android.mastodon.ui.drawer.StatusAdapter.sendAction; @@ -1372,6 +1373,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt filterFetched = false; networkStateReceiver = new NetworkStateReceiver(); networkStateReceiver.addListener(this); + registerReceiver(networkStateReceiver, new IntentFilter(android.net.ConnectivityManager.CONNECTIVITY_ACTION)); binding = ActivityMainBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); setSupportActionBar(binding.toolbar); @@ -1944,10 +1946,9 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt } if (networkStateReceiver != null) { try { + networkStateReceiver.removeListener(this); unregisterReceiver(networkStateReceiver); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } + } catch (Exception ignored) {} } SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(BaseMainActivity.this); boolean clearCacheExit = sharedpreferences.getBoolean(getString(R.string.SET_CLEAR_CACHE_EXIT), false); diff --git a/app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java b/app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java index 04eb9070..025f5f8e 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java +++ b/app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java @@ -15,6 +15,7 @@ package app.fedilab.android.mastodon.helper; * see . */ import static android.content.Context.DOWNLOAD_SERVICE; +import static app.fedilab.android.BaseMainActivity.networkAvailable; import static app.fedilab.android.mastodon.activities.BaseActivity.currentThemeId; import static app.fedilab.android.mastodon.helper.LogoHelper.getNotificationIcon; import static app.fedilab.android.mastodon.helper.ThemeHelper.fetchAccentColor; @@ -684,6 +685,10 @@ public class Helper { if (url == null) { return; } + if(networkAvailable == BaseMainActivity.status.DISCONNECTED){ + Toasty.warning(context, context.getString(R.string.toast_error_internet), Toast.LENGTH_LONG).show(); + return; + } SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context); boolean customTab = sharedpreferences.getBoolean(context.getString(R.string.SET_CUSTOM_TABS), true); if (customTab) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c3f604a7..63f0a810 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -197,6 +197,7 @@ The message was added to your bookmarks! The message was removed from your bookmarks! Oops ! An error occurred! + There is no Internet connection! An error occurred! The instance did not return an authorisation code! The instance domain does not seem to be valid! An error occurred while switching between accounts!