diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowEnterInfoAmount.kt b/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowEnterInfoAmount.kt
index 5a92d21899..63903ea854 100644
--- a/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowEnterInfoAmount.kt
+++ b/core/ui/src/main/java/com/tangem/core/ui/components/inputrow/InputRowEnterInfoAmount.kt
@@ -141,7 +141,7 @@ fun InputRowEnterInfoAmountV2(
)
Icon(
modifier = Modifier.size(16.dp),
- painter = painterResource(R.drawable.ic_union_16),
+ painter = painterResource(R.drawable.ic_token_info_24),
tint = TangemTheme.colors.icon.informative,
contentDescription = null,
)
diff --git a/core/ui/src/main/res/drawable/ic_fee_new_24.xml b/core/ui/src/main/res/drawable/ic_fee_new_24.xml
index a644c488cf..435ad051d4 100644
--- a/core/ui/src/main/res/drawable/ic_fee_new_24.xml
+++ b/core/ui/src/main/res/drawable/ic_fee_new_24.xml
@@ -1,21 +1,27 @@
+ android:width="24dp"
+ android:height="24dp"
+ android:autoMirrored="true"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+
+ android:fillColor="#0099FF"
+ android:fillType="evenOdd"
+ android:pathData="M12,3.547C11.407,3.547 10.866,3.701 10.283,3.956C9.721,4.201 9.073,4.562 8.271,5.008L5.073,6.788C4.611,7.045 4.214,7.374 3.939,7.825C3.662,8.278 3.547,8.793 3.547,9.357L3.547,9.411C3.546,9.602 3.546,9.825 3.599,10.027C3.733,10.53 4.055,10.86 4.448,11.035C4.663,11.13 4.887,11.175 5.088,11.194V16.66C4.167,17.188 3.547,18.181 3.547,19.318C3.547,19.945 4.055,20.453 4.682,20.453H11.23C11.644,20.453 11.98,20.117 11.98,19.703C11.98,19.289 11.644,18.953 11.23,18.953H5.09C5.254,18.267 5.872,17.757 6.608,17.757H11.23C11.644,17.757 11.98,17.421 11.98,17.007C11.98,16.593 11.644,16.257 11.23,16.257H9.669V11.21H18.572C18.834,11.21 19.205,11.19 19.553,11.035C19.946,10.86 20.268,10.53 20.401,10.027C20.455,9.825 20.454,9.602 20.454,9.411L20.454,9.357C20.454,8.793 20.339,8.278 20.062,7.825C19.787,7.374 19.39,7.045 18.928,6.788L15.73,5.008C14.928,4.562 14.28,4.201 13.718,3.956C13.134,3.701 12.594,3.547 12,3.547ZM8.968,6.337C9.81,5.868 10.395,5.543 10.883,5.33C11.356,5.124 11.685,5.047 12,5.047C12.316,5.047 12.645,5.124 13.118,5.33C13.606,5.543 14.191,5.868 15.033,6.337L18.198,8.099C18.506,8.269 18.679,8.437 18.782,8.606C18.883,8.772 18.954,9 18.954,9.357C18.954,9.489 18.954,9.563 18.951,9.617C18.95,9.635 18.949,9.646 18.949,9.652C18.948,9.657 18.946,9.66 18.945,9.663L18.942,9.664C18.923,9.673 18.884,9.686 18.817,9.695C18.75,9.705 18.67,9.71 18.572,9.71H5.429C5.331,9.71 5.251,9.705 5.184,9.695C5.116,9.686 5.078,9.673 5.059,9.664L5.056,9.663C5.055,9.66 5.053,9.657 5.052,9.652C5.051,9.646 5.051,9.635 5.05,9.617C5.047,9.563 5.047,9.489 5.047,9.357C5.047,9 5.118,8.772 5.219,8.606C5.322,8.437 5.495,8.269 5.802,8.099L8.968,6.337ZM6.608,16.257L6.588,16.257V11.21H8.169V16.257H6.608Z" />
+
+ android:fillColor="#0099FF"
+ android:pathData="M13.396,18.788C13.103,19.081 13.103,19.556 13.396,19.849C13.689,20.142 14.164,20.142 14.457,19.849L19.849,14.456C20.142,14.163 20.142,13.689 19.849,13.396C19.556,13.103 19.081,13.103 18.788,13.396L13.396,18.788Z" />
+
+ android:fillColor="#0099FF"
+ android:fillType="evenOdd"
+ android:pathData="M13.176,14.503C13.176,13.77 13.77,13.176 14.504,13.176C15.237,13.176 15.832,13.77 15.832,14.503C15.832,15.237 15.237,15.831 14.504,15.831C13.77,15.831 13.176,15.237 13.176,14.503ZM14.504,14.676C14.599,14.676 14.676,14.599 14.676,14.503C14.676,14.408 14.599,14.331 14.504,14.331C14.409,14.331 14.332,14.408 14.332,14.503C14.332,14.599 14.409,14.676 14.504,14.676Z" />
+
+ android:fillColor="#0099FF"
+ android:fillType="evenOdd"
+ android:pathData="M18.741,17.412C18.008,17.412 17.413,18.007 17.413,18.74C17.413,19.473 18.008,20.068 18.741,20.068C19.474,20.068 20.069,19.473 20.069,18.74C20.069,18.007 19.474,17.412 18.741,17.412ZM18.913,18.74C18.913,18.835 18.836,18.912 18.741,18.912C18.646,18.912 18.569,18.835 18.569,18.74C18.569,18.645 18.646,18.568 18.741,18.568C18.836,18.568 18.913,18.645 18.913,18.74Z" />
+
diff --git a/core/ui/src/main/res/drawable/ic_token_info_24.xml b/core/ui/src/main/res/drawable/ic_token_info_24.xml
new file mode 100644
index 0000000000..87c467d679
--- /dev/null
+++ b/core/ui/src/main/res/drawable/ic_token_info_24.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
diff --git a/core/ui/src/main/res/drawable/ic_union_16.xml b/core/ui/src/main/res/drawable/ic_union_16.xml
deleted file mode 100644
index 3281f5e0ff..0000000000
--- a/core/ui/src/main/res/drawable/ic_union_16.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
diff --git a/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/FeeSelectorBlockComponent.kt b/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/FeeSelectorBlockComponent.kt
new file mode 100644
index 0000000000..bfb687f2eb
--- /dev/null
+++ b/features/send-v2/api/src/main/java/com/tangem/features/send/v2/api/FeeSelectorBlockComponent.kt
@@ -0,0 +1,9 @@
+package com.tangem.features.send.v2.api
+
+import com.tangem.core.decompose.factory.ComponentFactory
+import com.tangem.core.ui.decompose.ComposableContentComponent
+
+interface FeeSelectorBlockComponent : ComposableContentComponent {
+
+ interface Factory : ComponentFactory
+}
\ No newline at end of file
diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/feeselector/DefaultFeeSelectorBlockComponent.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/feeselector/DefaultFeeSelectorBlockComponent.kt
new file mode 100644
index 0000000000..96c3c5fd9e
--- /dev/null
+++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/feeselector/DefaultFeeSelectorBlockComponent.kt
@@ -0,0 +1,92 @@
+package com.tangem.features.send.v2.feeselector
+
+import android.content.res.Configuration
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.*
+import androidx.compose.material3.Icon
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.tooling.preview.Devices
+import androidx.compose.ui.tooling.preview.Preview
+import androidx.compose.ui.unit.dp
+import com.tangem.core.decompose.context.AppComponentContext
+import com.tangem.core.ui.extensions.stringResourceSafe
+import com.tangem.core.ui.res.TangemTheme
+import com.tangem.core.ui.res.TangemThemePreview
+import com.tangem.features.send.v2.api.FeeSelectorBlockComponent
+import com.tangem.features.send.v2.impl.R
+import dagger.assisted.Assisted
+import dagger.assisted.AssistedFactory
+import dagger.assisted.AssistedInject
+
+@Suppress("UnusedPrivateMember")
+internal class DefaultFeeSelectorBlockComponent @AssistedInject constructor(
+ @Assisted appComponentContext: AppComponentContext,
+ @Assisted params: Unit,
+) : FeeSelectorBlockComponent, AppComponentContext by appComponentContext {
+
+ @Composable
+ override fun Content(modifier: Modifier) {
+ FeeSelectorBlockContent(modifier = modifier)
+ }
+
+ @AssistedFactory
+ interface Factory : FeeSelectorBlockComponent.Factory {
+ override fun create(context: AppComponentContext, params: Unit): DefaultFeeSelectorBlockComponent
+ }
+}
+
+@Composable
+private fun FeeSelectorBlockContent(modifier: Modifier = Modifier) {
+ Row(
+ modifier = modifier
+ .background(TangemTheme.colors.background.action)
+ .padding(12.dp),
+ verticalAlignment = Alignment.CenterVertically,
+ ) {
+ Icon(
+ modifier = Modifier.size(24.dp),
+ painter = painterResource(R.drawable.ic_fee_new_24),
+ contentDescription = null,
+ tint = TangemTheme.colors.icon.accent,
+ )
+ Text(
+ modifier = Modifier.padding(start = TangemTheme.dimens.spacing4),
+ text = stringResourceSafe(R.string.common_network_fee_title),
+ style = TangemTheme.typography.body1,
+ color = TangemTheme.colors.text.primary1,
+ )
+ Icon(
+ modifier = Modifier
+ .padding(start = TangemTheme.dimens.spacing6)
+ .size(TangemTheme.dimens.size16),
+ painter = painterResource(id = R.drawable.ic_token_info_24),
+ contentDescription = null,
+ tint = TangemTheme.colors.icon.informative,
+ )
+ Spacer(modifier = Modifier.weight(1f))
+ Text(
+ text = "~ 0.25 \$",
+ style = TangemTheme.typography.body1,
+ color = TangemTheme.colors.text.tertiary,
+ )
+ Icon(
+ modifier = Modifier.size(width = 18.dp, height = 24.dp),
+ painter = painterResource(id = R.drawable.ic_select_18_24),
+ contentDescription = null,
+ tint = TangemTheme.colors.icon.informative,
+ )
+ }
+}
+
+@Preview(showBackground = true, device = Devices.PIXEL_7_PRO)
+@Preview(showBackground = true, device = Devices.PIXEL_7_PRO, uiMode = Configuration.UI_MODE_NIGHT_YES)
+@Composable
+private fun FeeSelectorBlockContent_Preview() {
+ TangemThemePreview {
+ FeeSelectorBlockContent(modifier = Modifier.fillMaxWidth())
+ }
+}
\ No newline at end of file
diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/feeselector/di/FeeSelectorFeatureModule.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/feeselector/di/FeeSelectorFeatureModule.kt
index ac270168fe..1b6f3fe484 100644
--- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/feeselector/di/FeeSelectorFeatureModule.kt
+++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/feeselector/di/FeeSelectorFeatureModule.kt
@@ -1,6 +1,8 @@
package com.tangem.features.send.v2.feeselector.di
+import com.tangem.features.send.v2.api.FeeSelectorBlockComponent
import com.tangem.features.send.v2.api.FeeSelectorComponent
+import com.tangem.features.send.v2.feeselector.DefaultFeeSelectorBlockComponent
import com.tangem.features.send.v2.feeselector.DefaultFeeSelectorComponent
import dagger.Binds
import dagger.Module
@@ -15,4 +17,8 @@ internal interface FeeSelectorFeatureModule {
@Binds
@Singleton
fun bindComponentFactory(factory: DefaultFeeSelectorComponent.Factory): FeeSelectorComponent.Factory
+
+ @Binds
+ @Singleton
+ fun bindBlockComponentFactory(factory: DefaultFeeSelectorBlockComponent.Factory): FeeSelectorBlockComponent.Factory
}
\ No newline at end of file
diff --git a/features/walletconnect/impl/build.gradle.kts b/features/walletconnect/impl/build.gradle.kts
index 53a4e3c17c..625e3afceb 100644
--- a/features/walletconnect/impl/build.gradle.kts
+++ b/features/walletconnect/impl/build.gradle.kts
@@ -14,6 +14,7 @@ android {
dependencies {
implementation(projects.features.wallet.api)
implementation(projects.features.walletconnect.api)
+ implementation(projects.features.sendV2.api)
/** Core */
implementation(projects.core.configToggles)
diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/routing/DefaultWcRoutingComponent.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/routing/DefaultWcRoutingComponent.kt
index 4e0a019cb7..adbaa219c2 100644
--- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/routing/DefaultWcRoutingComponent.kt
+++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/routing/DefaultWcRoutingComponent.kt
@@ -14,6 +14,7 @@ import com.tangem.core.decompose.context.AppComponentContext
import com.tangem.core.decompose.context.childByContext
import com.tangem.core.decompose.model.getOrCreateModel
import com.tangem.core.ui.decompose.ComposableContentComponent
+import com.tangem.features.send.v2.api.FeeSelectorBlockComponent
import com.tangem.features.walletconnect.components.WcRoutingComponent
import com.tangem.features.walletconnect.connections.components.AlertsComponent
import com.tangem.features.walletconnect.connections.components.WcPairComponent
@@ -29,6 +30,7 @@ import dagger.assisted.AssistedInject
internal class DefaultWcRoutingComponent @AssistedInject constructor(
@Assisted private val appComponentContext: AppComponentContext,
@Assisted params: Unit,
+ private val feeSelectorBlockComponentFactory: FeeSelectorBlockComponent.Factory,
) : AppComponentContext by appComponentContext, WcRoutingComponent {
private val model: WcRoutingModel = getOrCreateModel()
@@ -62,14 +64,17 @@ internal class DefaultWcRoutingComponent @AssistedInject constructor(
is WcInnerRoute.SignMessage -> WcSignTransactionContainerComponent(
appComponentContext = childContext,
params = WcTransactionModelParams(config.rawRequest),
+ feeSelectorBlockComponentFactory = feeSelectorBlockComponentFactory,
)
is WcInnerRoute.AddNetwork -> WcAddNetworkContainerComponent(
appComponentContext = childContext,
params = WcTransactionModelParams(config.rawRequest),
+ feeSelectorBlockComponentFactory = feeSelectorBlockComponentFactory,
)
is WcInnerRoute.Send -> WcSendTransactionContainerComponent(
appComponentContext = childContext,
params = WcTransactionModelParams(config.rawRequest),
+ feeSelectorBlockComponentFactory = feeSelectorBlockComponentFactory,
)
is WcInnerRoute.Pair -> WcPairComponent(
appComponentContext = childContext,
diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/PreviewFeeSelectorBlockComponent.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/PreviewFeeSelectorBlockComponent.kt
new file mode 100644
index 0000000000..00c218f576
--- /dev/null
+++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/PreviewFeeSelectorBlockComponent.kt
@@ -0,0 +1,63 @@
+package com.tangem.features.walletconnect.transaction.components
+
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.material3.Icon
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.unit.dp
+import com.tangem.core.ui.extensions.stringResourceSafe
+import com.tangem.core.ui.res.TangemTheme
+import com.tangem.features.send.v2.api.FeeSelectorBlockComponent
+import com.tangem.features.walletconnect.impl.R
+
+internal class PreviewFeeSelectorBlockComponent : FeeSelectorBlockComponent {
+ @Composable
+ override fun Content(modifier: Modifier) {
+ Row(
+ modifier = modifier
+ .background(TangemTheme.colors.background.action)
+ .padding(12.dp),
+ verticalAlignment = Alignment.CenterVertically,
+ ) {
+ Icon(
+ modifier = Modifier.size(24.dp),
+ painter = painterResource(R.drawable.ic_fee_new_24),
+ contentDescription = null,
+ tint = TangemTheme.colors.icon.accent,
+ )
+ Text(
+ modifier = Modifier.padding(start = TangemTheme.dimens.spacing4),
+ text = stringResourceSafe(R.string.common_network_fee_title),
+ style = TangemTheme.typography.body1,
+ color = TangemTheme.colors.text.primary1,
+ )
+ Icon(
+ modifier = Modifier
+ .padding(start = TangemTheme.dimens.spacing6)
+ .size(TangemTheme.dimens.size16),
+ painter = painterResource(id = R.drawable.ic_token_info_24),
+ contentDescription = null,
+ tint = TangemTheme.colors.icon.informative,
+ )
+ Spacer(modifier = Modifier.weight(1f))
+ Text(
+ text = "~ 0.25 \$",
+ style = TangemTheme.typography.body1,
+ color = TangemTheme.colors.text.tertiary,
+ )
+ Icon(
+ modifier = Modifier.size(width = 18.dp, height = 24.dp),
+ painter = painterResource(id = R.drawable.ic_select_18_24),
+ contentDescription = null,
+ tint = TangemTheme.colors.icon.informative,
+ )
+ }
+ }
+}
\ No newline at end of file
diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/chain/WcAddNetworkContainerComponent.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/chain/WcAddNetworkContainerComponent.kt
index 7c9b4b33fc..86d6e850a2 100644
--- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/chain/WcAddNetworkContainerComponent.kt
+++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/chain/WcAddNetworkContainerComponent.kt
@@ -5,6 +5,7 @@ import com.tangem.core.decompose.context.AppComponentContext
import com.tangem.core.decompose.context.childByContext
import com.tangem.core.decompose.model.getOrCreateModel
import com.tangem.core.ui.decompose.ComposableBottomSheetComponent
+import com.tangem.features.send.v2.api.FeeSelectorBlockComponent
import com.tangem.features.walletconnect.transaction.components.common.WcCommonTransactionComponentDelegate
import com.tangem.features.walletconnect.transaction.components.common.WcTransactionModelParams
import com.tangem.features.walletconnect.transaction.components.common.getWcCommonScreen
@@ -14,7 +15,8 @@ import com.tangem.features.walletconnect.transaction.routes.WcTransactionRoutes
internal class WcAddNetworkContainerComponent(
appComponentContext: AppComponentContext,
params: WcTransactionModelParams,
-) : WcCommonTransactionComponentDelegate(appComponentContext) {
+ feeSelectorBlockComponentFactory: FeeSelectorBlockComponent.Factory,
+) : WcCommonTransactionComponentDelegate(appComponentContext, feeSelectorBlockComponentFactory) {
private val model: WcAddNetworkModel = getOrCreateModel(params = params)
diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/common/WcCommonTransactionComponentDelegate.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/common/WcCommonTransactionComponentDelegate.kt
index 1be9296325..87ae3eec22 100644
--- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/common/WcCommonTransactionComponentDelegate.kt
+++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/common/WcCommonTransactionComponentDelegate.kt
@@ -15,10 +15,12 @@ import com.tangem.core.decompose.context.AppComponentContext
import com.tangem.core.decompose.navigation.inner.InnerRouter
import com.tangem.core.ui.decompose.ComposableBottomSheetComponent
import com.tangem.core.ui.decompose.ComposableContentComponent
+import com.tangem.features.send.v2.api.FeeSelectorBlockComponent
import com.tangem.features.walletconnect.transaction.routes.WcTransactionRoutes
internal abstract class WcCommonTransactionComponentDelegate(
private val appComponentContext: AppComponentContext,
+ private val feeSelectorBlockComponentFactory: FeeSelectorBlockComponent.Factory,
) : AppComponentContext by appComponentContext, ComposableContentComponent {
private var stackNavigation: StackNavigation? = null
@@ -29,6 +31,10 @@ internal abstract class WcCommonTransactionComponentDelegate(
InnerRouter(stackNavigation = it, popCallback = { onChildBack() })
}
}
+ protected val feeSelectorBlockComponent = feeSelectorBlockComponentFactory.create(
+ context = appComponentContext,
+ params = Unit,
+ )
protected fun init(
navigation: StackNavigation,
diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/send/WcSendTransactionComponent.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/send/WcSendTransactionComponent.kt
index 2953ccb838..a6b69fd2b0 100644
--- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/send/WcSendTransactionComponent.kt
+++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/send/WcSendTransactionComponent.kt
@@ -5,12 +5,14 @@ import androidx.compose.runtime.getValue
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.tangem.core.decompose.context.AppComponentContext
import com.tangem.core.ui.decompose.ComposableBottomSheetComponent
+import com.tangem.features.send.v2.api.FeeSelectorBlockComponent
import com.tangem.features.walletconnect.transaction.model.WcSendTransactionModel
import com.tangem.features.walletconnect.transaction.ui.send.WcSendTransactionModalBottomSheet
internal class WcSendTransactionComponent(
private val appComponentContext: AppComponentContext,
private val model: WcSendTransactionModel,
+ private val feeSelectorBlockComponent: FeeSelectorBlockComponent,
) : AppComponentContext by appComponentContext, ComposableBottomSheetComponent {
override fun dismiss() {
@@ -24,6 +26,7 @@ internal class WcSendTransactionComponent(
if (content != null) {
WcSendTransactionModalBottomSheet(
state = content!!.transaction,
+ feeSelectorBlockComponent = feeSelectorBlockComponent,
onClickTransactionRequest = model::showTransactionRequest,
onBack = router::pop,
onDismiss = ::dismiss,
diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/send/WcSendTransactionContainerComponent.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/send/WcSendTransactionContainerComponent.kt
index 420e419ce1..e80290de33 100644
--- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/send/WcSendTransactionContainerComponent.kt
+++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/send/WcSendTransactionContainerComponent.kt
@@ -5,6 +5,7 @@ import com.tangem.core.decompose.context.AppComponentContext
import com.tangem.core.decompose.context.childByContext
import com.tangem.core.decompose.model.getOrCreateModel
import com.tangem.core.ui.decompose.ComposableBottomSheetComponent
+import com.tangem.features.send.v2.api.FeeSelectorBlockComponent
import com.tangem.features.walletconnect.transaction.components.common.WcCommonTransactionComponentDelegate
import com.tangem.features.walletconnect.transaction.components.common.WcTransactionModelParams
import com.tangem.features.walletconnect.transaction.components.common.getWcCommonScreen
@@ -14,7 +15,8 @@ import com.tangem.features.walletconnect.transaction.routes.WcTransactionRoutes
internal class WcSendTransactionContainerComponent(
appComponentContext: AppComponentContext,
params: WcTransactionModelParams,
-) : WcCommonTransactionComponentDelegate(appComponentContext) {
+ feeSelectorBlockComponentFactory: FeeSelectorBlockComponent.Factory,
+) : WcCommonTransactionComponentDelegate(appComponentContext, feeSelectorBlockComponentFactory) {
private val model: WcSendTransactionModel = getOrCreateModel(params = params)
@@ -40,6 +42,10 @@ internal class WcSendTransactionContainerComponent(
}
private fun createTransactionComponent(appComponentContext: AppComponentContext): WcSendTransactionComponent {
- return WcSendTransactionComponent(appComponentContext = appComponentContext, model = model)
+ return WcSendTransactionComponent(
+ appComponentContext = appComponentContext,
+ model = model,
+ feeSelectorBlockComponent = feeSelectorBlockComponent,
+ )
}
}
\ No newline at end of file
diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/sign/WcSignTransactionComponent.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/sign/WcSignTransactionComponent.kt
index 92550465c1..4ca73d8c25 100644
--- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/sign/WcSignTransactionComponent.kt
+++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/sign/WcSignTransactionComponent.kt
@@ -5,12 +5,14 @@ import androidx.compose.runtime.getValue
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.tangem.core.decompose.context.AppComponentContext
import com.tangem.core.ui.decompose.ComposableBottomSheetComponent
+import com.tangem.features.send.v2.api.FeeSelectorBlockComponent
import com.tangem.features.walletconnect.transaction.model.WcSignTransactionModel
import com.tangem.features.walletconnect.transaction.ui.sign.WcSignTransactionModalBottomSheetContent
internal class WcSignTransactionComponent(
private val appComponentContext: AppComponentContext,
private val model: WcSignTransactionModel,
+ private val feeSelectorBlockComponent: FeeSelectorBlockComponent,
) : AppComponentContext by appComponentContext, ComposableBottomSheetComponent {
override fun dismiss() {
@@ -24,6 +26,7 @@ internal class WcSignTransactionComponent(
if (content != null) {
WcSignTransactionModalBottomSheetContent(
state = content!!.transaction,
+ feeSelectorBlockComponent = feeSelectorBlockComponent,
onClickTransactionRequest = model::showTransactionRequest,
onBack = router::pop,
onDismiss = ::dismiss,
diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/sign/WcSignTransactionContainerComponent.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/sign/WcSignTransactionContainerComponent.kt
index cdfd63915b..c9d6c4bdba 100644
--- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/sign/WcSignTransactionContainerComponent.kt
+++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/components/sign/WcSignTransactionContainerComponent.kt
@@ -5,6 +5,7 @@ import com.tangem.core.decompose.context.AppComponentContext
import com.tangem.core.decompose.context.childByContext
import com.tangem.core.decompose.model.getOrCreateModel
import com.tangem.core.ui.decompose.ComposableBottomSheetComponent
+import com.tangem.features.send.v2.api.FeeSelectorBlockComponent
import com.tangem.features.walletconnect.transaction.components.common.WcCommonTransactionComponentDelegate
import com.tangem.features.walletconnect.transaction.components.common.WcTransactionModelParams
import com.tangem.features.walletconnect.transaction.components.common.getWcCommonScreen
@@ -14,7 +15,8 @@ import com.tangem.features.walletconnect.transaction.routes.WcTransactionRoutes
internal class WcSignTransactionContainerComponent(
appComponentContext: AppComponentContext,
params: WcTransactionModelParams,
-) : WcCommonTransactionComponentDelegate(appComponentContext) {
+ feeSelectorBlockComponentFactory: FeeSelectorBlockComponent.Factory,
+) : WcCommonTransactionComponentDelegate(appComponentContext, feeSelectorBlockComponentFactory) {
private val model: WcSignTransactionModel = getOrCreateModel(params = params)
@@ -40,6 +42,10 @@ internal class WcSignTransactionContainerComponent(
}
private fun createTransactionComponent(appComponentContext: AppComponentContext): WcSignTransactionComponent {
- return WcSignTransactionComponent(appComponentContext = appComponentContext, model = model)
+ return WcSignTransactionComponent(
+ appComponentContext = appComponentContext,
+ model = model,
+ feeSelectorBlockComponent = feeSelectorBlockComponent,
+ )
}
}
\ No newline at end of file
diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/common/WcNetworkFeeItem.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/common/WcNetworkFeeItem.kt
deleted file mode 100644
index df6080b3e4..0000000000
--- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/common/WcNetworkFeeItem.kt
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.tangem.features.walletconnect.transaction.ui.common
-
-import androidx.compose.animation.AnimatedContent
-import androidx.compose.foundation.layout.*
-import androidx.compose.foundation.shape.CircleShape
-import androidx.compose.material3.Icon
-import androidx.compose.material3.Text
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.Alignment
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.draw.clip
-import androidx.compose.ui.res.painterResource
-import com.tangem.core.ui.extensions.stringResourceSafe
-import com.tangem.core.ui.res.TangemTheme
-import com.tangem.features.walletconnect.impl.R
-
-@Composable
-internal fun WcNetworkFeeItem(networkFeeText: String, modifier: Modifier = Modifier) {
- Row(
- modifier = modifier,
- verticalAlignment = Alignment.CenterVertically,
- ) {
- Icon(
- modifier = Modifier.size(TangemTheme.dimens.size24),
- painter = painterResource(R.drawable.ic_fee_new_24),
- contentDescription = null,
- tint = TangemTheme.colors.icon.accent,
- )
-
- Text(
- modifier = Modifier.padding(start = TangemTheme.dimens.spacing8),
- text = stringResourceSafe(R.string.common_network_fee_title),
- style = TangemTheme.typography.body1,
- color = TangemTheme.colors.text.primary1,
- )
-
- Icon(
- modifier = Modifier
- .padding(start = TangemTheme.dimens.spacing6)
- .size(TangemTheme.dimens.size16),
- painter = painterResource(id = R.drawable.ic_information_24),
- tint = TangemTheme.colors.icon.informative,
- contentDescription = null,
- )
-
- Spacer(modifier = Modifier.weight(1f))
-
- Row(
- verticalAlignment = Alignment.CenterVertically,
- horizontalArrangement = Arrangement.End,
- ) {
- AnimatedContent(
- targetState = networkFeeText,
- label = "Animate Network fee text",
- ) { fee ->
- Text(
- text = fee,
- style = TangemTheme.typography.body1,
- color = TangemTheme.colors.text.tertiary,
- )
- }
- Spacer(modifier = Modifier.width(TangemTheme.dimens.spacing6))
- Icon(
- modifier = Modifier
- .clip(CircleShape)
- .size(width = TangemTheme.dimens.size18, height = TangemTheme.dimens.size24),
- painter = painterResource(id = R.drawable.ic_select_18_24),
- tint = TangemTheme.colors.icon.informative,
- contentDescription = null,
- )
- }
- }
-}
\ No newline at end of file
diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/common/WcSendTransactionItems.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/common/WcSendTransactionItems.kt
index 0767feb930..80054def8d 100644
--- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/common/WcSendTransactionItems.kt
+++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/common/WcSendTransactionItems.kt
@@ -12,14 +12,15 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.unit.dp
import com.tangem.core.ui.components.divider.DividerWithPadding
import com.tangem.core.ui.res.TangemTheme
+import com.tangem.features.send.v2.api.FeeSelectorBlockComponent
import com.tangem.features.walletconnect.transaction.entity.common.WcNetworkInfoUM
@Composable
internal fun WcSendTransactionItems(
walletName: String,
networkInfo: WcNetworkInfoUM,
+ feeSelectorBlockComponent: FeeSelectorBlockComponent,
modifier: Modifier = Modifier,
- networkFee: String? = null,
address: String? = null,
) {
Column(
@@ -50,12 +51,7 @@ internal fun WcSendTransactionItems(
addressText = address,
)
}
- if (!networkFee.isNullOrEmpty()) {
- DividerWithPadding(start = TangemTheme.dimens.spacing40, end = TangemTheme.dimens.spacing12)
- WcNetworkFeeItem(
- modifier = itemsModifier,
- networkFeeText = networkFee,
- )
- }
+ DividerWithPadding(start = 40.dp, end = 12.dp)
+ feeSelectorBlockComponent.Content(Modifier)
}
}
\ No newline at end of file
diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/send/WcSendTransactionModalBottomSheet.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/send/WcSendTransactionModalBottomSheet.kt
index 70a4e5ec02..9e66c41bc8 100644
--- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/send/WcSendTransactionModalBottomSheet.kt
+++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/send/WcSendTransactionModalBottomSheet.kt
@@ -24,9 +24,11 @@ import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
+import com.tangem.features.send.v2.api.FeeSelectorBlockComponent
import com.tangem.features.walletconnect.connections.entity.VerifiedDAppState
import com.tangem.features.walletconnect.connections.ui.WcAppInfoItem
import com.tangem.features.walletconnect.impl.R
+import com.tangem.features.walletconnect.transaction.components.PreviewFeeSelectorBlockComponent
import com.tangem.features.walletconnect.transaction.entity.blockaid.WcEstimatedWalletChangeUM
import com.tangem.features.walletconnect.transaction.entity.blockaid.WcEstimatedWalletChangesUM
import com.tangem.features.walletconnect.transaction.entity.blockaid.WcSendReceiveTransactionCheckResultsUM
@@ -40,9 +42,11 @@ import com.tangem.features.walletconnect.transaction.ui.common.WcTransactionRequ
import com.tangem.features.walletconnect.transaction.ui.common.WcTransactionRequestItem
import kotlinx.collections.immutable.persistentListOf
+@Suppress("LongParameterList")
@Composable
internal fun WcSendTransactionModalBottomSheet(
state: WcSendTransactionItemUM,
+ feeSelectorBlockComponent: FeeSelectorBlockComponent,
onClickTransactionRequest: () -> Unit,
onBack: () -> Unit,
onDismiss: () -> Unit,
@@ -99,7 +103,7 @@ internal fun WcSendTransactionModalBottomSheet(
WcSendTransactionItems(
walletName = state.walletName,
networkInfo = state.networkInfo,
- networkFee = state.networkFee,
+ feeSelectorBlockComponent = feeSelectorBlockComponent,
address = state.address,
)
}
@@ -141,7 +145,14 @@ private fun WcSendTransactionBottomSheetPreview(
)
},
content = {
- WcSendTransactionModalBottomSheet(state, {}, {}, {}, {})
+ WcSendTransactionModalBottomSheet(
+ state = state,
+ feeSelectorBlockComponent = PreviewFeeSelectorBlockComponent(),
+ onClickTransactionRequest = {},
+ onBack = {},
+ onDismiss = {},
+ onClickAllowToSpend = {},
+ )
},
)
}
diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/sign/WcSignTransactionModalBottomSheetContent.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/sign/WcSignTransactionModalBottomSheetContent.kt
index 3791a02ae4..bdf2adb43a 100644
--- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/sign/WcSignTransactionModalBottomSheetContent.kt
+++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/ui/sign/WcSignTransactionModalBottomSheetContent.kt
@@ -25,9 +25,11 @@ import com.tangem.core.ui.components.divider.DividerWithPadding
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
+import com.tangem.features.send.v2.api.FeeSelectorBlockComponent
import com.tangem.features.walletconnect.connections.entity.VerifiedDAppState
import com.tangem.features.walletconnect.connections.ui.WcAppInfoItem
import com.tangem.features.walletconnect.impl.R
+import com.tangem.features.walletconnect.transaction.components.PreviewFeeSelectorBlockComponent
import com.tangem.features.walletconnect.transaction.entity.common.WcNetworkInfoUM
import com.tangem.features.walletconnect.transaction.entity.common.WcTransactionAppInfoContentUM
import com.tangem.features.walletconnect.transaction.entity.sign.WcSignTransactionItemUM
@@ -36,6 +38,7 @@ import com.tangem.features.walletconnect.transaction.ui.common.*
@Composable
internal fun WcSignTransactionModalBottomSheetContent(
state: WcSignTransactionItemUM,
+ feeSelectorBlockComponent: FeeSelectorBlockComponent,
onClickTransactionRequest: () -> Unit,
onBack: () -> Unit,
onDismiss: () -> Unit,
@@ -84,7 +87,7 @@ internal fun WcSignTransactionModalBottomSheetContent(
)
}
Column(modifier = Modifier.padding(top = 16.dp)) {
- WcSignTransactionItems(state)
+ WcSignTransactionItems(state, feeSelectorBlockComponent)
}
}
},
@@ -101,9 +104,13 @@ internal fun WcSignTransactionModalBottomSheetContent(
}
@Composable
-private fun WcSignTransactionItems(state: WcSignTransactionItemUM) {
+private fun WcSignTransactionItems(
+ state: WcSignTransactionItemUM,
+ feeSelectorBlockComponent: FeeSelectorBlockComponent,
+ modifier: Modifier = Modifier,
+) {
Column(
- modifier = Modifier
+ modifier = modifier
.clip(RoundedCornerShape(14.dp))
.background(color = TangemTheme.colors.background.action)
.fillMaxWidth()
@@ -130,6 +137,8 @@ private fun WcSignTransactionItems(state: WcSignTransactionItemUM) {
addressText = state.addressText,
)
}
+ DividerWithPadding(start = 40.dp, end = 12.dp)
+ feeSelectorBlockComponent.Content(modifier = Modifier)
}
}
@@ -157,7 +166,13 @@ private fun WcSignTransactionBottomSheetPreview(
)
},
content = {
- WcSignTransactionModalBottomSheetContent(state, {}, {}, {})
+ WcSignTransactionModalBottomSheetContent(
+ state = state,
+ feeSelectorBlockComponent = PreviewFeeSelectorBlockComponent(),
+ onClickTransactionRequest = {},
+ onBack = {},
+ onDismiss = {},
+ )
},
)
}