Extracted clearUserApprovedDecoupledTanCallbacks() and clearing callbacks also when user did not enter TAN or requested to change TAN method or medium to avoid memory leaks

This commit is contained in:
dankito 2024-09-08 18:14:35 +02:00
parent cb34c86665
commit 59b8213163
1 changed files with 11 additions and 1 deletions

View File

@ -32,18 +32,24 @@ open class TanChallenge(
this.enterTanResult = EnterTanResult(null, true, responseAfterApprovingDecoupledTan) this.enterTanResult = EnterTanResult(null, true, responseAfterApprovingDecoupledTan)
userApprovedDecoupledTanCallbacks.forEach { it.invoke() } userApprovedDecoupledTanCallbacks.forEach { it.invoke() }
userApprovedDecoupledTanCallbacks.clear() clearUserApprovedDecoupledTanCallbacks()
} }
fun userDidNotEnterTan() { fun userDidNotEnterTan() {
clearUserApprovedDecoupledTanCallbacks()
this.enterTanResult = EnterTanResult(null) this.enterTanResult = EnterTanResult(null)
} }
fun userAsksToChangeTanMethod(changeTanMethodTo: TanMethod) { fun userAsksToChangeTanMethod(changeTanMethodTo: TanMethod) {
clearUserApprovedDecoupledTanCallbacks()
this.enterTanResult = EnterTanResult(null, changeTanMethodTo = changeTanMethodTo) this.enterTanResult = EnterTanResult(null, changeTanMethodTo = changeTanMethodTo)
} }
fun userAsksToChangeTanMedium(changeTanMediumTo: TanMedium, changeTanMediumResultCallback: ((FinTsClientResponse) -> Unit)?) { fun userAsksToChangeTanMedium(changeTanMediumTo: TanMedium, changeTanMediumResultCallback: ((FinTsClientResponse) -> Unit)?) {
clearUserApprovedDecoupledTanCallbacks()
this.enterTanResult = EnterTanResult(null, changeTanMediumTo = changeTanMediumTo, changeTanMediumResultCallback = changeTanMediumResultCallback) this.enterTanResult = EnterTanResult(null, changeTanMediumTo = changeTanMediumTo, changeTanMediumResultCallback = changeTanMediumResultCallback)
} }
@ -56,6 +62,10 @@ open class TanChallenge(
} }
} }
protected open fun clearUserApprovedDecoupledTanCallbacks() {
userApprovedDecoupledTanCallbacks.clear()
}
override fun toString(): String { override fun toString(): String {
return "$tanMethod (medium: $tanMediaIdentifier): $messageToShowToUser" return "$tanMethod (medium: $tanMediaIdentifier): $messageToShowToUser"