Updated on 2026-08-14
This commit is contained in:
parent
3b33d4db0a
commit
2336c837cb
9 changed files with 110 additions and 4 deletions
|
|
@ -0,0 +1,8 @@
|
|||
package com.tangem.domain.wallets.models
|
||||
|
||||
sealed interface GetSelectedWalletError {
|
||||
|
||||
object DataError : GetSelectedWalletError
|
||||
|
||||
object NoUserWalletSelected : GetSelectedWalletError
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
package com.tangem.domain.wallets.models
|
||||
|
||||
sealed interface SelectWalletError {
|
||||
|
||||
object DataError : SelectWalletError
|
||||
|
||||
object UnableToSelectUserWallet : SelectWalletError
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
package com.tangem.domain.wallets.usecase
|
||||
|
||||
import arrow.core.Either
|
||||
import arrow.core.raise.either
|
||||
import arrow.core.raise.ensureNotNull
|
||||
import com.tangem.domain.wallets.legacy.WalletsStateHolder
|
||||
import com.tangem.domain.wallets.models.GetSelectedWalletError
|
||||
import com.tangem.domain.wallets.models.UserWallet
|
||||
|
||||
/**
|
||||
* Use case for getting selected wallet
|
||||
*
|
||||
* @property walletsStateHolder state holder for getting static initialized 'userWalletsListManager'
|
||||
*
|
||||
[REDACTED_AUTHOR]
|
||||
*/
|
||||
class GetSelectedWalletUseCase(private val walletsStateHolder: WalletsStateHolder) {
|
||||
|
||||
operator fun invoke(): Either<GetSelectedWalletError, UserWallet> {
|
||||
return either {
|
||||
val userWalletsListManager = ensureNotNull(
|
||||
value = walletsStateHolder.userWalletsListManager,
|
||||
raise = { GetSelectedWalletError.DataError },
|
||||
)
|
||||
|
||||
ensureNotNull(
|
||||
value = userWalletsListManager.selectedUserWalletSync,
|
||||
raise = { GetSelectedWalletError.NoUserWalletSelected },
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
package com.tangem.domain.wallets.usecase
|
||||
|
||||
import arrow.core.Either
|
||||
import arrow.core.left
|
||||
import arrow.core.raise.either
|
||||
import arrow.core.raise.ensureNotNull
|
||||
import arrow.core.right
|
||||
import com.tangem.common.doOnFailure
|
||||
import com.tangem.common.doOnSuccess
|
||||
import com.tangem.domain.wallets.legacy.WalletsStateHolder
|
||||
import com.tangem.domain.wallets.models.SelectWalletError
|
||||
import com.tangem.domain.wallets.models.UserWalletId
|
||||
|
||||
/**
|
||||
* Use case for selecting wallet
|
||||
*
|
||||
* @property walletsStateHolder state holder for getting static initialized 'userWalletsListManager'
|
||||
*
|
||||
[REDACTED_AUTHOR]
|
||||
*/
|
||||
class SelectWalletUseCase(private val walletsStateHolder: WalletsStateHolder) {
|
||||
|
||||
suspend operator fun invoke(userWalletId: UserWalletId): Either<SelectWalletError, Unit> {
|
||||
return either {
|
||||
val userWalletsListManager = ensureNotNull(
|
||||
value = walletsStateHolder.userWalletsListManager,
|
||||
raise = { SelectWalletError.DataError },
|
||||
)
|
||||
|
||||
userWalletsListManager.select(userWalletId)
|
||||
.doOnSuccess { return Unit.right() }
|
||||
.doOnFailure { return SelectWalletError.UnableToSelectUserWallet.left() }
|
||||
|
||||
return Unit.right()
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue