diff --git a/app/src/main/java/to/bitkit/ui/sheets/NewTransactionSheet.kt b/app/src/main/java/to/bitkit/ui/sheets/NewTransactionSheet.kt index 2779847022..23febc8852 100644 --- a/app/src/main/java/to/bitkit/ui/sheets/NewTransactionSheet.kt +++ b/app/src/main/java/to/bitkit/ui/sheets/NewTransactionSheet.kt @@ -12,9 +12,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.navigationBarsPadding -import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider @@ -113,30 +111,18 @@ fun NewTransactionSheetView( TransactionConfetti(details) if (details.direction == NewTransactionSheetDirection.RECEIVED) { - if (details.usdtAmount != null) { - // The exported composition includes artwork outside its centered 256dp design slot. - Image( - painter = painterResource(R.drawable.usdt_coins_received), - contentDescription = null, - modifier = Modifier - .align(Alignment.BottomCenter) - .offset(x = 13.5.dp) - .padding(bottom = 12.dp) - .size(width = 349.dp, height = 520.dp) - .testTag("transaction_received_image") - ) - } else { - Image( - painter = painterResource(R.drawable.coin_stack_5), - contentDescription = null, - contentScale = ContentScale.FillWidth, - modifier = Modifier - .fillMaxWidth() - .testTag("transaction_received_image") - .align(Alignment.BottomEnd) - .padding(bottom = 32.dp) - ) - } + Image( + painter = painterResource( + if (details.usdtAmount != null) R.drawable.usdt_coins_received else R.drawable.coin_stack_5 + ), + contentDescription = null, + contentScale = ContentScale.FillWidth, + modifier = Modifier + .fillMaxWidth() + .testTag("transaction_received_image") + .align(Alignment.BottomEnd) + .padding(bottom = 32.dp) + ) } else { Image( painter = painterResource(R.drawable.check), diff --git a/changelog.d/next/1664.fixed.md b/changelog.d/next/1664.fixed.md new file mode 100644 index 0000000000..78613484e3 --- /dev/null +++ b/changelog.d/next/1664.fixed.md @@ -0,0 +1 @@ +Scale received-payment artwork consistently across Bitcoin, Lightning and USDT sheets. diff --git a/journeys/onchain-receive/mempool-then-confirmed-single-sheet.xml b/journeys/onchain-receive/mempool-then-confirmed-single-sheet.xml index 6f912d135a..dd922b0490 100644 --- a/journeys/onchain-receive/mempool-then-confirmed-single-sheet.xml +++ b/journeys/onchain-receive/mempool-then-confirmed-single-sheet.xml @@ -12,6 +12,7 @@ Press back to return to the home screen Run: ./lsp POST /regtest/chain/deposit '{"address":"<savings addr>","amountSat":14797}' Wait up to 30s and verify the received sheet (testTag "ReceivedTransaction") is visible with the deposited amount + Verify the coin artwork is scaled to the sheet with the amount readable above it and the confirmation button fully visible; some coins may sit behind the button as in the design Tap the sheet button (testTag "ReceivedTransactionButton") Run: ./lsp POST /regtest/chain/mine '{"count":1}' Run: adb logcat -d -s APP:V | grep <txid> and wait until an "LDK event fired" line shows OnchainTransactionConfirmed diff --git a/journeys/usdt-bridge-details.xml b/journeys/usdt-bridge-details.xml index f153e2ccb5..105630c6bf 100644 --- a/journeys/usdt-bridge-details.xml +++ b/journeys/usdt-bridge-details.xml @@ -14,7 +14,7 @@ Tap the transaction ID (id "UsdtActivityTxId"). Verify from a screenshot that a "Copied To Clipboard" toast appears with the hash, and verify the clipboard holds the full source transaction hash. For a delayed, failed, refunding, refunded or support-needed bridge fixture, verify Contact Support (id "UsdtContactSupport") and Copy Details (id "UsdtCopyDetails") appear side by side as small 40-point buttons, matching the Request refund / Hide details row. Verify both remain reachable and their labels are not clipped, without submitting either action. Return to the USDT activity list. Verify Pending uses a yellow hourglass and 16% yellow circle, Failed uses a red x-circle and 16% red circle, and Transferring uses the teal transfer arrows. Sent and Received remain teal. - Open USDT Receive and inject one confirmed incoming USDT transfer through the isolated fixture. Verify Receive is replaced by one received celebration. Dismiss it and verify the same transfer is not celebrated again; a different subsequent transfer must still be shown. + Open USDT Receive and inject one confirmed incoming USDT transfer through the isolated fixture. Verify Receive is replaced by one received celebration. On compact and tall screens, including enlarged text, verify the coins scale to the sheet, the amount remains readable and both buttons remain visible and tappable; the designed overlap behind the buttons is expected. Dismiss it and verify the same transfer is not celebrated again; a different subsequent transfer must still be shown. Open USDT Receive, then Network. Verify Cross-Network Deposits (id "UsdtDepositHistory") is a full-width primary button pinned over the bottom of the network list. Scroll the list and verify the rows and artwork pass behind the button while it stays fixed. Scroll to the end and verify the last content can be brought above the button. Repeat with large text, verify the button label is not clipped, then tap it and verify deposit history opens before any Arbitrum receipt exists. Using only an isolated refund fixture, submit a refund address that the fixture rejects. Verify UsdtRefundError appears immediately below UsdtRefundAddress and remains visible through two background detail refreshes. Edit the address and verify the error clears; retry a rejected address and verify it returns. Change the selected deposit and verify the previous refund error is absent. At the largest system text size, open Details on a refundable deposit and dismiss the keyboard. Verify Request refund, Hide details, Contact support and Copy details stack vertically, can be scrolled into view and have complete readable labels. Return to normal text size and verify the paired actions share their original rows.