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