Fixed that if lastCreatedMesssage is a DialogInit message, that we don't sent it again as we just initialized a new dialog with initDialogWithStrongCustomerAuthentication()

This commit is contained in:
dankito 2024-10-15 21:53:02 +02:00
parent df692ea222
commit 684b3fb40e
2 changed files with 10 additions and 1 deletions

View file

@ -590,7 +590,8 @@ Log.info { "Terminating waiting for TAN input" } // TODO: remove again
val initDialogResponse = initDialogWithStrongCustomerAuthentication(context)
if (initDialogResponse.successful == false) {
// if lastCreatedMessage was a dialog init message, there's no need to send this message again, we just initialized a new dialog in initDialogWithStrongCustomerAuthentication()
if (initDialogResponse.successful == false || lastCreatedMessage.isDialogInitMessage()) {
return initDialogResponse
} else {
val newMessage = messageBuilder.rebuildMessage(context, lastCreatedMessage)

View file

@ -1,6 +1,8 @@
package net.codinux.banking.fints.messages
import net.codinux.banking.fints.messages.datenelementgruppen.implementierte.Segmentkopf
import net.codinux.banking.fints.messages.segmente.Segment
import net.codinux.banking.fints.messages.segmente.implementierte.Verarbeitungsvorbereitung
import net.codinux.banking.fints.messages.segmente.implementierte.ZweiSchrittTanEinreichung
@ -32,4 +34,10 @@ open class MessageBuilderResult(
&& messageBodySegments.first() is ZweiSchrittTanEinreichung
}
open fun isDialogInitMessage(): Boolean =
messageBodySegments.any { it is Verarbeitungsvorbereitung }
override fun toString() = "${messageBodySegments.joinToString { (it.dataElementsAndGroups.firstOrNull() as? Segmentkopf)?.let { "${it.identifier}:${it.segmentVersion}" } ?: "<No Segment header>" } }}"
}