mirror of https://github.com/Corewala/Buran
Fixed instant crash when internet is unavailable
This commit is contained in:
parent
3661c134c4
commit
791fabca74
|
@ -3,6 +3,7 @@
|
||||||
package="corewala.buran">
|
package="corewala.buran">
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,8 @@ import android.content.Intent
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.graphics.drawable.ColorDrawable
|
import android.graphics.drawable.ColorDrawable
|
||||||
|
import android.net.ConnectivityManager
|
||||||
|
import android.net.NetworkCapabilities
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
|
@ -47,6 +49,7 @@ import java.io.FileInputStream
|
||||||
import java.io.FileOutputStream
|
import java.io.FileOutputStream
|
||||||
import java.net.URI
|
import java.net.URI
|
||||||
|
|
||||||
|
|
||||||
const val CREATE_IMAGE_FILE_REQ = 628
|
const val CREATE_IMAGE_FILE_REQ = 628
|
||||||
const val CREATE_BINARY_FILE_REQ = 630
|
const val CREATE_BINARY_FILE_REQ = 630
|
||||||
const val CREATE_BOOKMARK_EXPORT_FILE_REQ = 631
|
const val CREATE_BOOKMARK_EXPORT_FILE_REQ = 631
|
||||||
|
@ -71,6 +74,8 @@ class GemActivity : AppCompatActivity() {
|
||||||
override fun openBrowser(address: String) = openWebLink(address)
|
override fun openBrowser(address: String) = openWebLink(address)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
private var internetStatus: Boolean = false
|
||||||
|
|
||||||
lateinit var adapter: AbstractGemtextAdapter
|
lateinit var adapter: AbstractGemtextAdapter
|
||||||
|
|
||||||
private val onLink: (link: URI, longTap: Boolean, adapterPosition: Int) -> Unit = { uri, longTap, position: Int ->
|
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
|
binding.gemtextRecycler.adapter = adapter
|
||||||
|
|
||||||
if(intent.data == null){
|
internetStatus = getInternetStatus()
|
||||||
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(
|
if(internetStatus){
|
||||||
"check_for_updates",
|
if(intent.data == null){
|
||||||
false
|
model.initialise(
|
||||||
)) {
|
home = prefs.getString(
|
||||||
val updates = BuranUpdates()
|
"home_capsule",
|
||||||
val latestVersion = updates.getLatestVersion()
|
Buran.DEFAULT_HOME_CAPSULE
|
||||||
|
) ?: Buran.DEFAULT_HOME_CAPSULE,
|
||||||
if (latestVersion == BuildConfig.VERSION_NAME){
|
gemini = Datasource.factory(this, db.history()),
|
||||||
println("No new version available")
|
db = db,
|
||||||
} else {
|
onState = this::handleState
|
||||||
println("New version available")
|
)
|
||||||
|
}else{
|
||||||
Snackbar.make(binding.root, getString(R.string.new_version_available), Snackbar.LENGTH_LONG).setAction(getString(R.string.update)) {
|
model.initialise(
|
||||||
updates.installUpdate(this, latestVersion)
|
home = intent.data.toString(),
|
||||||
}.show()
|
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, _ ->
|
binding.addressEdit.setOnEditorActionListener { _, actionId, _ ->
|
||||||
|
@ -327,7 +339,9 @@ class GemActivity : AppCompatActivity() {
|
||||||
)
|
)
|
||||||
adapter.inlineImages(showInlineImages)
|
adapter.inlineImages(showInlineImages)
|
||||||
|
|
||||||
model.invalidateDatasource()
|
if(internetStatus){
|
||||||
|
model.invalidateDatasource()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun hideClientCertShield(){
|
private fun hideClientCertShield(){
|
||||||
|
@ -606,6 +620,25 @@ class GemActivity : AppCompatActivity() {
|
||||||
if(visible) binding.appBar.setExpanded(true)
|
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() {
|
override fun onBackPressed() {
|
||||||
if (omniTerm.canGoBack()){
|
if (omniTerm.canGoBack()){
|
||||||
model.request(omniTerm.goBack())
|
model.request(omniTerm.goBack())
|
||||||
|
|
|
@ -69,6 +69,7 @@
|
||||||
<string name="set_home_capsule">Choisir comme capsule d\'accueil</string>
|
<string name="set_home_capsule">Choisir comme capsule d\'accueil</string>
|
||||||
<string name="check_for_updates">Rechercher des nouvelles versions</string>
|
<string name="check_for_updates">Rechercher des nouvelles versions</string>
|
||||||
<string name="new_version_available">Nouvelle version disponible</string>
|
<string name="new_version_available">Nouvelle version disponible</string>
|
||||||
|
<string name="no_internet">Aucun accès internet</string>
|
||||||
<string name="history_cleared">Historique vidé</string>
|
<string name="history_cleared">Historique vidé</string>
|
||||||
<string name="runtime_cache_cleared">Cache d\'exécution vidé</string>
|
<string name="runtime_cache_cleared">Cache d\'exécution vidé</string>
|
||||||
<string name="show_inline_icons">Icônes de lien en ligne</string>
|
<string name="show_inline_icons">Icônes de lien en ligne</string>
|
||||||
|
|
|
@ -69,6 +69,7 @@
|
||||||
<string name="set_home_capsule">Set home capsule</string>
|
<string name="set_home_capsule">Set home capsule</string>
|
||||||
<string name="check_for_updates">Check for updates</string>
|
<string name="check_for_updates">Check for updates</string>
|
||||||
<string name="new_version_available">New version available</string>
|
<string name="new_version_available">New version available</string>
|
||||||
|
<string name="no_internet">No internet access</string>
|
||||||
<string name="history_cleared">History cleared</string>
|
<string name="history_cleared">History cleared</string>
|
||||||
<string name="runtime_cache_cleared">Runtime cache cleared</string>
|
<string name="runtime_cache_cleared">Runtime cache cleared</string>
|
||||||
<string name="show_inline_icons">Inline link icons</string>
|
<string name="show_inline_icons">Inline link icons</string>
|
||||||
|
|
Loading…
Reference in New Issue