Updated on 2026-08-14

This commit is contained in:
Tangem 2023-08-25 18:46:36 +08:00
parent 3704607598
commit 21b514caa1
15 changed files with 133 additions and 5 deletions

View file

@ -50,14 +50,15 @@ dependencies {
implementation(project(":libs:crypto")) implementation(project(":libs:crypto"))
implementation(project(":libs:auth")) implementation(project(":libs:auth"))
implementation(project(":data:source:preferences")) implementation(projects.data.appCurrency)
implementation(projects.data.appTheme)
implementation(projects.data.card) implementation(projects.data.card)
implementation(projects.data.common) implementation(projects.data.common)
implementation(projects.data.settings) implementation(projects.data.settings)
implementation(projects.data.source.preferences)
implementation(projects.data.tokens) implementation(projects.data.tokens)
implementation(projects.data.txhistory) implementation(projects.data.txhistory)
implementation(projects.data.appCurrency) implementation(projects.data.wallets)
implementation(projects.data.appTheme)
/** Features */ /** Features */
implementation(project(":features:onboarding")) implementation(project(":features:onboarding"))

View file

@ -2,6 +2,7 @@ package com.tangem.tap.di.domain
import com.tangem.domain.walletmanager.WalletManagersFacade import com.tangem.domain.walletmanager.WalletManagersFacade
import com.tangem.domain.wallets.legacy.WalletsStateHolder import com.tangem.domain.wallets.legacy.WalletsStateHolder
import com.tangem.domain.wallets.repository.WalletsRepository
import com.tangem.domain.wallets.usecase.* import com.tangem.domain.wallets.usecase.*
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
@ -60,4 +61,10 @@ internal object WalletsDomainModule {
fun providesDeleteWalletUseCase(walletsStateHolder: WalletsStateHolder): DeleteWalletUseCase { fun providesDeleteWalletUseCase(walletsStateHolder: WalletsStateHolder): DeleteWalletUseCase {
return DeleteWalletUseCase(walletsStateHolder = walletsStateHolder) return DeleteWalletUseCase(walletsStateHolder = walletsStateHolder)
} }
@Provides
@ViewModelScoped
fun providesShouldSaveUserWalletsUseCase(walletsRepository: WalletsRepository): ShouldSaveUserWalletsUseCase {
return ShouldSaveUserWalletsUseCase(walletsRepository = walletsRepository)
}
} }

View file

@ -0,0 +1,11 @@
package com.tangem.tap.domain.settings
import com.tangem.domain.settings.repositories.LegacySettingsRepository
import com.tangem.tap.domain.TangemSdkManager
internal class DefaultLegacySettingsRepository(
private val tangemSdkManager: TangemSdkManager,
) : LegacySettingsRepository {
override fun canUseBiometry(): Boolean = tangemSdkManager.canUseBiometry
}

View file

@ -15,4 +15,8 @@ internal class DefaultSettingsRepository(
preferencesDataSource.appRatingLaunchObserver.isReadyToShow() preferencesDataSource.appRatingLaunchObserver.isReadyToShow()
} }
} }
override suspend fun shouldShowSaveUserWalletScreen(): Boolean {
return withContext(dispatchers.io) { preferencesDataSource.shouldShowSaveUserWalletScreen }
}
} }

1
data/wallets/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/build

View file

@ -0,0 +1,21 @@
plugins {
alias(deps.plugins.android.library)
alias(deps.plugins.kotlin.android)
alias(deps.plugins.kotlin.kapt)
alias(deps.plugins.hilt.android)
id("configuration")
}
android {
namespace = "com.tangem.data.wallet"
}
dependencies {
implementation(projects.core.utils)
implementation(projects.data.source.preferences)
implementation(projects.domain.wallets)
/** DI */
implementation(deps.hilt.android)
kapt(deps.hilt.kapt)
}

View file

@ -0,0 +1,16 @@
package com.tangem.data.wallets
import com.tangem.data.source.preferences.PreferencesDataSource
import com.tangem.domain.wallets.repository.WalletsRepository
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import kotlinx.coroutines.withContext
internal class DefaultWalletsRepository(
private val preferencesDataSource: PreferencesDataSource,
private val dispatchers: CoroutineDispatcherProvider,
) : WalletsRepository {
override suspend fun shouldSaveUserWallets(): Boolean {
return withContext(dispatchers.io) { preferencesDataSource.shouldSaveUserWallets }
}
}

View file

@ -0,0 +1,28 @@
package com.tangem.data.wallets.di
import com.tangem.data.source.preferences.PreferencesDataSource
import com.tangem.data.wallets.DefaultWalletsRepository
import com.tangem.domain.wallets.repository.WalletsRepository
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import javax.inject.Singleton
@Module
@InstallIn(SingletonComponent::class)
object WalletsDataModule {
@Provides
@Singleton
fun providesWalletsRepository(
preferencesDataSource: PreferencesDataSource,
coroutineDispatcherProvider: CoroutineDispatcherProvider,
): WalletsRepository {
return DefaultWalletsRepository(
preferencesDataSource = preferencesDataSource,
dispatchers = coroutineDispatcherProvider,
)
}
}

View file

@ -0,0 +1,8 @@
package com.tangem.domain.settings
import com.tangem.domain.settings.repositories.LegacySettingsRepository
class CanUseBiometryUseCase(private val legacySettingsRepository: LegacySettingsRepository) {
operator fun invoke(): Boolean = legacySettingsRepository.canUseBiometry()
}

View file

@ -0,0 +1,8 @@
package com.tangem.domain.settings
import com.tangem.domain.settings.repositories.SettingsRepository
class ShouldShowSaveWalletScreenUseCase(private val settingsRepository: SettingsRepository) {
suspend operator fun invoke(): Boolean = settingsRepository.shouldShowSaveUserWalletScreen()
}

View file

@ -0,0 +1,6 @@
package com.tangem.domain.settings.repositories
interface LegacySettingsRepository {
fun canUseBiometry(): Boolean
}

View file

@ -3,4 +3,6 @@ package com.tangem.domain.settings.repositories
interface SettingsRepository { interface SettingsRepository {
suspend fun isUserAlreadyRateApp(): Boolean suspend fun isUserAlreadyRateApp(): Boolean
suspend fun shouldShowSaveUserWalletScreen(): Boolean
} }

View file

@ -0,0 +1,6 @@
package com.tangem.domain.wallets.repository
interface WalletsRepository {
suspend fun shouldSaveUserWallets(): Boolean
}

View file

@ -0,0 +1,8 @@
package com.tangem.domain.wallets.usecase
import com.tangem.domain.wallets.repository.WalletsRepository
class ShouldSaveUserWalletsUseCase(private val walletsRepository: WalletsRepository) {
suspend operator fun invoke(): Boolean = walletsRepository.shouldSaveUserWallets()
}

View file

@ -115,12 +115,13 @@ include(":domain:app-theme:models")
// endregion Domain modules // endregion Domain modules
// region Data modules // region Data modules
include(":data:app-currency")
include(":data:app-theme")
include(":data:common") include(":data:common")
include(":data:card") include(":data:card")
include(":data:tokens") include(":data:tokens")
include(":data:source:preferences") include(":data:source:preferences")
include(":data:settings") include(":data:settings")
include(":data:txhistory") include(":data:txhistory")
include(":data:app-currency") include(":data:wallets")
include(":data:app-theme")
// endregion Data modules // endregion Data modules