Updated on 2026-08-14
This commit is contained in:
parent
e5d93deb3b
commit
69f3fa4c0f
7 changed files with 38 additions and 25 deletions
|
|
@ -100,8 +100,8 @@ internal class DefaultTangemPayStorage @Inject constructor(
|
|||
secureStorage.delete(createOrderIdKey(customerWalletAddress))
|
||||
}
|
||||
|
||||
override suspend fun storeCheckCustomerWalletResult(userWalletId: UserWalletId) {
|
||||
appPreferencesStore.store(PreferencesKeys.getTangemPayCheckCustomerByWalletId(userWalletId), true)
|
||||
override suspend fun storeCheckCustomerWalletResult(userWalletId: UserWalletId, isPaeraCustomer: Boolean) {
|
||||
appPreferencesStore.store(PreferencesKeys.getTangemPayCheckCustomerByWalletId(userWalletId), isPaeraCustomer)
|
||||
}
|
||||
|
||||
override suspend fun checkCustomerWalletResult(userWalletId: UserWalletId): Boolean? {
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ interface TangemPayStorage {
|
|||
suspend fun getAddToWalletDone(customerWalletAddress: String): Boolean
|
||||
|
||||
suspend fun storeAddToWalletDone(customerWalletAddress: String, isDone: Boolean)
|
||||
suspend fun storeCheckCustomerWalletResult(userWalletId: UserWalletId)
|
||||
suspend fun storeCheckCustomerWalletResult(userWalletId: UserWalletId, isPaeraCustomer: Boolean)
|
||||
suspend fun checkCustomerWalletResult(userWalletId: UserWalletId): Boolean?
|
||||
|
||||
suspend fun storeWithdrawOrder(userWalletId: UserWalletId, orderId: String)
|
||||
|
|
|
|||
|
|
@ -20,16 +20,27 @@ import com.tangem.core.ui.test.PopUpMenuTestTags
|
|||
@Suppress("ComposableEventParameterNaming")
|
||||
@Composable
|
||||
fun TangemDropdownItem(item: TangemDropdownMenuItem, dismissParent: () -> Unit, modifier: Modifier = Modifier) {
|
||||
val textColor = if (item.isEnabled) {
|
||||
item.textColor.resolveReference()
|
||||
} else {
|
||||
TangemTheme.colors.text.tertiary
|
||||
}
|
||||
Text(
|
||||
modifier = modifier
|
||||
.clickable {
|
||||
dismissParent()
|
||||
item.onClick()
|
||||
}
|
||||
.then(
|
||||
if (item.isEnabled) {
|
||||
Modifier.clickable {
|
||||
dismissParent()
|
||||
item.onClick()
|
||||
}
|
||||
} else {
|
||||
Modifier
|
||||
},
|
||||
)
|
||||
.padding(vertical = TangemTheme.dimens.spacing8, horizontal = TangemTheme.dimens.spacing16)
|
||||
.testTag(PopUpMenuTestTags.BUTTON),
|
||||
text = item.title.resolveReference(),
|
||||
style = TangemTheme.typography.button.copy(color = item.textColor.resolveReference()),
|
||||
style = TangemTheme.typography.button.copy(color = textColor),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,4 +7,5 @@ data class TangemDropdownMenuItem(
|
|||
val title: TextReference,
|
||||
val textColor: ColorReference,
|
||||
val onClick: () -> Unit,
|
||||
val isEnabled: Boolean = true,
|
||||
)
|
||||
|
|
@ -71,7 +71,7 @@ internal class DefaultOnboardingRepository @Inject constructor(
|
|||
ifRight = { it },
|
||||
)
|
||||
// should storeCheckCustomerWalletResult because we already know this
|
||||
tangemPayStorage.storeCheckCustomerWalletResult(userWalletId)
|
||||
tangemPayStorage.storeCheckCustomerWalletResult(userWalletId, true)
|
||||
tangemPayStorage.storeCustomerWalletAddress(
|
||||
userWalletId = userWalletId,
|
||||
customerWalletAddress = initialCredentials.customerWalletAddress,
|
||||
|
|
@ -172,8 +172,8 @@ internal class DefaultOnboardingRepository @Inject constructor(
|
|||
|
||||
override suspend fun checkCustomerWallet(userWalletId: UserWalletId): Either<VisaApiError, Boolean> {
|
||||
val hasTangemPay = tangemPayStorage.checkCustomerWalletResult(userWalletId)
|
||||
if (hasTangemPay == true) {
|
||||
return Either.Right(true)
|
||||
if (hasTangemPay != null) {
|
||||
return Either.Right(hasTangemPay)
|
||||
}
|
||||
|
||||
return requestHelper.performWithStaticToken { staticToken ->
|
||||
|
|
@ -183,12 +183,14 @@ internal class DefaultOnboardingRepository @Inject constructor(
|
|||
)
|
||||
}.map { response ->
|
||||
val id = response.id
|
||||
if (!id.isNullOrEmpty()) {
|
||||
tangemPayStorage.storeCheckCustomerWalletResult(userWalletId = userWalletId)
|
||||
true
|
||||
} else {
|
||||
false
|
||||
val isPaeraCustomer = !id.isNullOrEmpty()
|
||||
tangemPayStorage.storeCheckCustomerWalletResult(userWalletId = userWalletId, isPaeraCustomer)
|
||||
isPaeraCustomer
|
||||
}.mapLeft { error ->
|
||||
if (error is VisaApiError.NotPaeraCustomer) {
|
||||
tangemPayStorage.storeCheckCustomerWalletResult(userWalletId = userWalletId, false)
|
||||
}
|
||||
error
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -75,11 +75,13 @@ internal class TangemPayDetailsStateFactory(
|
|||
text = resourceReference(id = R.string.tangempay_card_details_add_funds),
|
||||
iconResId = R.drawable.ic_plus_24,
|
||||
onClick = intents::onClickAddFunds,
|
||||
isEnabled = cardFrozenState == TangemPayCardFrozenState.Unfrozen,
|
||||
),
|
||||
ActionButtonConfig(
|
||||
text = resourceReference(id = R.string.tangempay_card_details_withdraw),
|
||||
iconResId = R.drawable.ic_arrow_up_24,
|
||||
onClick = intents::onClickWithdraw,
|
||||
isEnabled = cardFrozenState == TangemPayCardFrozenState.Unfrozen,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -27,13 +27,10 @@ internal class TangemPayFreezeUnfreezeStateTransformer(
|
|||
}
|
||||
|
||||
override fun transform(prevState: TangemPayDetailsUM): TangemPayDetailsUM {
|
||||
val dropdownMenuItems = when (cardFrozenState) {
|
||||
TangemPayCardFrozenState.Frozen,
|
||||
TangemPayCardFrozenState.Unfrozen,
|
||||
-> createUpdatedMenuItems(prevState.topBarConfig.items)
|
||||
TangemPayCardFrozenState.Pending -> prevState.topBarConfig.items
|
||||
val filteredItems = prevState.topBarConfig.items?.filterNot {
|
||||
it.type == FreezeCard || it.type == UnfreezeCard
|
||||
}
|
||||
|
||||
val dropdownMenuItems = createUpdatedMenuItems(filteredItems?.toPersistentList())
|
||||
return prevState.copy(
|
||||
topBarConfig = prevState.topBarConfig.copy(items = dropdownMenuItems),
|
||||
cardFrozenState = converter.convert(cardFrozenState),
|
||||
|
|
@ -44,12 +41,11 @@ internal class TangemPayFreezeUnfreezeStateTransformer(
|
|||
items: ImmutableList<TangemPayDetailsTopBarMenuItem>?,
|
||||
): ImmutableList<TangemPayDetailsTopBarMenuItem>? {
|
||||
return items
|
||||
?.filterNot { it.type == UnfreezeCard || it.type == FreezeCard }
|
||||
?.plus(createMenuItemToAdd())
|
||||
?.plus(createMenuItemToAdd(cardFrozenState))
|
||||
?.toPersistentList()
|
||||
}
|
||||
|
||||
private fun createMenuItemToAdd(): TangemPayDetailsTopBarMenuItem {
|
||||
private fun createMenuItemToAdd(cardFrozenState: TangemPayCardFrozenState): TangemPayDetailsTopBarMenuItem {
|
||||
return TangemPayDetailsTopBarMenuItem(
|
||||
type = if (isCardFrozen) UnfreezeCard else FreezeCard,
|
||||
dropdownItem = TangemDropdownMenuItem(
|
||||
|
|
@ -62,6 +58,7 @@ internal class TangemPayFreezeUnfreezeStateTransformer(
|
|||
),
|
||||
textColor = themedColor { TangemTheme.colors.text.primary1 },
|
||||
onClick = if (isCardFrozen) onUnfreezeClick else onFreezeClick,
|
||||
isEnabled = cardFrozenState != TangemPayCardFrozenState.Pending,
|
||||
),
|
||||
)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue