diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2f4a01c..3baacd8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,6 +3,7 @@ package="corewala.buran"> + diff --git a/app/src/main/java/corewala/buran/ui/GemActivity.kt b/app/src/main/java/corewala/buran/ui/GemActivity.kt index e22c43a..acc35ff 100644 --- a/app/src/main/java/corewala/buran/ui/GemActivity.kt +++ b/app/src/main/java/corewala/buran/ui/GemActivity.kt @@ -6,6 +6,8 @@ import android.content.Intent import android.content.SharedPreferences import android.graphics.Color import android.graphics.drawable.ColorDrawable +import android.net.ConnectivityManager +import android.net.NetworkCapabilities import android.net.Uri import android.os.Bundle import android.view.LayoutInflater @@ -47,6 +49,7 @@ import java.io.FileInputStream import java.io.FileOutputStream import java.net.URI + const val CREATE_IMAGE_FILE_REQ = 628 const val CREATE_BINARY_FILE_REQ = 630 const val CREATE_BOOKMARK_EXPORT_FILE_REQ = 631 @@ -71,6 +74,8 @@ class GemActivity : AppCompatActivity() { override fun openBrowser(address: String) = openWebLink(address) }) + private var internetStatus: Boolean = false + lateinit var adapter: AbstractGemtextAdapter private val onLink: (link: URI, longTap: Boolean, adapterPosition: Int) -> Unit = { uri, longTap, position: Int -> @@ -136,41 +141,48 @@ class GemActivity : AppCompatActivity() { binding.gemtextRecycler.adapter = adapter - if(intent.data == null){ - model.initialise( - home = prefs.getString( - "home_capsule", - Buran.DEFAULT_HOME_CAPSULE - ) ?: Buran.DEFAULT_HOME_CAPSULE, - gemini = Datasource.factory(this, db.history()), - db = db, - onState = this::handleState - ) - }else{ - model.initialise( - home = intent.data.toString(), - gemini = Datasource.factory(this, db.history()), - db = db, - onState = this::handleState - ) - } + internetStatus = getInternetStatus() - if(PreferenceManager.getDefaultSharedPreferences(this).getBoolean( - "check_for_updates", - false - )) { - val updates = BuranUpdates() - val latestVersion = updates.getLatestVersion() - - if (latestVersion == BuildConfig.VERSION_NAME){ - println("No new version available") - } else { - println("New version available") - - Snackbar.make(binding.root, getString(R.string.new_version_available), Snackbar.LENGTH_LONG).setAction(getString(R.string.update)) { - updates.installUpdate(this, latestVersion) - }.show() + if(internetStatus){ + if(intent.data == null){ + model.initialise( + home = prefs.getString( + "home_capsule", + Buran.DEFAULT_HOME_CAPSULE + ) ?: Buran.DEFAULT_HOME_CAPSULE, + gemini = Datasource.factory(this, db.history()), + db = db, + onState = this::handleState + ) + }else{ + model.initialise( + home = intent.data.toString(), + gemini = Datasource.factory(this, db.history()), + db = db, + onState = this::handleState + ) } + + if(PreferenceManager.getDefaultSharedPreferences(this).getBoolean( + "check_for_updates", + false + )) { + val updates = BuranUpdates() + val latestVersion = updates.getLatestVersion() + + if (latestVersion == BuildConfig.VERSION_NAME){ + println("No new version available") + } else { + println("New version available") + + Snackbar.make(binding.root, getString(R.string.new_version_available), Snackbar.LENGTH_LONG).setAction(getString(R.string.update)) { + updates.installUpdate(this, latestVersion) + }.show() + } + } + }else{ + loadingView(false) + Snackbar.make(binding.root, getString(R.string.no_internet), Snackbar.LENGTH_LONG).show() } binding.addressEdit.setOnEditorActionListener { _, actionId, _ -> @@ -327,7 +339,9 @@ class GemActivity : AppCompatActivity() { ) adapter.inlineImages(showInlineImages) - model.invalidateDatasource() + if(internetStatus){ + model.invalidateDatasource() + } } private fun hideClientCertShield(){ @@ -606,6 +620,25 @@ class GemActivity : AppCompatActivity() { if(visible) binding.appBar.setExpanded(true) } + private fun getInternetStatus(): Boolean { + val connectivityManager = this.getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager + if(connectivityManager != null) { + val capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork) + if (capabilities != null) { + println("Internet access found") + if(capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) { + return true + }else if(capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)) { + return true + }else if(capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) { + return true + } + } + } + println("No internet access found") + return false + } + override fun onBackPressed() { if (omniTerm.canGoBack()){ model.request(omniTerm.goBack()) diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index b3159dc..d32fe14 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -69,6 +69,7 @@ Choisir comme capsule d\'accueil Rechercher des nouvelles versions Nouvelle version disponible + Aucun accès internet Historique vidé Cache d\'exécution vidé Icônes de lien en ligne diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3f3e315..95ff2dc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -69,6 +69,7 @@ Set home capsule Check for updates New version available + No internet access History cleared Runtime cache cleared Inline link icons