save status display

check for URI existence before read file. Maybe this helps when content
provider is not ready onResume
hauntED
yova 3 months ago
parent 9f02934faf
commit 818347427e

@ -16,7 +16,6 @@ import android.provider.OpenableColumns
import android.util.Log
import android.view.Menu
import android.view.MenuItem
import android.view.Window
import android.view.WindowInsets
import android.view.WindowManager
import android.webkit.ConsoleMessage
@ -67,8 +66,8 @@ class MainActivity : AppCompatActivity() {
{
className: "editor-statusbar-left",
onUpdate: (el) => {
el.innerHTML = "<i class=\"fa fa-circle\"></i>"
}
el.innerHTML = saveStatus()
}
},
{
className: "displayName",
@ -953,7 +952,6 @@ class MainActivity : AppCompatActivity() {
selectFileForSaveAs()
return
}
catch (e: Exception) {
Log.d(javaClass.simpleName, "Problem with accessing file\n${e.stackTraceToString()}")
this.runOnUiThread(
@ -969,8 +967,19 @@ class MainActivity : AppCompatActivity() {
}
try {
this. runOnUiThread({
this.runOnUiThread({
webView.evaluateJavascript("getValue();") {
if (it == "") {
return@evaluateJavascript
} else if (it == "null") {
Toast.makeText(
this,
"Problem with file buffer. Please reopen manually.",
Toast.LENGTH_LONG
).show()
openFile()
return@evaluateJavascript
}
mdeValue =
metaData.toString() + URLDecoder.decode(it.removeSurrounding("\""))
if (mdeValue.length.toLong() == textFile.statSize) {
@ -985,7 +994,10 @@ class MainActivity : AppCompatActivity() {
Log.d(javaClass.simpleName, "File saved: ${thisFileUri}")
textFile.close()
this@MainActivity.runOnUiThread {
webView.evaluateJavascript("easyMDE.codemirror.doc.markClean();", {})
webView.evaluateJavascript(
"easyMDE.codemirror.doc.markClean();" +
"easyMDE.updateStatusBar(\"editor-statusbar-left\",saveStatus());"
, {})
}
}
})
@ -1037,6 +1049,13 @@ class MainActivity : AppCompatActivity() {
}
}
fun checkURIResource(context: Context, uri: Uri?): Boolean {
val cursor = context.contentResolver.query(uri!!, null, null, null, null)
val doesExist = cursor != null && cursor.moveToFirst()
cursor?.close()
return doesExist
}
@Throws(IOException::class)
private fun readFile(uri: Uri) {
//TODO: Which permissions are really needed?
@ -1068,6 +1087,19 @@ class MainActivity : AppCompatActivity() {
CoroutineScope(Dispatchers.Main).launch {
withContext(Dispatchers.IO) {
try {
if (!checkURIResource(applicationContext, uri)) {
Log.d(javaClass.simpleName, "URI unavailable")
this@MainActivity.runOnUiThread({
Toast.makeText(
this@MainActivity,
"URI check failed\n" +
"Better open from another storage location\n" ,
Toast.LENGTH_LONG
).show()
})
thisFileUri = null
return@withContext
}
contentResolver.openInputStream(uri)?.use { inputStream ->
BufferedReader(InputStreamReader(inputStream)).use { reader ->
var i = ""
@ -1096,8 +1128,10 @@ class MainActivity : AppCompatActivity() {
this@MainActivity.runOnUiThread({
Toast.makeText(
this@MainActivity,
"File not found during reading.\n$e",
Toast.LENGTH_LONG
"File not found during reading.\n" +
"Current Buffer is not connected to any file now.\n" +
"Save with other file name or open another.",
Toast.LENGTH_LONG
).show()
})
thisFileUri = null
@ -1136,6 +1170,7 @@ class MainActivity : AppCompatActivity() {
val script = "if (typeof easyMDE !== 'undefined') {" +
"easyMDE.codemirror.doc.setValue(`${mdeValue}`);" +
"easyMDE.codemirror.doc.markClean();" +
"easyMDE.updateStatusBar(\"editor-statusbar-left\",saveStatus());" +
"easyMDE.codemirror.focus();" +
"easyMDE.codemirror.doc.setCursor(JSON.parse(`${metaData.cursor}`));" +
"pasteText();" +
@ -1145,7 +1180,6 @@ class MainActivity : AppCompatActivity() {
webView.evaluateJavascript(script, {
thisFileUri = uri
Log.d(javaClass.simpleName,"File read: ${thisFileUri}")
saveFile()
})
webView.requestFocus()
})
@ -1154,6 +1188,7 @@ class MainActivity : AppCompatActivity() {
}
private fun saveMetaToSharedPrefs() {
if (thisFileUri == null) return
Log.d(javaClass.simpleName, "saving to shared prefs cursor: ${metaData.cursor} in file: ${thisFileUri}")
getSharedPreferences("prefs", Context.MODE_PRIVATE)
.edit().apply {
@ -1186,7 +1221,6 @@ class MainActivity : AppCompatActivity() {
override fun onPause() {
super.onPause()
/*outState.putString("test", "onSaveInstanceState-String")*/
saveFile()
webView.evaluateJavascript("easyMDE.codemirror.doc.getCursor();") {
metaData.cursor=it
@ -1198,11 +1232,6 @@ class MainActivity : AppCompatActivity() {
override protected fun onRestoreInstanceState(savedInstanceState: Bundle) {
super.onRestoreInstanceState(savedInstanceState)
/* findViewById<TextView>(R.id.edittext_lifecycle).text = savedInstanceState.getString("test")*/
/*webView.evaluateJavascript("getValue();", ValueCallback<String>() {
saveFile(it)
})*/
Log.i(javaClass.simpleName, "\"onRestoreInstanceState\" durchlaufen")
}
}

@ -12,7 +12,9 @@ class mdMeta {
var ID: String? = null
var updatedAt: String? = null
var cursor: String = "{ line: 0, ch: 0, sticky: null }"
get() =
if (field.equals("null")) "{ line: 0, ch: 0, sticky: null }"
else field
fun put(key: String, value: String) {
metaData.put(key, value)

@ -75,3 +75,9 @@ function toggleTheme() {
if (i>themes.length-1) i=0
}
function saveStatus() {
if (typeof easyMDE === 'undefined') return ''
else if (easyMDE.codemirror.doc.isClean()) return '*'
return ''
}

Loading…
Cancel
Save