diff --git a/features/details/impl/build.gradle.kts b/features/details/impl/build.gradle.kts index c6694323ba..82ca657a96 100644 --- a/features/details/impl/build.gradle.kts +++ b/features/details/impl/build.gradle.kts @@ -48,7 +48,6 @@ dependencies { implementation(deps.tangem.blockchain) /* AndroidX */ - implementation(deps.androidx.fragment.ktx) implementation(deps.androidx.activity.compose) implementation(deps.lifecycle.compose) diff --git a/features/manage-tokens/api/build.gradle.kts b/features/manage-tokens/api/build.gradle.kts index cbfb3f7b1f..0cf94d3840 100644 --- a/features/manage-tokens/api/build.gradle.kts +++ b/features/manage-tokens/api/build.gradle.kts @@ -9,5 +9,10 @@ android { } dependencies { - implementation(deps.compose.foundation) + /* Project - Domain */ + implementation(projects.domain.wallets.models) + + /* Project - Core */ + implementation(projects.core.ui) + implementation(projects.core.decompose) } \ No newline at end of file diff --git a/features/manage-tokens/api/src/main/kotlin/com/tangem/features/managetokens/component/ManageTokensComponent.kt b/features/manage-tokens/api/src/main/kotlin/com/tangem/features/managetokens/component/ManageTokensComponent.kt new file mode 100644 index 0000000000..54cb358614 --- /dev/null +++ b/features/manage-tokens/api/src/main/kotlin/com/tangem/features/managetokens/component/ManageTokensComponent.kt @@ -0,0 +1,14 @@ +package com.tangem.features.managetokens.component + +import com.tangem.core.decompose.factory.ComponentFactory +import com.tangem.core.ui.decompose.ComposableContentComponent +import com.tangem.domain.wallets.models.UserWalletId + +interface ManageTokensComponent : ComposableContentComponent { + + data class Params( + val userWalletId: UserWalletId, + ) + + interface Factory : ComponentFactory +} \ No newline at end of file diff --git a/features/manage-tokens/impl/build.gradle.kts b/features/manage-tokens/impl/build.gradle.kts index 88d462b52c..8e3cc2bddb 100644 --- a/features/manage-tokens/impl/build.gradle.kts +++ b/features/manage-tokens/impl/build.gradle.kts @@ -1,6 +1,7 @@ plugins { alias(deps.plugins.android.library) alias(deps.plugins.kotlin.android) + alias(deps.plugins.kotlin.serialization) alias(deps.plugins.kotlin.kapt) alias(deps.plugins.hilt.android) id("configuration") @@ -11,61 +12,30 @@ android { } dependencies { - /** AndroidX */ - implementation(deps.androidx.activity.compose) - implementation(deps.material) + /* Project - API */ + implementation(projects.features.manageTokens.api) - /** Compose */ - implementation(deps.compose.accompanist.systemUiController) - implementation(deps.compose.coil) - implementation(deps.compose.constraintLayout) - implementation(deps.compose.foundation) - implementation(deps.compose.material) - implementation(deps.compose.material3) - implementation(deps.compose.navigation) - implementation(deps.compose.navigation.hilt) - implementation(deps.compose.paging) - implementation(deps.compose.reorderable) - implementation(deps.compose.shimmer) + /* Project - Core */ + implementation(projects.core.decompose) + implementation(projects.core.ui) + implementation(projects.common.routing) + + /* AndroidX */ + implementation(deps.androidx.activity.compose) + implementation(deps.lifecycle.compose) + + /* Compose */ implementation(deps.compose.ui) implementation(deps.compose.ui.tooling) + implementation(deps.compose.foundation) + implementation(deps.compose.material3) + implementation(deps.compose.shimmer) - /** Other libraries */ - implementation(deps.arrow.core) - implementation(deps.jodatime) - implementation(deps.kotlin.immutable.collections) - implementation(deps.tangem.card.core) - implementation(deps.timber) - - /** DI */ + /* DI */ implementation(deps.hilt.android) kapt(deps.hilt.kapt) - /** Core modules */ - implementation(projects.core.analytics) - implementation(projects.core.analytics.models) - implementation(projects.core.featuretoggles) - implementation(projects.core.navigation) - implementation(projects.core.ui) - implementation(projects.core.utils) - - /** Project - Data */ - implementation(projects.data.tokens) - - /** Domain modules */ - implementation(projects.domain.card) - implementation(projects.domain.demo) - implementation(projects.domain.legacy) - implementation(projects.libs.blockchainSdk) - implementation(projects.domain.models) - implementation(projects.domain.settings) - implementation(projects.domain.tokens) - implementation(projects.domain.tokens.models) - implementation(projects.domain.wallets) - implementation(projects.domain.wallets.models) - implementation(projects.domain.appCurrency) - implementation(projects.domain.appCurrency.models) - - /** Feature Apis */ - implementation(projects.features.manageTokens.api) + /* Other */ + implementation(deps.kotlin.immutable.collections) + implementation(deps.timber) } \ No newline at end of file diff --git a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/component/preview/PreviewManageTokensComponent.kt b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/component/preview/PreviewManageTokensComponent.kt new file mode 100644 index 0000000000..5bf83bf727 --- /dev/null +++ b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/component/preview/PreviewManageTokensComponent.kt @@ -0,0 +1,23 @@ +package com.tangem.features.managetokens.component.preview + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import com.tangem.features.managetokens.component.ManageTokensComponent +import com.tangem.features.managetokens.entity.ManageTokensUM +import com.tangem.features.managetokens.ui.ManageTokensScreen +import kotlinx.collections.immutable.persistentListOf + +internal class PreviewManageTokensComponent : ManageTokensComponent { + + private val previewState: ManageTokensUM = ManageTokensUM( + popBack = {}, + ) + + @Composable + override fun Content(modifier: Modifier) { + ManageTokensScreen( + modifier = modifier, + state = previewState, + ) + } +} \ No newline at end of file diff --git a/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/ui/ManageTokensScreen.kt b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/ui/ManageTokensScreen.kt new file mode 100644 index 0000000000..8a4be14f9c --- /dev/null +++ b/features/manage-tokens/impl/src/main/kotlin/com/tangem/features/managetokens/ui/ManageTokensScreen.kt @@ -0,0 +1,35 @@ +package com.tangem.features.managetokens.ui + +import android.content.res.Configuration +import androidx.activity.compose.BackHandler +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.material3.Scaffold +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import com.tangem.core.ui.res.TangemThemePreview +import com.tangem.feature.managetokens.component.preview.PreviewManageTokensComponent +import com.tangem.feature.managetokens.entity.ManageTokensUM + +@Composable +internal fun ManageTokensScreen(state: ManageTokensUM, modifier: Modifier = Modifier) { + BackHandler(onBack = state.popBack) + + Scaffold( + modifier = modifier, + content = { + TODO("Not yet implemented") + }, + ) +} + +// region Preview +@Preview(showBackground = true, widthDp = 360, heightDp = 800) +@Preview(showBackground = true, widthDp = 360, heightDp = 800, uiMode = Configuration.UI_MODE_NIGHT_YES) +@Composable +private fun Preview_ManageTokens() { + TangemThemePreview { + PreviewManageTokensComponent().Content(Modifier.fillMaxWidth()) + } +} +// endregion Preview \ No newline at end of file diff --git a/plugins/configuration/src/main/kotlin/com/tangem/plugin/configuration/configurations/extension/BaseExtensionConfigurations.kt b/plugins/configuration/src/main/kotlin/com/tangem/plugin/configuration/configurations/extension/BaseExtensionConfigurations.kt index 1612e170ed..49a6869c47 100644 --- a/plugins/configuration/src/main/kotlin/com/tangem/plugin/configuration/configurations/extension/BaseExtensionConfigurations.kt +++ b/plugins/configuration/src/main/kotlin/com/tangem/plugin/configuration/configurations/extension/BaseExtensionConfigurations.kt @@ -24,7 +24,6 @@ internal fun BaseExtension.configureCompose(project: Project) { contains(":features:onboarding") || // TODO: divide on api/impl after migrating all onboarding to module contains(Regex(pattern = ":presentation\$")) || contains(Regex(pattern = ":app\$")) || // TODO: [REDACTED_JIRA] - contains(Regex(pattern = ":features:manage-tokens:api\$")) || // provides Composable function contains(Regex(pattern = ":features:markets:api\$")) || // provides Composable function contains(Regex(pattern = ":impl\$")) }