diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ef97f665df..570f9e96e3 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -50,14 +50,15 @@ dependencies { implementation(project(":libs:crypto")) implementation(project(":libs:auth")) - implementation(project(":data:source:preferences")) + implementation(projects.data.appCurrency) + implementation(projects.data.appTheme) implementation(projects.data.card) implementation(projects.data.common) implementation(projects.data.settings) + implementation(projects.data.source.preferences) implementation(projects.data.tokens) implementation(projects.data.txhistory) - implementation(projects.data.appCurrency) - implementation(projects.data.appTheme) + implementation(projects.data.wallets) /** Features */ implementation(project(":features:onboarding")) 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 7eb7a3d2cc..8e3d763c56 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 @@ -2,6 +2,7 @@ package com.tangem.tap.di.domain import com.tangem.domain.walletmanager.WalletManagersFacade import com.tangem.domain.wallets.legacy.WalletsStateHolder +import com.tangem.domain.wallets.repository.WalletsRepository import com.tangem.domain.wallets.usecase.* import dagger.Module import dagger.Provides @@ -60,4 +61,10 @@ internal object WalletsDomainModule { fun providesDeleteWalletUseCase(walletsStateHolder: WalletsStateHolder): DeleteWalletUseCase { return DeleteWalletUseCase(walletsStateHolder = walletsStateHolder) } + + @Provides + @ViewModelScoped + fun providesShouldSaveUserWalletsUseCase(walletsRepository: WalletsRepository): ShouldSaveUserWalletsUseCase { + return ShouldSaveUserWalletsUseCase(walletsRepository = walletsRepository) + } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/domain/settings/DefaultLegacySettingsRepository.kt b/app/src/main/java/com/tangem/tap/domain/settings/DefaultLegacySettingsRepository.kt new file mode 100644 index 0000000000..681d4ffabd --- /dev/null +++ b/app/src/main/java/com/tangem/tap/domain/settings/DefaultLegacySettingsRepository.kt @@ -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 +} \ No newline at end of file diff --git a/data/settings/src/main/java/com/tangem/data/settings/DefaultSettingsRepository.kt b/data/settings/src/main/java/com/tangem/data/settings/DefaultSettingsRepository.kt index c1ee6fc57e..c4d0074263 100644 --- a/data/settings/src/main/java/com/tangem/data/settings/DefaultSettingsRepository.kt +++ b/data/settings/src/main/java/com/tangem/data/settings/DefaultSettingsRepository.kt @@ -15,4 +15,8 @@ internal class DefaultSettingsRepository( preferencesDataSource.appRatingLaunchObserver.isReadyToShow() } } + + override suspend fun shouldShowSaveUserWalletScreen(): Boolean { + return withContext(dispatchers.io) { preferencesDataSource.shouldShowSaveUserWalletScreen } + } } \ No newline at end of file diff --git a/data/wallets/.gitignore b/data/wallets/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/data/wallets/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/data/wallets/build.gradle.kts b/data/wallets/build.gradle.kts new file mode 100644 index 0000000000..7bc383e45b --- /dev/null +++ b/data/wallets/build.gradle.kts @@ -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) +} \ No newline at end of file diff --git a/data/wallets/src/main/java/com/tangem/data/wallets/DefaultWalletsRepository.kt b/data/wallets/src/main/java/com/tangem/data/wallets/DefaultWalletsRepository.kt new file mode 100644 index 0000000000..848735ca16 --- /dev/null +++ b/data/wallets/src/main/java/com/tangem/data/wallets/DefaultWalletsRepository.kt @@ -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 } + } +} \ No newline at end of file diff --git a/data/wallets/src/main/java/com/tangem/data/wallets/di/WalletsDataModule.kt b/data/wallets/src/main/java/com/tangem/data/wallets/di/WalletsDataModule.kt new file mode 100644 index 0000000000..3f418202cb --- /dev/null +++ b/data/wallets/src/main/java/com/tangem/data/wallets/di/WalletsDataModule.kt @@ -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, + ) + } +} \ No newline at end of file diff --git a/domain/settings/src/main/java/com/tangem/domain/settings/CanUseBiometryUseCase.kt b/domain/settings/src/main/java/com/tangem/domain/settings/CanUseBiometryUseCase.kt new file mode 100644 index 0000000000..390c70dcc4 --- /dev/null +++ b/domain/settings/src/main/java/com/tangem/domain/settings/CanUseBiometryUseCase.kt @@ -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() +} \ No newline at end of file diff --git a/domain/settings/src/main/java/com/tangem/domain/settings/ShouldShowSaveWalletScreenUseCase.kt b/domain/settings/src/main/java/com/tangem/domain/settings/ShouldShowSaveWalletScreenUseCase.kt new file mode 100644 index 0000000000..872f62c157 --- /dev/null +++ b/domain/settings/src/main/java/com/tangem/domain/settings/ShouldShowSaveWalletScreenUseCase.kt @@ -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() +} \ No newline at end of file diff --git a/domain/settings/src/main/java/com/tangem/domain/settings/repositories/LegacySettingsRepository.kt b/domain/settings/src/main/java/com/tangem/domain/settings/repositories/LegacySettingsRepository.kt new file mode 100644 index 0000000000..9e1dc7cf3a --- /dev/null +++ b/domain/settings/src/main/java/com/tangem/domain/settings/repositories/LegacySettingsRepository.kt @@ -0,0 +1,6 @@ +package com.tangem.domain.settings.repositories + +interface LegacySettingsRepository { + + fun canUseBiometry(): Boolean +} \ No newline at end of file diff --git a/domain/settings/src/main/java/com/tangem/domain/settings/repositories/SettingsRepository.kt b/domain/settings/src/main/java/com/tangem/domain/settings/repositories/SettingsRepository.kt index c33c9d4cf7..4b6810e2d4 100644 --- a/domain/settings/src/main/java/com/tangem/domain/settings/repositories/SettingsRepository.kt +++ b/domain/settings/src/main/java/com/tangem/domain/settings/repositories/SettingsRepository.kt @@ -3,4 +3,6 @@ package com.tangem.domain.settings.repositories interface SettingsRepository { suspend fun isUserAlreadyRateApp(): Boolean + + suspend fun shouldShowSaveUserWalletScreen(): Boolean } \ No newline at end of file diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/repository/WalletsRepository.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/repository/WalletsRepository.kt new file mode 100644 index 0000000000..7d5d65f233 --- /dev/null +++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/repository/WalletsRepository.kt @@ -0,0 +1,6 @@ +package com.tangem.domain.wallets.repository + +interface WalletsRepository { + + suspend fun shouldSaveUserWallets(): Boolean +} \ No newline at end of file diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/ShouldSaveUserWalletsUseCase.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/ShouldSaveUserWalletsUseCase.kt new file mode 100644 index 0000000000..b21f04a003 --- /dev/null +++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/ShouldSaveUserWalletsUseCase.kt @@ -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() +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index d2d077c6e7..b2c3126321 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -115,12 +115,13 @@ include(":domain:app-theme:models") // endregion Domain modules // region Data modules +include(":data:app-currency") +include(":data:app-theme") include(":data:common") include(":data:card") include(":data:tokens") include(":data:source:preferences") include(":data:settings") include(":data:txhistory") -include(":data:app-currency") -include(":data:app-theme") +include(":data:wallets") // endregion Data modules \ No newline at end of file