Fixed bug that if two bank icons have the same file name they overwrite each other
This commit is contained in:
parent
3d73289649
commit
68e11d08fc
|
@ -181,7 +181,7 @@ open class BankingPresenter(
|
||||||
|
|
||||||
try {
|
try {
|
||||||
bankIconFinder.findIconForBank(bank.name)?.let { bankIconUrl ->
|
bankIconFinder.findIconForBank(bank.name)?.let { bankIconUrl ->
|
||||||
val bankIconFile = saveBankIconToDisk(bankIconUrl)
|
val bankIconFile = saveBankIconToDisk(bank, bankIconUrl)
|
||||||
|
|
||||||
bank.iconUrl = "file://" + bankIconFile.absolutePath // without 'file://' Android will not find it
|
bank.iconUrl = "file://" + bankIconFile.absolutePath // without 'file://' Android will not find it
|
||||||
|
|
||||||
|
@ -194,15 +194,12 @@ open class BankingPresenter(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun saveBankIconToDisk(bankIconUrl: String): File {
|
protected open fun saveBankIconToDisk(bank: Bank, bankIconUrl: String): File {
|
||||||
val bankIconsDir = File(dataFolder, "bank_icons")
|
val bankIconsDir = File(dataFolder, "bank_icons")
|
||||||
bankIconsDir.mkdirs()
|
bankIconsDir.mkdirs()
|
||||||
|
|
||||||
var iconFilename = File(bankIconUrl).name
|
val extension = getIconFileExtension(bankIconUrl)
|
||||||
if (iconFilename.contains('?')) {
|
val bankIconFile = File(bankIconsDir, bank.bankCode + if (extension != null) (".$extension") else "")
|
||||||
iconFilename = iconFilename.substring(0, iconFilename.indexOf('?'))
|
|
||||||
}
|
|
||||||
val bankIconFile = File(bankIconsDir, URLEncoder.encode(iconFilename, Charsets.US_ASCII.name()))
|
|
||||||
|
|
||||||
URL(bankIconUrl).openConnection().getInputStream().buffered().use { iconInputStream ->
|
URL(bankIconUrl).openConnection().getInputStream().buffered().use { iconInputStream ->
|
||||||
FileOutputStream(bankIconFile).use { fileOutputStream ->
|
FileOutputStream(bankIconFile).use { fileOutputStream ->
|
||||||
|
@ -213,6 +210,24 @@ open class BankingPresenter(
|
||||||
return bankIconFile
|
return bankIconFile
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected open fun getIconFileExtension(bankIconUrl: String): String? {
|
||||||
|
try {
|
||||||
|
var iconFilename = File(bankIconUrl).name
|
||||||
|
if (iconFilename.contains('?')) {
|
||||||
|
iconFilename = iconFilename.substring(0, iconFilename.indexOf('?'))
|
||||||
|
}
|
||||||
|
|
||||||
|
val extension = File(iconFilename).extension
|
||||||
|
if (extension.isNotBlank()) {
|
||||||
|
return extension
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
log.info("Could not get icon file extension from url '$bankIconUrl'", e)
|
||||||
|
}
|
||||||
|
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
open fun deleteAccount(account: Account) {
|
open fun deleteAccount(account: Account) {
|
||||||
val wasSelected = isSingleSelectedAccount(account) or // either account or one of its bank accounts is currently selected
|
val wasSelected = isSingleSelectedAccount(account) or // either account or one of its bank accounts is currently selected
|
||||||
|
|
Loading…
Reference in New Issue