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">
|
||||
|
||||
<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.REQUEST_INSTALL_PACKAGES" />
|
||||
|
||||
|
|
|
@ -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())
|
||||
|
|
|
@ -69,6 +69,7 @@
|
|||
<string name="set_home_capsule">Choisir comme capsule d\'accueil</string>
|
||||
<string name="check_for_updates">Rechercher des nouvelles versions</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="runtime_cache_cleared">Cache d\'exécution vidé</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="check_for_updates">Check for updates</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="runtime_cache_cleared">Runtime cache cleared</string>
|
||||
<string name="show_inline_icons">Inline link icons</string>
|
||||
|
|
Loading…
Reference in New Issue