Skip to content

Commit

Permalink
refactor(blockchain card): AND-6766 Use query parameters for Card web…
Browse files Browse the repository at this point in the history
…view (#4105)

* Use query parameters instead of path parameters for the card webview

* ktlint

* fix tests
  • Loading branch information
labreu-bc committed Nov 16, 2022
1 parent 322b776 commit 1309a73
Show file tree
Hide file tree
Showing 6 changed files with 30 additions and 17 deletions.
Expand Up @@ -65,14 +65,23 @@ class BlockchainCardService internal constructor(
fun getCardWidgetUrl(
widgetToken: String,
last4Digits: String,
userFullName: String
): Outcome<Exception, String> = Outcome.Success(buildCardWidgetUrl(widgetToken, last4Digits, userFullName))
userFullName: String,
cardType: String
): Outcome<Exception, String> = Outcome.Success(
buildCardWidgetUrl(widgetToken, last4Digits, userFullName, cardType)
)

private fun buildCardWidgetUrl(
widgetToken: String,
last4Digits: String,
userFullName: String
): String = "${walletHelperUrl.url}wallet-helper/marqeta-card/#/$widgetToken/$last4Digits/$userFullName"
userFullName: String,
cardType: String
): String =
"${walletHelperUrl.url}wallet-helper/marqeta-card/#/" +
"?token=$widgetToken" +
"&last4=$last4Digits" +
"&fullName=$userFullName" +
"&cardType=$cardType"

suspend fun getEligibleAccounts(
cardId: String
Expand Down
Expand Up @@ -141,12 +141,18 @@ internal class BlockchainCardRepositoryImpl(
override suspend fun getCardWidgetUrl(
cardId: String,
last4Digits: String,
userFullName: String
userFullName: String,
cardType: BlockchainCardType
): Outcome<BlockchainCardError, String> =
blockchainCardService.getCardWidgetToken(
cardId = cardId,
).flatMap { widgetToken ->
blockchainCardService.getCardWidgetUrl(widgetToken.token, last4Digits, userFullName)
blockchainCardService.getCardWidgetUrl(
widgetToken = widgetToken.token,
last4Digits = last4Digits,
userFullName = userFullName,
cardType = cardType.name
)
}.wrapBlockchainCardError()

override suspend fun getEligibleTradingAccounts(
Expand Down
Expand Up @@ -13,6 +13,7 @@ import com.blockchain.blockchaincard.domain.models.BlockchainCardPostMessageType
import com.blockchain.blockchaincard.domain.models.BlockchainCardProduct
import com.blockchain.blockchaincard.domain.models.BlockchainCardStatement
import com.blockchain.blockchaincard.domain.models.BlockchainCardTransaction
import com.blockchain.blockchaincard.domain.models.BlockchainCardType
import com.blockchain.coincore.AccountBalance
import com.blockchain.coincore.BlockchainAccount
import com.blockchain.coincore.FiatAccount
Expand Down Expand Up @@ -50,7 +51,8 @@ interface BlockchainCardRepository {
suspend fun getCardWidgetUrl(
cardId: String,
last4Digits: String,
userFullName: String
userFullName: String,
cardType: BlockchainCardType
): Outcome<BlockchainCardError, String>

suspend fun getEligibleTradingAccounts(
Expand Down
Expand Up @@ -18,7 +18,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.requiredHeight
import androidx.compose.foundation.layout.requiredHeightIn
import androidx.compose.foundation.layout.requiredWidth
import androidx.compose.foundation.layout.size
Expand Down Expand Up @@ -255,12 +254,7 @@ fun ManageCard(
disableScrolling = true,
onWebMessageReceived = onWebMessageReceived,
overrideTextZoom = true,
modifier = Modifier
.padding(
top = AppTheme.dimensions.smallSpacing
)
.requiredHeight(355.dp)
.requiredWidth(400.dp),
modifier = Modifier.fillMaxWidth(),
)
}
}
Expand Down
Expand Up @@ -211,7 +211,8 @@ class ManageCardViewModel(private val blockchainCardRepository: BlockchainCardRe
blockchainCardRepository.getCardWidgetUrl(
cardId = modelState.currentCard.id,
last4Digits = modelState.currentCard.last4,
userFullName = firstAndLastName
userFullName = firstAndLastName,
cardType = modelState.currentCard.type
)
}.fold(
onFailure = { error ->
Expand Down
Expand Up @@ -292,12 +292,13 @@ class BlockchainCardRepositoryImplTest {
coEvery { blockchainCardService.getCardWidgetToken(any()) } returns Outcome.Success(
cardWidgetTokenDto
)
coEvery { blockchainCardService.getCardWidgetUrl(any(), any(), any()) } returns Outcome.Success(cardWidgetUrl)
coEvery { blockchainCardService.getCardWidgetUrl(any(), any(), any(), any()) } returns Outcome.Success(cardWidgetUrl)

val cardWidgetUrlUnderTest = blockchainCardRepository.getCardWidgetUrl(
cardId = "cardId",
last4Digits = "1234",
userFullName = "userFullName"
userFullName = "userFullName",
cardType = BlockchainCardType.VIRTUAL
)

assertEquals(cardWidgetUrlUnderTest, Outcome.Success(cardWidgetUrl))
Expand Down

0 comments on commit 1309a73

Please sign in to comment.