Updated on 2026-08-14
This commit is contained in:
parent
498e62329a
commit
02f927fd48
18 changed files with 898 additions and 29 deletions
|
|
@ -10,6 +10,7 @@ import androidx.compose.ui.Alignment
|
|||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.platform.testTag
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
|
|
@ -17,6 +18,8 @@ import coil.compose.AsyncImage
|
|||
import com.tangem.core.ui.extensions.clickableSingle
|
||||
import com.tangem.core.ui.extensions.conditional
|
||||
import com.tangem.core.ui.res.TangemTheme
|
||||
import com.tangem.core.ui.test.WalletConnectBottomSheetTestTags
|
||||
import com.tangem.core.ui.test.WalletConnectDetailsBottomSheetTestTags
|
||||
import com.tangem.features.walletconnect.connections.entity.VerifiedDAppState
|
||||
import com.tangem.features.walletconnect.impl.R
|
||||
|
||||
|
|
@ -43,7 +46,8 @@ internal fun WcAppInfoItem(
|
|||
AsyncImage(
|
||||
modifier = Modifier
|
||||
.size(TangemTheme.dimens.size48)
|
||||
.clip(RoundedCornerShape(TangemTheme.dimens.radius8)),
|
||||
.clip(RoundedCornerShape(TangemTheme.dimens.radius8))
|
||||
.testTag(WalletConnectBottomSheetTestTags.APP_ICON),
|
||||
model = iconUrl,
|
||||
contentDescription = title,
|
||||
error = painterResource(R.drawable.img_wc_dapp_icon_placeholder_48),
|
||||
|
|
@ -58,7 +62,9 @@ internal fun WcAppInfoItem(
|
|||
verticalAlignment = Alignment.CenterVertically,
|
||||
) {
|
||||
Text(
|
||||
modifier = Modifier.weight(1f, fill = false),
|
||||
modifier = Modifier
|
||||
.weight(1f, fill = false)
|
||||
.testTag(WalletConnectBottomSheetTestTags.APP_NAME),
|
||||
text = title,
|
||||
color = TangemTheme.colors.text.primary1,
|
||||
style = TangemTheme.typography.h3,
|
||||
|
|
@ -67,7 +73,9 @@ internal fun WcAppInfoItem(
|
|||
)
|
||||
if (verifiedDAppState is VerifiedDAppState.Verified) {
|
||||
Icon(
|
||||
modifier = Modifier.size(20.dp),
|
||||
modifier = Modifier
|
||||
.size(20.dp)
|
||||
.testTag(WalletConnectBottomSheetTestTags.APPROVE_ICON),
|
||||
painter = painterResource(R.drawable.img_approvale2_20),
|
||||
contentDescription = null,
|
||||
tint = Color.Unspecified,
|
||||
|
|
@ -78,6 +86,7 @@ internal fun WcAppInfoItem(
|
|||
text = subtitle,
|
||||
color = TangemTheme.colors.text.tertiary,
|
||||
style = TangemTheme.typography.body2,
|
||||
modifier = Modifier.testTag(WalletConnectBottomSheetTestTags.APP_URL),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -86,11 +95,15 @@ internal fun WcAppInfoItem(
|
|||
@Composable
|
||||
internal fun WcNetworkInfoItem(@DrawableRes icon: Int, name: String, symbol: String, modifier: Modifier = Modifier) {
|
||||
Row(
|
||||
modifier = modifier.padding(vertical = 14.dp, horizontal = 12.dp),
|
||||
modifier = modifier
|
||||
.padding(vertical = 14.dp, horizontal = 12.dp)
|
||||
.testTag(WalletConnectDetailsBottomSheetTestTags.NETWORK_ITEM),
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
) {
|
||||
Icon(
|
||||
modifier = Modifier.size(24.dp),
|
||||
modifier = Modifier
|
||||
.size(24.dp)
|
||||
.testTag(WalletConnectDetailsBottomSheetTestTags.NETWORK_ICON),
|
||||
painter = painterResource(icon),
|
||||
contentDescription = null,
|
||||
tint = Color.Unspecified,
|
||||
|
|
@ -98,7 +111,8 @@ internal fun WcNetworkInfoItem(@DrawableRes icon: Int, name: String, symbol: Str
|
|||
Text(
|
||||
modifier = Modifier
|
||||
.padding(start = 12.dp)
|
||||
.weight(1f, fill = false),
|
||||
.weight(1f, fill = false)
|
||||
.testTag(WalletConnectDetailsBottomSheetTestTags.NETWORK_NAME),
|
||||
text = name,
|
||||
style = TangemTheme.typography.body1,
|
||||
color = TangemTheme.colors.text.primary1,
|
||||
|
|
@ -106,7 +120,9 @@ internal fun WcNetworkInfoItem(@DrawableRes icon: Int, name: String, symbol: Str
|
|||
overflow = TextOverflow.Ellipsis,
|
||||
)
|
||||
Text(
|
||||
modifier = Modifier.padding(start = 4.dp),
|
||||
modifier = Modifier
|
||||
.padding(start = 4.dp)
|
||||
.testTag(WalletConnectDetailsBottomSheetTestTags.NETWORK_SYMBOL),
|
||||
text = symbol,
|
||||
style = TangemTheme.typography.body1,
|
||||
color = TangemTheme.colors.text.tertiary,
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import androidx.compose.ui.graphics.Color
|
|||
import androidx.compose.ui.graphics.StrokeCap
|
||||
import androidx.compose.ui.graphics.painter.Painter
|
||||
import androidx.compose.ui.layout.ContentScale
|
||||
import androidx.compose.ui.platform.testTag
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
|
|
@ -42,6 +43,7 @@ import com.tangem.core.ui.extensions.wrappedList
|
|||
import com.tangem.core.ui.res.TangemColorPalette
|
||||
import com.tangem.core.ui.res.TangemTheme
|
||||
import com.tangem.core.ui.res.TangemThemePreview
|
||||
import com.tangem.core.ui.test.WalletConnectBottomSheetTestTags
|
||||
import com.tangem.features.walletconnect.connections.entity.*
|
||||
import com.tangem.features.walletconnect.impl.R
|
||||
import kotlinx.collections.immutable.ImmutableList
|
||||
|
|
@ -62,6 +64,7 @@ internal fun WcAppInfoModalBottomSheet(state: WcAppInfoUM, onBack: () -> Unit, o
|
|||
title = resourceReference(R.string.wc_wallet_connect),
|
||||
endIconRes = R.drawable.ic_close_24,
|
||||
onEndClick = onDismiss,
|
||||
modifier = Modifier.testTag(WalletConnectBottomSheetTestTags.TITLE),
|
||||
)
|
||||
},
|
||||
content = {
|
||||
|
|
@ -157,7 +160,9 @@ private fun WcAppInfoFirstBlock(state: WcAppInfoUM.Content, modifier: Modifier =
|
|||
private fun ConnectionRequestBlock(expanded: Boolean, modifier: Modifier = Modifier) {
|
||||
Row(modifier = modifier, verticalAlignment = Alignment.CenterVertically) {
|
||||
Icon(
|
||||
modifier = Modifier.size(24.dp),
|
||||
modifier = Modifier
|
||||
.size(24.dp)
|
||||
.testTag(WalletConnectBottomSheetTestTags.CONNECTION_REQUEST_ICON),
|
||||
painter = painterResource(R.drawable.ic_connect_new_24),
|
||||
contentDescription = null,
|
||||
tint = TangemTheme.colors.icon.accent,
|
||||
|
|
@ -165,7 +170,8 @@ private fun ConnectionRequestBlock(expanded: Boolean, modifier: Modifier = Modif
|
|||
Text(
|
||||
modifier = Modifier
|
||||
.padding(start = TangemTheme.dimens.spacing4)
|
||||
.weight(1f),
|
||||
.weight(1f)
|
||||
.testTag(WalletConnectBottomSheetTestTags.CONNECTION_REQUEST_TEXT),
|
||||
text = stringResourceSafe(R.string.wc_connection_request),
|
||||
style = TangemTheme.typography.body1,
|
||||
color = TangemTheme.colors.text.primary1,
|
||||
|
|
@ -173,7 +179,8 @@ private fun ConnectionRequestBlock(expanded: Boolean, modifier: Modifier = Modif
|
|||
Icon(
|
||||
modifier = Modifier
|
||||
.padding(start = TangemTheme.dimens.spacing12)
|
||||
.size(width = 18.dp, height = 24.dp),
|
||||
.size(width = 18.dp, height = 24.dp)
|
||||
.testTag(WalletConnectBottomSheetTestTags.CONNECTION_REQUEST_CHEVRON),
|
||||
painter = painterResource(if (expanded) R.drawable.ic_chevron_up_24 else R.drawable.ic_chevron_24),
|
||||
contentDescription = null,
|
||||
tint = TangemTheme.colors.icon.informative,
|
||||
|
|
@ -319,7 +326,9 @@ private fun WcAppInfoSecondBlock(state: WcAppInfoUM.Content, modifier: Modifier
|
|||
private fun WalletRowItem(walletName: String, showEndIcon: Boolean, modifier: Modifier = Modifier) {
|
||||
Row(modifier = modifier, verticalAlignment = Alignment.CenterVertically) {
|
||||
Icon(
|
||||
modifier = Modifier.size(24.dp),
|
||||
modifier = Modifier
|
||||
.size(24.dp)
|
||||
.testTag(WalletConnectBottomSheetTestTags.WALLET_ICON),
|
||||
painter = painterResource(R.drawable.ic_wallet_new_24),
|
||||
contentDescription = null,
|
||||
tint = TangemTheme.colors.icon.accent,
|
||||
|
|
@ -330,14 +339,18 @@ private fun WalletRowItem(walletName: String, showEndIcon: Boolean, modifier: Mo
|
|||
verticalAlignment = Alignment.CenterVertically,
|
||||
) {
|
||||
Text(
|
||||
modifier = Modifier.padding(start = TangemTheme.dimens.spacing4),
|
||||
modifier = Modifier
|
||||
.padding(start = TangemTheme.dimens.spacing4)
|
||||
.testTag(WalletConnectBottomSheetTestTags.WALLET_NAME_TITLE),
|
||||
text = stringResourceSafe(R.string.manage_tokens_network_selector_wallet),
|
||||
style = TangemTheme.typography.body1,
|
||||
color = TangemTheme.colors.text.primary1,
|
||||
maxLines = 1,
|
||||
)
|
||||
Text(
|
||||
modifier = Modifier.padding(start = TangemTheme.dimens.spacing16),
|
||||
modifier = Modifier
|
||||
.padding(start = TangemTheme.dimens.spacing16)
|
||||
.testTag(WalletConnectBottomSheetTestTags.WALLET_NAME),
|
||||
text = walletName,
|
||||
textAlign = TextAlign.End,
|
||||
style = TangemTheme.typography.body1,
|
||||
|
|
@ -366,7 +379,9 @@ private fun SelectNetworksBlock(networksInfo: WcNetworksInfo, modifier: Modifier
|
|||
verticalAlignment = Alignment.CenterVertically,
|
||||
) {
|
||||
Icon(
|
||||
modifier = Modifier.size(24.dp),
|
||||
modifier = Modifier
|
||||
.size(24.dp)
|
||||
.testTag(WalletConnectBottomSheetTestTags.NETWORKS_ICON),
|
||||
painter = painterResource(R.drawable.ic_network_new_24),
|
||||
contentDescription = null,
|
||||
tint = TangemTheme.colors.icon.accent,
|
||||
|
|
@ -374,7 +389,8 @@ private fun SelectNetworksBlock(networksInfo: WcNetworksInfo, modifier: Modifier
|
|||
Text(
|
||||
modifier = Modifier
|
||||
.padding(start = TangemTheme.dimens.spacing4)
|
||||
.weight(1f),
|
||||
.weight(1f)
|
||||
.testTag(WalletConnectBottomSheetTestTags.NETWORKS_TITLE),
|
||||
text = stringResourceSafe(R.string.wc_common_networks),
|
||||
style = TangemTheme.typography.body1,
|
||||
color = TangemTheme.colors.text.primary1,
|
||||
|
|
@ -385,7 +401,9 @@ private fun SelectNetworksBlock(networksInfo: WcNetworksInfo, modifier: Modifier
|
|||
is WcNetworksInfo.NoneNetworksAdded -> Unit
|
||||
}
|
||||
Icon(
|
||||
modifier = Modifier.size(width = 18.dp, height = 24.dp),
|
||||
modifier = Modifier
|
||||
.size(width = 18.dp, height = 24.dp)
|
||||
.testTag(WalletConnectBottomSheetTestTags.NETWORKS_SELECTOR_ICON),
|
||||
painter = painterResource(id = R.drawable.ic_select_18_24),
|
||||
contentDescription = null,
|
||||
tint = TangemTheme.colors.icon.informative,
|
||||
|
|
@ -417,7 +435,8 @@ private fun NetworkIcons(items: ImmutableList<WcNetworkInfoItem>, modifier: Modi
|
|||
)
|
||||
.padding(2.dp)
|
||||
.clip(CircleShape)
|
||||
.size(20.dp),
|
||||
.size(20.dp)
|
||||
.testTag(WalletConnectBottomSheetTestTags.NETWORKS_ICONS),
|
||||
)
|
||||
}
|
||||
if (remainingCount > 0) {
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import androidx.compose.runtime.key
|
|||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.platform.testTag
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
|
|
@ -28,6 +29,7 @@ import com.tangem.core.ui.extensions.wrappedList
|
|||
import com.tangem.core.ui.res.TangemColorPalette
|
||||
import com.tangem.core.ui.res.TangemTheme
|
||||
import com.tangem.core.ui.res.TangemThemePreview
|
||||
import com.tangem.core.ui.test.WalletConnectDetailsBottomSheetTestTags
|
||||
import com.tangem.core.ui.utils.DateTimeFormatters
|
||||
import com.tangem.core.ui.utils.toDateFormatWithTodayYesterday
|
||||
import com.tangem.core.ui.utils.toTimeFormat
|
||||
|
|
@ -116,7 +118,8 @@ private fun WcConnectedAppInfoBSContent(state: WcConnectedAppInfoUM, modifier: M
|
|||
SecondaryButton(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(vertical = 16.dp),
|
||||
.padding(vertical = 16.dp)
|
||||
.testTag(WalletConnectDetailsBottomSheetTestTags.DISCONNECT_BUTTON),
|
||||
text = stringResourceSafe(R.string.common_disconnect),
|
||||
enabled = state.disconnectButtonConfig.enabled,
|
||||
showProgress = state.disconnectButtonConfig.showProgress,
|
||||
|
|
@ -142,7 +145,9 @@ private fun AppInfoFirstBlock(state: WcConnectedAppInfoUM, modifier: Modifier =
|
|||
verticalAlignment = Alignment.CenterVertically,
|
||||
) {
|
||||
Icon(
|
||||
modifier = Modifier.size(24.dp),
|
||||
modifier = Modifier
|
||||
.size(24.dp)
|
||||
.testTag(WalletConnectDetailsBottomSheetTestTags.WALLET_ICON),
|
||||
painter = painterResource(R.drawable.ic_wallet_new_24),
|
||||
contentDescription = null,
|
||||
tint = TangemTheme.colors.icon.accent,
|
||||
|
|
@ -150,7 +155,8 @@ private fun AppInfoFirstBlock(state: WcConnectedAppInfoUM, modifier: Modifier =
|
|||
Text(
|
||||
modifier = Modifier
|
||||
.padding(start = TangemTheme.dimens.spacing4)
|
||||
.weight(1f),
|
||||
.weight(1f)
|
||||
.testTag(WalletConnectDetailsBottomSheetTestTags.WALLET_TITLE),
|
||||
text = stringResourceSafe(R.string.manage_tokens_network_selector_wallet),
|
||||
style = TangemTheme.typography.body1,
|
||||
color = TangemTheme.colors.text.primary1,
|
||||
|
|
@ -158,7 +164,8 @@ private fun AppInfoFirstBlock(state: WcConnectedAppInfoUM, modifier: Modifier =
|
|||
Text(
|
||||
modifier = Modifier
|
||||
.padding(start = TangemTheme.dimens.spacing16)
|
||||
.weight(1f),
|
||||
.weight(1f)
|
||||
.testTag(WalletConnectDetailsBottomSheetTestTags.WALLET_NAME),
|
||||
text = state.walletName,
|
||||
textAlign = TextAlign.End,
|
||||
style = TangemTheme.typography.body1,
|
||||
|
|
@ -174,7 +181,8 @@ private fun NetworksBlock(networks: ImmutableList<WcNetworkInfoItem.Required>, m
|
|||
Text(
|
||||
modifier = Modifier
|
||||
.padding(top = 12.dp, bottom = 4.dp)
|
||||
.padding(horizontal = 12.dp),
|
||||
.padding(horizontal = 12.dp)
|
||||
.testTag(WalletConnectDetailsBottomSheetTestTags.NETWORKS_TITLE),
|
||||
text = stringResourceSafe(R.string.wc_connected_networks),
|
||||
style = TangemTheme.typography.subtitle2,
|
||||
color = TangemTheme.colors.text.tertiary,
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import androidx.compose.ui.Modifier
|
|||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.platform.LocalDensity
|
||||
import androidx.compose.ui.platform.testTag
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
|
|
@ -35,6 +36,7 @@ import com.tangem.core.ui.components.snackbar.TangemSnackbarHost
|
|||
import com.tangem.core.ui.extensions.stringResourceSafe
|
||||
import com.tangem.core.ui.res.TangemTheme
|
||||
import com.tangem.core.ui.res.TangemThemePreview
|
||||
import com.tangem.core.ui.test.WalletConnectScreenTestTags
|
||||
import com.tangem.features.walletconnect.connections.entity.*
|
||||
import com.tangem.features.walletconnect.connections.ui.preview.WcConnectionsPreviewData
|
||||
import com.tangem.features.walletconnect.impl.R
|
||||
|
|
@ -170,7 +172,9 @@ private fun ConnectionItem(connection: WcConnectionsUM, modifier: Modifier = Mod
|
|||
Column(modifier = modifier) {
|
||||
key("${connection.userWalletId}_${connection.walletName}") {
|
||||
Text(
|
||||
modifier = Modifier.padding(top = 12.dp, bottom = 4.dp, start = 12.dp, end = 12.dp),
|
||||
modifier = Modifier
|
||||
.padding(top = 12.dp, bottom = 4.dp, start = 12.dp, end = 12.dp)
|
||||
.testTag(WalletConnectScreenTestTags.WALLET_NAME),
|
||||
text = connection.walletName,
|
||||
color = TangemTheme.colors.text.tertiary,
|
||||
style = TangemTheme.typography.subtitle2,
|
||||
|
|
@ -199,7 +203,8 @@ private fun AppInfoItem(appInfo: WcConnectedAppInfo, modifier: Modifier = Modifi
|
|||
AsyncImage(
|
||||
modifier = Modifier
|
||||
.size(40.dp)
|
||||
.clip(RoundedCornerShape(TangemTheme.dimens.radius8)),
|
||||
.clip(RoundedCornerShape(TangemTheme.dimens.radius8))
|
||||
.testTag(WalletConnectScreenTestTags.APP_ICON),
|
||||
model = appInfo.iconUrl,
|
||||
error = painterResource(R.drawable.img_wc_dapp_icon_placeholder_48),
|
||||
fallback = painterResource(R.drawable.img_wc_dapp_icon_placeholder_48),
|
||||
|
|
@ -214,7 +219,9 @@ private fun AppInfoItem(appInfo: WcConnectedAppInfo, modifier: Modifier = Modifi
|
|||
verticalAlignment = Alignment.CenterVertically,
|
||||
) {
|
||||
Text(
|
||||
modifier = Modifier.weight(1f, fill = false),
|
||||
modifier = Modifier
|
||||
.weight(1f, fill = false)
|
||||
.testTag(WalletConnectScreenTestTags.APP_NAME),
|
||||
text = appInfo.name,
|
||||
color = TangemTheme.colors.text.primary1,
|
||||
style = TangemTheme.typography.subtitle2,
|
||||
|
|
@ -223,7 +230,9 @@ private fun AppInfoItem(appInfo: WcConnectedAppInfo, modifier: Modifier = Modifi
|
|||
)
|
||||
if (appInfo.verifiedState is VerifiedDAppState.Verified) {
|
||||
Icon(
|
||||
modifier = Modifier.size(20.dp),
|
||||
modifier = Modifier
|
||||
.size(20.dp)
|
||||
.testTag(WalletConnectScreenTestTags.APPROVE_ICON),
|
||||
painter = painterResource(R.drawable.img_approvale2_20),
|
||||
contentDescription = null,
|
||||
tint = Color.Unspecified,
|
||||
|
|
@ -234,6 +243,7 @@ private fun AppInfoItem(appInfo: WcConnectedAppInfo, modifier: Modifier = Modifi
|
|||
text = appInfo.subtitle,
|
||||
color = TangemTheme.colors.text.tertiary,
|
||||
style = TangemTheme.typography.caption2,
|
||||
modifier = Modifier.testTag(WalletConnectScreenTestTags.APP_URL),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -259,6 +269,7 @@ private fun ConnectionsTopBar(
|
|||
TopAppBarButton(
|
||||
button = config.startButtonUM,
|
||||
tint = TangemTheme.colors.icon.primary1,
|
||||
modifier = Modifier.testTag(WalletConnectScreenTestTags.MORE_BUTTON),
|
||||
)
|
||||
},
|
||||
title = {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue