diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt index 68c00206d98..25e8a8322ae 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt +++ b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.kt @@ -225,6 +225,7 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), private var broadcastReceiver: BroadcastReceiver? = null private var isNetworkErrorOccurred = false private var snackbar: Snackbar? = null + private var hasShownOfflinePinsMessage = false private var view: View? = null private var scope: LifecycleCoroutineScope? = null private var presenter: NearbyParentFragmentPresenter? = null @@ -1291,12 +1292,14 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), snackbar!!.dismiss() snackbar = null } + hasShownOfflinePinsMessage = false } else { if (snackbar == null) { snackbar = Snackbar.make( view!!, fr.free.nrw.commons.R.string.no_internet, Snackbar.LENGTH_INDEFINITE ) + hasShownOfflinePinsMessage = false searchable = false setProgressBarVisibility(false) } @@ -1318,10 +1321,10 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(), if (!isNetworkErrorOccurred || snackbar == null) { return } - if (offlinePinsShown) { + // Avoid flickering between offline messages while panning; switch once per offline session. + if (offlinePinsShown && !hasShownOfflinePinsMessage) { snackbar!!.setText(fr.free.nrw.commons.R.string.nearby_showing_pins_offline) - } else { - snackbar!!.setText(fr.free.nrw.commons.R.string.no_internet) + hasShownOfflinePinsMessage = true } }