Updated on 2026-08-14
This commit is contained in:
commit
8126bf44b8
79 changed files with 715 additions and 530 deletions
|
|
@ -21,6 +21,7 @@ import kotlinx.coroutines.sync.Mutex
|
|||
import kotlinx.coroutines.sync.withLock
|
||||
import kotlinx.coroutines.withContext
|
||||
import timber.log.Timber
|
||||
import java.util.UUID
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
|
@ -95,7 +96,7 @@ internal class TangemPayRequestPerformer @Inject constructor(
|
|||
if (accessExpiresAt.isAfter(now)) {
|
||||
tokens.right()
|
||||
} else if (accessExpiresAt.isBefore(now) && refreshExpiresAt.isAfter(now)) {
|
||||
refreshAuthTokens(userWalletId = userWalletId, refreshToken = tokens.refreshToken)
|
||||
refreshAuthTokens(userWalletId = userWalletId, authTokens = tokens)
|
||||
} else {
|
||||
VisaApiError.RefreshTokenExpired.left()
|
||||
}
|
||||
|
|
@ -104,13 +105,15 @@ internal class TangemPayRequestPerformer @Inject constructor(
|
|||
|
||||
private suspend fun refreshAuthTokens(
|
||||
userWalletId: UserWalletId,
|
||||
refreshToken: String,
|
||||
authTokens: TangemPayAuthTokens,
|
||||
): Either<VisaApiError, TangemPayAuthTokens> {
|
||||
val customerWalletAddress = getCustomerWalletAddress(userWalletId)
|
||||
val idempotencyKey = requireNotNull(authTokens.idempotencyKey) { "Idempotency key is null" }
|
||||
val apiResponse = tangemPayAuthApi.refreshCustomerWalletAccessToken(
|
||||
idempotencyKey = idempotencyKey,
|
||||
request = RefreshCustomerWalletAccessTokenRequest(
|
||||
authType = "customer_wallet",
|
||||
refreshToken = refreshToken,
|
||||
refreshToken = authTokens.refreshToken,
|
||||
),
|
||||
)
|
||||
val responseEither = when (apiResponse) {
|
||||
|
|
@ -123,6 +126,7 @@ internal class TangemPayRequestPerformer @Inject constructor(
|
|||
expiresAt = response.expiresAt,
|
||||
refreshToken = response.refreshToken,
|
||||
refreshExpiresAt = response.refreshExpiresAt,
|
||||
idempotencyKey = UUID.randomUUID().toString(),
|
||||
)
|
||||
}.mapLeft { error ->
|
||||
Timber.tag(TAG).e("Can not refresh auth tokens: $error")
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import com.tangem.domain.visa.model.VisaAuthChallenge
|
|||
import com.tangem.domain.visa.model.VisaAuthSession
|
||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import kotlinx.coroutines.withContext
|
||||
import java.util.UUID
|
||||
import javax.inject.Inject
|
||||
|
||||
internal class DefaultTangemPayRemoteDataSource @Inject constructor(
|
||||
|
|
@ -66,6 +67,7 @@ internal class DefaultTangemPayRemoteDataSource @Inject constructor(
|
|||
expiresAt = response.expiresAt,
|
||||
refreshToken = response.refreshToken,
|
||||
refreshExpiresAt = response.refreshExpiresAt,
|
||||
idempotencyKey = UUID.randomUUID().toString(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue