Updated on 2026-08-14

This commit is contained in:
Tangem 2026-06-30 12:48:07 +04:00
parent 216796ed09
commit 0eae1c84fa
11 changed files with 207 additions and 125 deletions

View file

@ -3,7 +3,6 @@ plugins {
alias(deps.plugins.kotlin.android) alias(deps.plugins.kotlin.android)
alias(deps.plugins.kotlin.kapt) alias(deps.plugins.kotlin.kapt)
alias(deps.plugins.hilt.android) alias(deps.plugins.hilt.android)
alias(deps.plugins.ksp)
id("configuration") id("configuration")
} }
@ -12,19 +11,23 @@ android {
} }
dependencies { dependencies {
/** DI */
// region DI
implementation(deps.hilt.android) implementation(deps.hilt.android)
kapt(deps.hilt.kapt) kapt(deps.hilt.kapt)
// endregion
/** Other libraries */ // region Kotlin
implementation(deps.kotlin.coroutines)
// endregion
/** Core modules */ // region Other libraries
implementation(deps.amplitude.experiment)
// endregion
// region Core modules
implementation(projects.core.analytics.models) implementation(projects.core.analytics.models)
implementation(projects.core.datasource) implementation(projects.core.datasource)
implementation(projects.core.utils) implementation(projects.core.utils)
// endregion
implementation(projects.domain.models)
/** Amplitude experiment */
implementation(deps.amplitude.experiment)
} }

View file

@ -3,28 +3,39 @@ plugins {
alias(deps.plugins.kotlin.kapt) alias(deps.plugins.kotlin.kapt)
id("configuration") id("configuration")
} }
dependencies { dependencies {
/** DI */ // region DI
implementation(deps.hilt.core) implementation(deps.hilt.core)
kapt(deps.hilt.kapt) kapt(deps.hilt.kapt)
// endregion
/** Analytics - Models */ // region Kotlin
api(projects.core.analytics.models)
/** Domain */
implementation(projects.domain.analytics)
implementation(projects.domain.models)
/** Other */
implementation(deps.kotlin.coroutines) implementation(deps.kotlin.coroutines)
// endregion
/** Core shouldn't depend on core, but in case with utils and logging its necessary */ // region Tangem
implementation(tangemDeps.card.core) // for calculating user id hash
// endregion
// region Core modules
api(projects.core.analytics.models)
// Core shouldn't depend on core, but with utils and logging it's necessary.
implementation(projects.core.utils) implementation(projects.core.utils)
// endregion
/** For calculating user id hash */ // region Domain
implementation(tangemDeps.card.core) api(projects.domain.analytics)
// endregion
/** Tests */ // region Domain models
testImplementation(projects.test.core) api(projects.domain.models)
// endregion
// region Tests
testImplementation(deps.test.junit5)
testImplementation(deps.test.mockk)
testImplementation(deps.test.truth)
// endregion
} }

View file

@ -63,21 +63,32 @@ tasks.withType<Detekt>().configureEach {
exclude { it.file.absolutePath.contains("/build/generated/") } exclude { it.file.absolutePath.contains("/build/generated/") }
} }
dependencies { dependencies {
/** DI */
// region DI
implementation(deps.hilt.android) implementation(deps.hilt.android)
kapt(deps.hilt.kapt) kapt(deps.hilt.kapt)
// endregion
/** Local storages */ // region Kotlin
implementation(deps.kotlin.coroutines)
// endregion
// region AndroidX
implementation(deps.androidx.annotation)
implementation(deps.androidx.datastore) implementation(deps.androidx.datastore)
// endregion
/** Other libraries */ // region Other libraries
implementation(deps.moshi) implementation(deps.moshi)
implementation(deps.moshi.kotlin)
ksp(deps.moshi.kotlin.codegen) ksp(deps.moshi.kotlin.codegen)
// endregion
/** Core modules */ // region Core modules
implementation(projects.core.datasource) implementation(projects.core.datasource)
implementation(projects.core.utils) implementation(projects.core.utils)
// endregion
// region Tests
testImplementation(projects.test.core) testImplementation(projects.test.core)
// endregion
} }

View file

@ -60,70 +60,79 @@ androidComponents {
} }
dependencies { dependencies {
/** Project */ // region DI
implementation(projects.core.analytics)
implementation(projects.core.utils)
implementation(projects.core.res)
implementation(projects.domain.appTheme.models)
implementation(projects.domain.core)
implementation(projects.domain.tokens.models)
implementation(projects.domain.wallets.models)
implementation(projects.domain.balanceHiding.models)
implementation(projects.domain.txhistory.models)
implementation(projects.domain.staking.models)
implementation(projects.domain.onramp.models)
implementation(projects.domain.models)
implementation(projects.domain.nft.models)
implementation(projects.domain.walletConnect.models)
implementation(projects.domain.yieldSupply.models)
implementation(projects.domain.visa.models)
/** Tangem libraries */
implementation(tangemDeps.blockchain)
implementation(tangemDeps.card.core)
/** DI */
implementation(deps.hilt.android) implementation(deps.hilt.android)
kapt(deps.hilt.kapt) kapt(deps.hilt.kapt)
// endregion
/** Coroutines */ // region Kotlin
implementation(deps.kotlin.coroutines) api(deps.kotlin.coroutines)
implementation(deps.kotlin.coroutines.rx2)
api(deps.kotlin.datetime) api(deps.kotlin.datetime)
api(deps.kotlin.serialization) api(deps.kotlin.serialization)
// endregion
/** Logging */ // region AndroidX
implementation(deps.androidx.core)
api(deps.androidx.datastore)
// endregion
/** Network */ // region Network
api(deps.moshi) api(deps.moshi)
implementation(deps.moshi.kotlin)
implementation(deps.moshi.adapters) implementation(deps.moshi.adapters)
implementation(deps.moshi.adapters.ext) implementation(deps.moshi.adapters.ext)
implementation(deps.moshi.kotlin)
ksp(deps.moshi.kotlin.codegen)
api(deps.okHttp) api(deps.okHttp)
implementation(deps.okHttp.prettyLogging) implementation(deps.okHttp.prettyLogging)
implementation(deps.okio)
api(deps.retrofit) api(deps.retrofit)
implementation(deps.retrofit.moshi) api(deps.retrofit.moshi)
ksp(deps.moshi.kotlin.codegen)
kaptForObfuscatingVariants(deps.retrofit.response.type.keeper) kaptForObfuscatingVariants(deps.retrofit.response.type.keeper)
// endregion
/** Time */ // region Room
implementation(deps.jodatime) api(deps.room.runtime)
ksp(deps.room.compiler)
// endregion
/** Security */ // region Other libraries
implementation(deps.spongecastle.core) api(deps.jodatime)
runtimeOnly(deps.spongecastle.core)
// endregion
/** Chucker */ // region Chucker
debugImplementation(deps.chucker) debugImplementation(deps.chucker)
mockedImplementation(deps.chucker) mockedImplementation(deps.chucker)
externalImplementation(deps.chuckerStub) externalImplementation(deps.chuckerStub)
internalImplementation(deps.chuckerStub) internalImplementation(deps.chuckerStub)
releaseImplementation(deps.chuckerStub) releaseImplementation(deps.chuckerStub)
// endregion
/** Local storages */ // region Tangem
api(deps.androidx.datastore) api(tangemDeps.blockchain)
implementation(deps.room.runtime) api(tangemDeps.card.core)
implementation(deps.room.ktx) // endregion
ksp(deps.room.compiler)
// region Core modules
api(projects.core.analytics)
implementation(projects.core.analytics.models)
api(projects.core.utils)
implementation(projects.core.res)
// endregion
// region Domain models
api(projects.domain.models)
api(projects.domain.nft.models)
api(projects.domain.onramp.models)
api(projects.domain.staking.models)
api(projects.domain.txhistory.models)
api(projects.domain.visa.models)
api(projects.domain.walletConnect.models)
api(projects.domain.wallets.models)
api(projects.domain.yieldSupply.models)
// endregion
// region Tests
testImplementation(projects.test.core) testImplementation(projects.test.core)
// endregion
} }

View file

@ -10,12 +10,25 @@ android {
} }
dependencies { dependencies {
api(projects.core.utils)
api(deps.decompose)
api(deps.androidx.appCompat)
implementation(deps.kotlin.coroutines)
// region DI
implementation(deps.hilt.core) implementation(deps.hilt.core)
kapt(deps.hilt.kapt) kapt(deps.hilt.kapt)
// endregion
// region Kotlin
api(deps.kotlin.coroutines)
// endregion
// region AndroidX
api(deps.androidx.appCompat)
// endregion
// region Other libraries
api(deps.decompose)
// endregion
// region Core modules
api(projects.core.utils)
// endregion
} }

View file

@ -9,8 +9,13 @@ android {
} }
dependencies { dependencies {
api(projects.core.error)
implementation(tangemDeps.card.core) // region Tangem
implementation(tangemDeps.blockchain) api(tangemDeps.blockchain)
api(tangemDeps.card.core)
// endregion
// region Core modules
api(projects.core.error)
// endregion
} }

View file

@ -1,8 +1,6 @@
plugins { plugins {
alias(deps.plugins.android.library) alias(deps.plugins.android.library)
alias(deps.plugins.kotlin.android) alias(deps.plugins.kotlin.android)
alias(deps.plugins.kotlin.kapt)
alias(deps.plugins.hilt.android)
id("configuration") id("configuration")
} }
@ -11,10 +9,12 @@ android {
} }
dependencies { dependencies {
implementation(projects.core.utils)
// region DI
implementation(deps.hilt.android) implementation(deps.hilt.android)
kapt(deps.hilt.kapt) // endregion
implementation(deps.material) // region AndroidX
implementation(deps.androidx.core)
// endregion
} }

View file

@ -4,7 +4,7 @@ plugins {
} }
dependencies { dependencies {
// region Coroutines // region Kotlin
implementation(deps.kotlin.coroutines) api(deps.kotlin.coroutines)
// endregion // endregion
} }

View file

@ -10,12 +10,17 @@ android {
dependencies { dependencies {
implementation(projects.core.utils) // region AndroidX
api(deps.androidx.annotation)
// endregion
// region Firebase
// region Firebase libraries
implementation(platform(deps.firebase.bom)) implementation(platform(deps.firebase.bom))
implementation(deps.firebase.analytics) implementation(deps.firebase.analytics)
implementation(deps.firebase.crashlytics) implementation(deps.firebase.crashlytics)
// endregion // endregion
// region Core modules
implementation(projects.core.utils)
// endregion
} }

View file

@ -109,51 +109,53 @@ tasks.named("preBuild") {
} }
dependencies { dependencies {
/** Project - Domain */
implementation(projects.domain.appTheme.models)
implementation(projects.domain.express.models)
implementation(projects.domain.models)
implementation(projects.domain.tokens.models)
/** Project - Core */ // region DI
implementation(projects.core.res) implementation(deps.hilt.android)
implementation(projects.core.utils) // endregion
api(projects.core.decompose)
implementation(projects.core.error)
/** AndroidX libraries */ // region Kotlin
implementation(deps.androidx.fragment.ktx) api(deps.kotlin.coroutines)
api(deps.kotlin.immutable.collections)
api(deps.kotlin.serialization.core)
// endregion
// region Compose
implementation(deps.compose.accompanist.permission)
api(deps.compose.accompanist.systemUiController)
api(deps.compose.coil)
implementation(deps.compose.constraintLayout)
api(deps.compose.foundation)
api(deps.compose.material3)
api(deps.compose.paging)
api(deps.compose.reorderable)
api(deps.compose.shimmer)
implementation(deps.compose.ui.tooling)
implementation(deps.compose.ui.utils)
// endregion
// region AndroidX
api(deps.androidx.activity)
implementation(deps.androidx.activity.compose)
implementation(deps.androidx.annotation)
implementation(deps.androidx.appCompat)
implementation(deps.androidx.core)
implementation(deps.androidx.core.ktx)
implementation(deps.androidx.paging.runtime) implementation(deps.androidx.paging.runtime)
implementation(deps.lifecycle.runtime.ktx) api(deps.androidx.palette)
implementation(deps.androidx.palette) implementation(deps.androidx.savedState)
implementation(deps.androidx.windowManager) { implementation(deps.androidx.windowManager) {
exclude( exclude(
deps.kotlin.coroutines.android.get().module.group, deps.kotlin.coroutines.android.get().module.group,
deps.kotlin.coroutines.android.get().module.name deps.kotlin.coroutines.android.get().module.name,
) )
} }
api(deps.lifecycle.compose)
api(deps.lifecycle.runtime.ktx)
// endregion
/** Compose */ // region Other libraries
implementation(deps.compose.constraintLayout) api(deps.arrow.core)
implementation(deps.compose.foundation)
implementation(deps.compose.material3)
implementation(deps.compose.paging)
implementation(deps.compose.ui.tooling)
implementation(deps.compose.ui.utils)
implementation(deps.compose.coil)
implementation(deps.compose.navigation)
implementation(deps.compose.navigation.hilt)
api(deps.compose.reorderable)
/** Other libraries */
implementation(deps.compose.accompanist.systemUiController)
implementation(deps.compose.accompanist.permission)
implementation(deps.material)
implementation(deps.compose.shimmer)
implementation(deps.kotlin.immutable.collections)
implementation(deps.zxing.qrCore)
api(deps.jodatime)
implementation(deps.markdown)
api(deps.haze) { api(deps.haze) {
exclude(module = "activity-compose") exclude(module = "activity-compose")
exclude(module = "activity") exclude(module = "activity")
@ -164,9 +166,28 @@ dependencies {
exclude(module = "activity") exclude(module = "activity")
exclude(module = "activity-ktx") exclude(module = "activity-ktx")
} }
api(deps.jodatime)
api(deps.markdown)
implementation(deps.material)
implementation(deps.zxing.qrCore)
// endregion
/** Tests */ // region Core modules
api(projects.core.decompose)
api(projects.core.error)
implementation(projects.core.res)
implementation(projects.core.utils)
// endregion
// region Domain models
api(projects.domain.appTheme.models)
api(projects.domain.express.models)
api(projects.domain.models)
// endregion
// region Tests
testImplementation(deps.test.junit5)
testImplementation(deps.test.mockk) testImplementation(deps.test.mockk)
testImplementation(deps.test.truth) testImplementation(deps.test.truth)
testImplementation(deps.test.junit5) // endregion
} }

View file

@ -27,6 +27,7 @@ androidxBrowser = "1.4.0"
androidxConstraintLayout = "2.2.1" androidxConstraintLayout = "2.2.1"
androidxCore = "1.13.1" androidxCore = "1.13.1"
androidxKtx = "1.9.0" androidxKtx = "1.9.0"
androidxSavedState = "1.3.3"
androidxSplashScreen = "1.0.1" androidxSplashScreen = "1.0.1"
androidxFragment = "1.8.5" androidxFragment = "1.8.5"
androidxLifecycle = "2.5.1" androidxLifecycle = "2.5.1"
@ -76,6 +77,7 @@ lottie-compose = "6.6.0"
moshi = "1.15.1" moshi = "1.15.1"
moshiAdaptersExt = "0.1.5" moshiAdaptersExt = "0.1.5"
okhttp = "4.9.3" okhttp = "4.9.3"
okio = "3.7.0"
retrofit = "2.11.0" retrofit = "2.11.0"
retrofitMoshiConverter = "2.9.0" retrofitMoshiConverter = "2.9.0"
spongycastleCryptoCore = "1.58.0.0" spongycastleCryptoCore = "1.58.0.0"
@ -169,6 +171,7 @@ androidx-fragment-compose = { module = "androidx.fragment:fragment-compose", ver
androidx-paging-runtime = { module = "androidx.paging:paging-runtime", version.ref = "androidx-paging" } androidx-paging-runtime = { module = "androidx.paging:paging-runtime", version.ref = "androidx-paging" }
androidx-swipeRefreshLayout = { module = "androidx.swiperefreshlayout:swiperefreshlayout", version.ref = "swipeRefreshLayout" } androidx-swipeRefreshLayout = { module = "androidx.swiperefreshlayout:swiperefreshlayout", version.ref = "swipeRefreshLayout" }
androidx-palette = { module = "androidx.palette:palette", version.ref = "androidx-palette" } androidx-palette = { module = "androidx.palette:palette", version.ref = "androidx-palette" }
androidx-savedState = { module = "androidx.savedstate:savedstate", version.ref = "androidxSavedState" }
androidx-windowManager = { group = "androidx.window", name = "window", version.ref = "androidxWindowManager" } androidx-windowManager = { group = "androidx.window", name = "window", version.ref = "androidxWindowManager" }
lifecycle-common-java8 = { module = "androidx.lifecycle:lifecycle-common-java8", version.ref = "androidxLifecycle" } lifecycle-common-java8 = { module = "androidx.lifecycle:lifecycle-common-java8", version.ref = "androidxLifecycle" }
lifecycle-runtime-ktx = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "androidxLifecycle" } lifecycle-runtime-ktx = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "androidxLifecycle" }
@ -282,6 +285,7 @@ moshi-adapters-ext = { module = "dev.onenowy.moshipolymorphicadapter:moshi-polym
moshi-kotlin-codegen = { module = "com.squareup.moshi:moshi-kotlin-codegen", version.ref = "moshi" } moshi-kotlin-codegen = { module = "com.squareup.moshi:moshi-kotlin-codegen", version.ref = "moshi" }
okHttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } okHttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" }
okHttp-prettyLogging = { module = "com.github.ihsanbal:LoggingInterceptor", version.ref = "okHttp-prettyLogging" } okHttp-prettyLogging = { module = "com.github.ihsanbal:LoggingInterceptor", version.ref = "okHttp-prettyLogging" }
okio = { module = "com.squareup.okio:okio", version.ref = "okio" }
spongecastle-core = { module = "com.madgag.spongycastle:core", version.ref = "spongycastleCryptoCore" } spongecastle-core = { module = "com.madgag.spongycastle:core", version.ref = "spongycastleCryptoCore" }
retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" } retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
retrofit-response-type-keeper = { module = "com.squareup.retrofit2:response-type-keeper", version.ref = "retrofit" } retrofit-response-type-keeper = { module = "com.squareup.retrofit2:response-type-keeper", version.ref = "retrofit" }