diff --git a/app/src/main/java/com/tangem/tap/di/domain/WalletsDomainModule.kt b/app/src/main/java/com/tangem/tap/di/domain/WalletsDomainModule.kt index 9321638b94..6c0ebccfc6 100644 --- a/app/src/main/java/com/tangem/tap/di/domain/WalletsDomainModule.kt +++ b/app/src/main/java/com/tangem/tap/di/domain/WalletsDomainModule.kt @@ -5,6 +5,7 @@ import com.tangem.domain.wallets.legacy.WalletsStateHolder import com.tangem.domain.wallets.usecase.GetExploreUrlUseCase import com.tangem.domain.wallets.usecase.GetWalletsUseCase import com.tangem.domain.wallets.usecase.SaveWalletUseCase +import com.tangem.domain.wallets.usecase.UnlockWalletsUseCase import dagger.Module import dagger.Provides import dagger.hilt.InstallIn @@ -32,4 +33,10 @@ internal object WalletsDomainModule { fun providesGetExploreUrlUseCase(walletsManagersFacade: WalletManagersFacade): GetExploreUrlUseCase { return GetExploreUrlUseCase(walletsManagersFacade = walletsManagersFacade) } + + @Provides + @ViewModelScoped + fun providesUnlockWalletUseCase(walletsStateHolder: WalletsStateHolder): UnlockWalletsUseCase { + return UnlockWalletsUseCase(walletsStateHolder = walletsStateHolder) + } } \ No newline at end of file diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/models/UnlockWalletError.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/models/UnlockWalletError.kt new file mode 100644 index 0000000000..311cdc5d0f --- /dev/null +++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/models/UnlockWalletError.kt @@ -0,0 +1,6 @@ +package com.tangem.domain.wallets.models + +sealed interface UnlockWalletError { + + object CommonError : UnlockWalletError +} \ No newline at end of file diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/UnlockWalletsUseCase.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/UnlockWalletsUseCase.kt new file mode 100644 index 0000000000..3459902720 --- /dev/null +++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/UnlockWalletsUseCase.kt @@ -0,0 +1,31 @@ +package com.tangem.domain.wallets.usecase + +import arrow.core.Either +import arrow.core.left +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.legacy.asLockable +import com.tangem.domain.wallets.models.UnlockWalletError + +/** + * Unlock wallets use case + * + * @property walletsStateHolder wallets state holder + * +[REDACTED_AUTHOR] + */ +class UnlockWalletsUseCase(private val walletsStateHolder: WalletsStateHolder) { + + suspend operator fun invoke(): Either { + val userWalletsListManager = walletsStateHolder.userWalletsListManager?.asLockable() + ?: return UnlockWalletError.CommonError.left() + + userWalletsListManager.unlock() + .doOnSuccess { return Unit.right() } + .doOnFailure { return UnlockWalletError.CommonError.left() } + + return Unit.right() + } +} \ No newline at end of file