diff --git a/fints4k/src/commonMain/kotlin/net/codinux/banking/fints/FinTsJobExecutor.kt b/fints4k/src/commonMain/kotlin/net/codinux/banking/fints/FinTsJobExecutor.kt index 2c71fb96..213aaf60 100644 --- a/fints4k/src/commonMain/kotlin/net/codinux/banking/fints/FinTsJobExecutor.kt +++ b/fints4k/src/commonMain/kotlin/net/codinux/banking/fints/FinTsJobExecutor.kt @@ -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) diff --git a/fints4k/src/commonMain/kotlin/net/codinux/banking/fints/messages/MessageBuilderResult.kt b/fints4k/src/commonMain/kotlin/net/codinux/banking/fints/messages/MessageBuilderResult.kt index 5c56f824..4b70d097 100644 --- a/fints4k/src/commonMain/kotlin/net/codinux/banking/fints/messages/MessageBuilderResult.kt +++ b/fints4k/src/commonMain/kotlin/net/codinux/banking/fints/messages/MessageBuilderResult.kt @@ -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 newline at end of file