#2361 improved file name storing

This commit is contained in:
gouri-panda 2020-09-16 15:50:18 +05:30
parent e797930fcb
commit 01e2e73876

View File

@ -158,34 +158,27 @@ open class KiwixWebView @SuppressLint("SetJavaScriptEnabled") constructor(
val url = msg.data["url"] as? String val url = msg.data["url"] as? String
val src = msg.data["src"] as? String val src = msg.data["src"] as? String
if (url != null || src != null) { if (url != null || src != null) {
var fileName = getDecodedFileName(url, src) val fileName = getDecodedFileName(url, src)
val dotIndex = fileName.lastIndexOf('.')
var root = var root =
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
if (instance.externalMediaDirs.isNotEmpty()) { if (instance.externalMediaDirs.isNotEmpty()) {
root = instance.externalMediaDirs[0] root = instance.externalMediaDirs[0]
} }
var storageDir = File(root, fileName) val fileToSave = sequence {
sequence { yield(File(root, fileName))
yieldAll(generateSequence(1) { it + 1 }) yieldAll(generateSequence(1) { it + 1 }.map {
}.map { File(
fileName = fileName.replace(".", "_$it") root,
storageDir = File(root, fileName) fileName.replace(".", "_$it.")
return@map storageDir )
})
}.first { !it.exists() } }.first { !it.exists() }
// generateSequence(1) { it + 1 }
// .map {
// newUrl = fileName.substring(0, dotIndex) + "_" + it + fileName.substring(dotIndex)
// storageDir = File(root, newUrl)
// return@map storageDir
// }
// .first { !it.exists() }
val source = Uri.parse(src) val source = Uri.parse(src)
try { try {
zimReaderContainer.load("$source").data.use { inputStream -> zimReaderContainer.load("$source").data.use { inputStream ->
storageDir.outputStream().use { inputStream.copyTo(it) } fileToSave.outputStream().use { inputStream.copyTo(it) }
} }
instance.toast(instance.getString(R.string.save_media_saved, fileName)) instance.toast(instance.getString(R.string.save_media_saved, fileToSave.name))
} catch (e: IOException) { } catch (e: IOException) {
Log.w("kiwix", "Couldn't save image", e) Log.w("kiwix", "Couldn't save image", e)
instance.toast(R.string.save_media_error) instance.toast(R.string.save_media_error)