Fixed that if hideAccount changes also selectedAccounts have to be updated (e.g. a now hidden account should not be displayed and not be selected anymore)
This commit is contained in:
parent
ab9de8ebdb
commit
8687320ef3
|
@ -115,10 +115,11 @@ open class BankAccountSettingsDialog : SettingsDialogBase() {
|
||||||
override fun saveChanges() {
|
override fun saveChanges() {
|
||||||
account.userSetDisplayName = edtxtBankAccountName.text
|
account.userSetDisplayName = edtxtBankAccountName.text
|
||||||
|
|
||||||
|
val didHideAccountChange = account.hideAccount != swtchHideAccount.isChecked
|
||||||
account.hideAccount = swtchHideAccount.isChecked
|
account.hideAccount = swtchHideAccount.isChecked
|
||||||
account.includeInAutomaticAccountsUpdate = swtchIncludeInAutomaticAccountsUpdate.isChecked
|
account.includeInAutomaticAccountsUpdate = swtchIncludeInAutomaticAccountsUpdate.isChecked
|
||||||
|
|
||||||
presenter.accountUpdated(account)
|
presenter.accountUpdated(account, didHideAccountChange)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -117,8 +117,8 @@ open class BankSettingsDialog : SettingsDialogBase() {
|
||||||
oldItem.displayIndex = oldPosition
|
oldItem.displayIndex = oldPosition
|
||||||
newItem.displayIndex = newPosition
|
newItem.displayIndex = newPosition
|
||||||
|
|
||||||
presenter.accountUpdated(oldItem)
|
presenter.accountUpdated(oldItem, false)
|
||||||
presenter.accountUpdated(newItem)
|
presenter.accountUpdated(newItem, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -578,7 +578,11 @@ open class BankingPresenter(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun accountUpdated(account: TypedBankAccount) {
|
open fun accountUpdated(account: TypedBankAccount, didHideAccountChange: Boolean) {
|
||||||
|
if (didHideAccountChange) {
|
||||||
|
updateSelectedAccounts(account)
|
||||||
|
}
|
||||||
|
|
||||||
persistBankAsync(account.bank)
|
persistBankAsync(account.bank)
|
||||||
|
|
||||||
callBanksChangedListeners()
|
callBanksChangedListeners()
|
||||||
|
@ -969,6 +973,21 @@ open class BankingPresenter(
|
||||||
setSelectedAccounts(listOf(account))
|
setSelectedAccounts(listOf(account))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun updateSelectedAccounts(changedAccount: TypedBankAccount) {
|
||||||
|
if (areAllAccountSelected) {
|
||||||
|
selectedAllAccounts()
|
||||||
|
} else if (isSingleSelectedBank(changedAccount.bank as TypedBankData)) {
|
||||||
|
selectedBank(changedAccount.bank as TypedBankData)
|
||||||
|
} else if (isSingleSelectedAccount(changedAccount) && changedAccount.hideAccount) {
|
||||||
|
// if bank of this account has other non hidden accounts, then select this bank
|
||||||
|
if (changedAccount.bank.accounts.withoutHiddenOnes().isNotEmpty()) {
|
||||||
|
selectedBank(changedAccount.bank as TypedBankData)
|
||||||
|
} else { // otherwise select all accounts
|
||||||
|
selectedAllAccounts()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected open fun setSelectedAccounts(accounts: List<TypedBankAccount>) {
|
protected open fun setSelectedAccounts(accounts: List<TypedBankAccount>) {
|
||||||
this._selectedAccounts = ArrayList(accounts.withoutHiddenOnes()) // make a copy
|
this._selectedAccounts = ArrayList(accounts.withoutHiddenOnes()) // make a copy
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,6 @@ fun <T : IAccountTransaction> Iterable<T>.sortedByDate(): List<T> {
|
||||||
return this.sortedByDescending { it.valueDate.millisSinceEpoch }
|
return this.sortedByDescending { it.valueDate.millisSinceEpoch }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <T : TypedBankAccount> Iterable<T>.withoutHiddenOnes(): List<T> {
|
fun <T : IBankAccount<*>> Iterable<T>.withoutHiddenOnes(): List<T> {
|
||||||
return this.filter { it.hideAccount == false }
|
return this.filter { it.hideAccount == false }
|
||||||
}
|
}
|
|
@ -158,10 +158,11 @@ struct BankAccountSettingsDialog: View {
|
||||||
if hasUnsavedData {
|
if hasUnsavedData {
|
||||||
account.userSetDisplayName = displayName
|
account.userSetDisplayName = displayName
|
||||||
|
|
||||||
|
let didHideAccountChange = account.hideAccount != hideAccount
|
||||||
account.hideAccount = hideAccount
|
account.hideAccount = hideAccount
|
||||||
account.includeInAutomaticAccountsUpdate = includeInAutomaticAccountsUpdate
|
account.includeInAutomaticAccountsUpdate = includeInAutomaticAccountsUpdate
|
||||||
|
|
||||||
presenter.accountUpdated(account: account)
|
presenter.accountUpdated(account: account, didHideAccountChange: didHideAccountChange)
|
||||||
}
|
}
|
||||||
|
|
||||||
closeDialog()
|
closeDialog()
|
||||||
|
|
Loading…
Reference in New Issue