poll Transaction
suspend fun pollTransaction(request: Sep24TransactionRequest, pollIntervalMs: Long = 5000, maxAttempts: Int = 60, onStatusChange: (Sep24Transaction) -> Unit? = null): Sep24Transaction
Polls a transaction until it reaches a terminal status.
Continuously queries the transaction status at the specified interval until the transaction reaches a terminal state (completed, refunded, expired, error, no_market, too_small, or too_large).
Return
Transaction in terminal status
Parameters
request
Transaction request (must have id, stellarTransactionId, or externalTransactionId)
poll Interval Ms
Interval between polls in milliseconds (default 5000ms)
max Attempts
Maximum poll attempts (default 60, which is 5 minutes at 5s intervals)
on Status Change
Optional callback invoked when transaction status changes
Throws
If max attempts exceeded without reaching terminal status
If JWT is invalid or expired
If transaction not found
On anchor server error
Example:
val tx = sep24.pollTransaction(
request = Sep24TransactionRequest(jwt = jwtToken, id = transactionId),
pollIntervalMs = 3000,
maxAttempts = 100,
onStatusChange = { tx ->
println("Status changed to: ${tx.status}")
tx.statusEta?.let { eta ->
println("Estimated time: ${eta}s")
}
}
)
when (tx.getStatusEnum()) {
Sep24TransactionStatus.COMPLETED -> {
println("Deposit completed!")
println("Received: ${tx.amountOut} ${tx.amountOutAsset}")
}
Sep24TransactionStatus.REFUNDED -> {
println("Transaction refunded")
tx.refunds?.let { refunds ->
println("Refunded: ${refunds.amountRefunded}")
}
}
Sep24TransactionStatus.ERROR -> {
println("Transaction failed: ${tx.message}")
}
else -> println("Final status: ${tx.status}")
}Content copied to clipboard