Updated on 2026-08-14
This commit is contained in:
parent
86fbb5e005
commit
37486f3877
4 changed files with 82 additions and 18 deletions
|
|
@ -4,10 +4,6 @@ import com.tangem.domain.account.status.producer.MultiAccountStatusListProducer
|
|||
import com.tangem.domain.account.status.producer.SingleAccountStatusListProducer
|
||||
import com.tangem.domain.account.status.supplier.MultiAccountStatusListSupplier
|
||||
import com.tangem.domain.account.status.supplier.SingleAccountStatusListSupplier
|
||||
import com.tangem.domain.account.status.usecase.GetAccountCurrencyByAddressUseCase
|
||||
import com.tangem.domain.account.supplier.SingleAccountListSupplier
|
||||
import com.tangem.domain.common.wallets.UserWalletsListRepository
|
||||
import com.tangem.domain.networks.multi.MultiNetworkStatusSupplier
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
|
|
@ -39,18 +35,4 @@ internal object AccountStatusListSupplierModule {
|
|||
keyCreator = { "multi_account_status_list" },
|
||||
) {}
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideGetAccountCurrencyByAddressUseCase(
|
||||
userWalletsListRepository: UserWalletsListRepository,
|
||||
multiNetworkStatusSupplier: MultiNetworkStatusSupplier,
|
||||
singleAccountListSupplier: SingleAccountListSupplier,
|
||||
): GetAccountCurrencyByAddressUseCase {
|
||||
return GetAccountCurrencyByAddressUseCase(
|
||||
userWalletsListRepository = userWalletsListRepository,
|
||||
multiNetworkStatusSupplier = multiNetworkStatusSupplier,
|
||||
singleAccountListSupplier = singleAccountListSupplier,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
package com.tangem.domain.account.status.di
|
||||
|
||||
import com.tangem.domain.account.status.usecase.GetAccountCurrencyByAddressUseCase
|
||||
import com.tangem.domain.account.status.usecase.GetAccountCurrencyStatusUseCase
|
||||
import com.tangem.domain.account.supplier.SingleAccountListSupplier
|
||||
import com.tangem.domain.common.wallets.UserWalletsListRepository
|
||||
import com.tangem.domain.networks.multi.MultiNetworkStatusSupplier
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.components.SingletonComponent
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Module
|
||||
@InstallIn(SingletonComponent::class)
|
||||
internal object AccountStatusUseCaseModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideGetAccountCurrencyByAddressUseCase(
|
||||
userWalletsListRepository: UserWalletsListRepository,
|
||||
multiNetworkStatusSupplier: MultiNetworkStatusSupplier,
|
||||
singleAccountListSupplier: SingleAccountListSupplier,
|
||||
): GetAccountCurrencyByAddressUseCase {
|
||||
return GetAccountCurrencyByAddressUseCase(
|
||||
userWalletsListRepository = userWalletsListRepository,
|
||||
multiNetworkStatusSupplier = multiNetworkStatusSupplier,
|
||||
singleAccountListSupplier = singleAccountListSupplier,
|
||||
)
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideGetAccountCurrencyStatusUseCase(): GetAccountCurrencyStatusUseCase {
|
||||
return GetAccountCurrencyStatusUseCase()
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
package com.tangem.domain.account.status.model
|
||||
|
||||
import com.tangem.domain.models.account.Account
|
||||
import com.tangem.domain.models.currency.CryptoCurrencyStatus
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
/**
|
||||
* Combines an [Account] with its corresponding [CryptoCurrencyStatus].
|
||||
*
|
||||
* This data class is useful for representing the relationship between an account and the cryptocurrency it holds.
|
||||
*
|
||||
[REDACTED_AUTHOR]
|
||||
*/
|
||||
@Serializable
|
||||
data class AccountCryptoCurrencyStatus(val account: Account.CryptoPortfolio, val status: CryptoCurrencyStatus) {
|
||||
|
||||
init {
|
||||
require(account.cryptoCurrencies.contains(status.currency))
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
package com.tangem.domain.account.status.usecase
|
||||
|
||||
import arrow.core.Option
|
||||
import arrow.core.none
|
||||
import com.tangem.domain.account.status.model.AccountCryptoCurrencyStatus
|
||||
import com.tangem.domain.models.currency.CryptoCurrency
|
||||
|
||||
/**
|
||||
* Use case to retrieve the status of a specific cryptocurrency associated with an account.
|
||||
*
|
||||
[REDACTED_AUTHOR]
|
||||
*/
|
||||
// TODO: Implement [REDACTED_JIRA]
|
||||
class GetAccountCurrencyStatusUseCase {
|
||||
|
||||
/**
|
||||
* Invokes the use case to get the [AccountCryptoCurrencyStatus] for the given [currencyId].
|
||||
*
|
||||
* @param currencyId The ID of the cryptocurrency to look up.
|
||||
*
|
||||
* @return An [Option] containing the [AccountCryptoCurrencyStatus] if found,
|
||||
* or [arrow.core.None] if not found or if any validation fails.
|
||||
*/
|
||||
suspend operator fun invoke(currencyId: CryptoCurrency.ID): Option<AccountCryptoCurrencyStatus> = none()
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue