diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/GiveBillTransactor.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/GiveBillTransactor.kt index 4299980af..575943330 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/GiveBillTransactor.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/internal/transactors/GiveBillTransactor.kt @@ -21,6 +21,7 @@ import com.getcode.utils.TraceType import com.getcode.utils.trace import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.cancel +import kotlinx.coroutines.isActive import kotlin.time.Duration /** @@ -112,6 +113,10 @@ internal class GiveBillTransactor( * @return the confirmed [TransactionMetadata.SendPublicPayment] on success. */ suspend fun start(): Result { + if (!scope.isActive) { + return logAndFail(GiveTransactorError.Other(message = "Transactor was disposed")) + } + val ownerKey = owner ?: return logAndFail(GiveTransactorError.Other(message = "No owner key. Did you call with() first?")) val desiredToken = token @@ -212,13 +217,13 @@ internal class GiveBillTransactor( /** Cancels the coroutine scope and clears all held state. */ fun dispose() { + scope.cancel() owner = null presentationData = BillPresentationData(emptyList(), emptyList()) rendezvousKey = null receivingAccount = null token = null providedVerifiedState = null - scope.cancel() } sealed class GiveTransactorError( diff --git a/services/opencode/src/main/kotlin/com/getcode/opencode/managers/BillTransactionManager.kt b/services/opencode/src/main/kotlin/com/getcode/opencode/managers/BillTransactionManager.kt index 6f7857117..bae715b00 100644 --- a/services/opencode/src/main/kotlin/com/getcode/opencode/managers/BillTransactionManager.kt +++ b/services/opencode/src/main/kotlin/com/getcode/opencode/managers/BillTransactionManager.kt @@ -4,7 +4,6 @@ import com.getcode.opencode.controllers.AccountController import com.getcode.opencode.controllers.MessagingController import com.getcode.opencode.controllers.TransactionController import com.getcode.opencode.exchange.VerifiedFiatCalculator -import com.getcode.opencode.internal.domain.mapping.MintMapper import com.getcode.opencode.internal.manager.VerifiedState import com.getcode.opencode.internal.transactors.AccountClusterFactory import com.getcode.opencode.internal.transactors.BillPresentationData