Updated on 2026-08-14

This commit is contained in:
Tangem 2025-08-24 14:16:45 +05:00
parent db08399066
commit ae809ece30
28 changed files with 939 additions and 10 deletions

View file

@ -0,0 +1,9 @@
package com.tangem.domain.wallets
enum class PromoCodeActivationResult {
Failed,
InvalidPromoCode,
NoBitcoinAddress,
PromoCodeAlreadyUsed,
Activated,
}

View file

@ -0,0 +1,12 @@
package com.tangem.domain.wallets.models.errors
sealed class ActivatePromoCodeError {
data object InvalidPromoCode : ActivatePromoCodeError()
data object ActivationFailed : ActivatePromoCodeError()
data object PromocodeAlreadyUsed : ActivatePromoCodeError()
data object NoBitcoinAddress : ActivatePromoCodeError()
}

View file

@ -1,9 +1,11 @@
package com.tangem.domain.wallets.repository
import arrow.core.Either
import com.tangem.domain.wallets.models.SeedPhraseNotificationsStatus
import com.tangem.domain.models.wallet.UserWallet
import com.tangem.domain.models.wallet.UserWalletId
import com.tangem.domain.wallets.models.UserWalletRemoteInfo
import com.tangem.domain.wallets.models.errors.ActivatePromoCodeError
import kotlinx.coroutines.flow.Flow
@Suppress("TooManyFunctions")
@ -58,4 +60,6 @@ interface WalletsRepository {
@Throws
suspend fun associateWallets(applicationId: String, wallets: List<UserWallet>)
suspend fun activatePromoCode(promoCode: String, bitcoinAddress: String): Either<ActivatePromoCodeError, String>
}

View file

@ -0,0 +1,14 @@
package com.tangem.domain.wallets.usecase
import arrow.core.Either
import com.tangem.domain.wallets.models.errors.ActivatePromoCodeError
import com.tangem.domain.wallets.repository.WalletsRepository
import javax.inject.Inject
class ActivateBitcoinPromocodeUseCase @Inject constructor(
private val walletsRepository: WalletsRepository,
) {
suspend operator fun invoke(address: String, promoCode: String): Either<ActivatePromoCodeError, String> =
walletsRepository.activatePromoCode(promoCode = promoCode, bitcoinAddress = address)
}