Skip to content

Commit 867d31a

Browse files
authored
Merge pull request #474 from code-payments/chore/improve-submit-intent-error-typing
chore: improve error typing for submit Intent failures
2 parents 6d83650 + 3b7a9c5 commit 867d31a

File tree

1 file changed

+22
-4
lines changed

1 file changed

+22
-4
lines changed

api/src/main/java/com/getcode/network/repository/TransactionRepository.kt

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -722,14 +722,32 @@ class TransactionRepository @Inject constructor(
722722

723723
sealed class ErrorSubmitIntent(val value: Int) {
724724
data class Denied(val reasons: List<DeniedReason> = emptyList()): ErrorSubmitIntent(0)
725-
data object InvalidIntent: ErrorSubmitIntent(1)
725+
data class InvalidIntent(val reasons: List<String>): ErrorSubmitIntent(1)
726726
data object SignatureError: ErrorSubmitIntent(2)
727-
data object StaleState: ErrorSubmitIntent(3)
727+
data class StaleState(val reasons: List<String>): ErrorSubmitIntent(3)
728728
data object Unknown: ErrorSubmitIntent(-1)
729729
data object DeviceTokenUnavailable: ErrorSubmitIntent(-2)
730730

731+
override fun toString(): String {
732+
return when (this) {
733+
is Denied -> "denied(${reasons.joinToString()})"
734+
DeviceTokenUnavailable -> "deviceTokenUnavailable"
735+
is InvalidIntent -> "invalidIntent(${reasons.joinToString()})"
736+
SignatureError -> "signatureError"
737+
is StaleState -> "staleState(${reasons.joinToString()})"
738+
Unknown -> "unknown"
739+
}
740+
}
741+
731742
companion object {
732743
operator fun invoke(proto: SubmitIntentResponse.Error): ErrorSubmitIntent {
744+
val reasonStrings = proto.errorDetailsList.mapNotNull {
745+
when (it.typeCase) {
746+
TransactionService.ErrorDetails.TypeCase.REASON_STRING ->
747+
it.reasonString.reason.takeIf { reason -> reason.isNotEmpty() }
748+
else -> null
749+
}
750+
}
733751
return when (proto.code) {
734752
SubmitIntentResponse.Error.Code.DENIED -> {
735753
val reasons = proto.errorDetailsList.mapNotNull {
@@ -739,9 +757,9 @@ class TransactionRepository @Inject constructor(
739757

740758
Denied(reasons)
741759
}
742-
SubmitIntentResponse.Error.Code.INVALID_INTENT -> InvalidIntent
760+
SubmitIntentResponse.Error.Code.INVALID_INTENT -> InvalidIntent(reasonStrings)
743761
SubmitIntentResponse.Error.Code.SIGNATURE_ERROR -> SignatureError
744-
SubmitIntentResponse.Error.Code.STALE_STATE -> StaleState
762+
SubmitIntentResponse.Error.Code.STALE_STATE -> StaleState(reasonStrings)
745763
SubmitIntentResponse.Error.Code.UNRECOGNIZED -> Unknown
746764
else -> return Unknown
747765
}

0 commit comments

Comments
 (0)