#2361 used sequence method

This commit is contained in:
gouri-panda 2020-09-15 17:17:07 +05:30
parent 6572502778
commit e797930fcb

View File

@ -151,14 +151,14 @@ open class KiwixWebView @SuppressLint("SetJavaScriptEnabled") constructor(
url?.substringAfterLast("/", "") url?.substringAfterLast("/", "")
?.takeIf { it.contains(".") } ?.takeIf { it.contains(".") }
?: src?.substringAfterLast("/", "") ?: src?.substringAfterLast("/", "")
?.substringAfterLast("%3A", "") ?: "" ?.substringAfterLast("%3A") ?: ""
@SuppressWarnings("NestedBlockDepth") @SuppressWarnings("NestedBlockDepth")
override fun handleMessage(msg: Message) { override fun handleMessage(msg: Message) {
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) {
val fileName = getDecodedFileName(url, src) var fileName = getDecodedFileName(url, src)
val dotIndex = fileName.lastIndexOf('.') val dotIndex = fileName.lastIndexOf('.')
var root = var root =
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
@ -166,19 +166,26 @@ open class KiwixWebView @SuppressLint("SetJavaScriptEnabled") constructor(
root = instance.externalMediaDirs[0] root = instance.externalMediaDirs[0]
} }
var storageDir = File(root, fileName) var storageDir = File(root, fileName)
var newUrl = fileName sequence {
var i = 2 yieldAll(generateSequence(1) { it + 1 })
while (storageDir.exists()) { }.map {
newUrl = fileName.substring(0, dotIndex) + "_" + i + fileName.substring(dotIndex) fileName = fileName.replace(".", "_$it")
storageDir = File(root, newUrl) storageDir = File(root, fileName)
i++ return@map storageDir
} }.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) } storageDir.outputStream().use { inputStream.copyTo(it) }
} }
instance.toast(instance.getString(R.string.save_media_saved, newUrl)) instance.toast(instance.getString(R.string.save_media_saved, fileName))
} 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)