Updated on 2026-08-14
This commit is contained in:
parent
4215c91a37
commit
df186a5f5d
9 changed files with 74 additions and 9 deletions
|
|
@ -15,9 +15,14 @@ tasks.withType<Test>().configureEach {
|
|||
|
||||
dependencies {
|
||||
|
||||
// region Project - Common
|
||||
implementation(projects.common.ui) // It's needed for getting AccountName.DefaultMain value
|
||||
// endregion
|
||||
|
||||
// region Project - Core
|
||||
implementation(projects.core.datasource)
|
||||
implementation(projects.core.configToggles)
|
||||
implementation(projects.core.res)
|
||||
api(projects.core.utils)
|
||||
// endregion
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.tangem.data.account.di
|
||||
|
||||
import android.content.Context
|
||||
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
|
||||
import com.tangem.data.account.converter.AccountConverterFactoryContainer
|
||||
import com.tangem.data.account.featuretoggle.DefaultAccountsFeatureToggles
|
||||
|
|
@ -21,6 +22,7 @@ import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
|||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import dagger.hilt.components.SingletonComponent
|
||||
import javax.inject.Singleton
|
||||
|
||||
|
|
@ -43,6 +45,7 @@ internal object AccountDataModule {
|
|||
userWalletsStore: UserWalletsStore,
|
||||
userTokensSaver: UserTokensSaver,
|
||||
accountConverterFactoryContainer: AccountConverterFactoryContainer,
|
||||
@ApplicationContext context: Context,
|
||||
dispatchers: CoroutineDispatcherProvider,
|
||||
): AccountsCRUDRepository {
|
||||
return DefaultAccountsCRUDRepository(
|
||||
|
|
@ -54,6 +57,7 @@ internal object AccountDataModule {
|
|||
userTokensSaver = userTokensSaver,
|
||||
archivedAccountsETagStore = RuntimeStateStore(emptyMap()),
|
||||
convertersContainer = accountConverterFactoryContainer,
|
||||
resources = context.resources,
|
||||
dispatchers = dispatchers,
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
package com.tangem.data.account.repository
|
||||
|
||||
import android.content.res.Resources
|
||||
import arrow.core.Option
|
||||
import arrow.core.raise.option
|
||||
import arrow.core.toOption
|
||||
import com.tangem.common.ui.account.AccountNameUM
|
||||
import com.tangem.core.res.getStringSafe
|
||||
import com.tangem.data.account.converter.AccountConverterFactoryContainer
|
||||
import com.tangem.data.account.converter.ArchivedAccountConverter
|
||||
import com.tangem.data.account.store.AccountsResponseStore
|
||||
|
|
@ -26,6 +29,7 @@ import com.tangem.domain.account.models.ArchivedAccount
|
|||
import com.tangem.domain.account.repository.AccountsCRUDRepository
|
||||
import com.tangem.domain.models.account.Account
|
||||
import com.tangem.domain.models.account.AccountId
|
||||
import com.tangem.domain.models.account.AccountName
|
||||
import com.tangem.domain.models.wallet.UserWallet
|
||||
import com.tangem.domain.models.wallet.UserWalletId
|
||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
|
|
@ -48,6 +52,7 @@ internal class DefaultAccountsCRUDRepository(
|
|||
private val userTokensSaver: UserTokensSaver,
|
||||
private val archivedAccountsETagStore: RuntimeStateStore<Map<String, String?>>,
|
||||
private val convertersContainer: AccountConverterFactoryContainer,
|
||||
private val resources: Resources,
|
||||
private val dispatchers: CoroutineDispatcherProvider,
|
||||
) : AccountsCRUDRepository {
|
||||
|
||||
|
|
@ -197,6 +202,19 @@ internal class DefaultAccountsCRUDRepository(
|
|||
|
||||
override fun getUserWalletsSync(): List<UserWallet> = userWalletsStore.userWalletsSync
|
||||
|
||||
override fun checkDefaultAccountName(accountList: AccountList, accountName: AccountName) {
|
||||
val hasDefaultName = accountList.accounts.any { it.accountName is AccountName.DefaultMain }
|
||||
|
||||
if (!hasDefaultName) return
|
||||
|
||||
val defaultName = resources.getStringSafe(AccountNameUM.DefaultMain.stringResId)
|
||||
.let(AccountName::invoke).getOrNull()
|
||||
|
||||
require(defaultName != accountName) {
|
||||
"Cannot use default account name \"$accountName\" for custom accounts"
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun saveETag(userWalletId: UserWalletId, apiResponse: ApiResponse<*>) {
|
||||
val eTag = apiResponse.headers[ETAG_HEADER]?.firstOrNull()
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.tangem.data.account.repository
|
||||
|
||||
import android.content.res.Resources
|
||||
import arrow.core.None
|
||||
import arrow.core.toOption
|
||||
import com.google.common.truth.Truth
|
||||
|
|
@ -59,6 +60,8 @@ class DefaultAccountsCRUDRepositoryTest {
|
|||
private val accountListConverter: AccountListConverter = mockk()
|
||||
private val cryptoPortfolioConverter: CryptoPortfolioConverter = mockk()
|
||||
|
||||
private val resources: Resources = mockk()
|
||||
|
||||
private val repository = DefaultAccountsCRUDRepository(
|
||||
tangemTechApi = tangemTechApi,
|
||||
walletAccountsSaver = walletAccountsSaver,
|
||||
|
|
@ -68,6 +71,7 @@ class DefaultAccountsCRUDRepositoryTest {
|
|||
userTokensSaver = userTokensSaver,
|
||||
archivedAccountsETagStore = archivedAccountsETagStore,
|
||||
convertersContainer = convertersContainer,
|
||||
resources = resources,
|
||||
dispatchers = TestingCoroutineDispatcherProvider(),
|
||||
)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue