From e710826def4aff2b6437666574fa46caf146e63c Mon Sep 17 00:00:00 2001 From: Ovi Trif Date: Mon, 2 Nov 2026 21:16:47 +0100 Subject: [PATCH 1/2] fix: pin paykit request keypad and ok button --- .../PaymentRequests/CreatePaymentRequestView.swift | 10 +++++----- changelog.d/next/1138.fixed.md | 1 + journeys/paykit-amount-layout.xml | 2 +- journeys/payment-requests/request-summary.xml | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) create mode 100644 changelog.d/next/1138.fixed.md diff --git a/Bitkit/Views/PaymentRequests/CreatePaymentRequestView.swift b/Bitkit/Views/PaymentRequests/CreatePaymentRequestView.swift index 24a34f99f..48e3c9b15 100644 --- a/Bitkit/Views/PaymentRequests/CreatePaymentRequestView.swift +++ b/Bitkit/Views/PaymentRequests/CreatePaymentRequestView.swift @@ -380,8 +380,6 @@ struct PaymentRequestAmountView: View { } } - Spacer(minLength: 24) - CustomButton(title: t("common__continue"), isDisabled: !allowedAssets.contains(asset) || (amount?.atomic ?? 0) == 0) { guard allowedAssets.contains(asset), let amount else { return } onContinue( @@ -676,14 +674,16 @@ struct PaymentRequestSentView: View { .padding(.bottom, 8) BodyMText(description, textColor: .white64) - .padding(.bottom, 16) + .padding(.bottom, 32) + + CaptionMText(t("wallet__payment_request_recipient").localizedUppercase, textColor: .white64, lineHeight: 18) + .padding(.bottom, 8) PaymentRequestCard( request: request, isHighlighted: false ) - - Spacer(minLength: 32) + .padding(.bottom, 16) CustomButton(title: t("common__ok")) { sheets.hideSheet(reason: "Payment request created") diff --git a/changelog.d/next/1138.fixed.md b/changelog.d/next/1138.fixed.md new file mode 100644 index 000000000..d7b2e84c9 --- /dev/null +++ b/changelog.d/next/1138.fixed.md @@ -0,0 +1 @@ +Payment request amount entry keeps the number pad above Continue, and the Payment Requested sheet keeps OK at the bottom with the recipient above it. diff --git a/journeys/paykit-amount-layout.xml b/journeys/paykit-amount-layout.xml index 4053d110e..ab80d3521 100644 --- a/journeys/paykit-amount-layout.xml +++ b/journeys/paykit-amount-layout.xml @@ -2,7 +2,7 @@ Use an onboarded wallet with USDT enabled, an existing test contact and a current BTC/USD rate. Verify request denomination layout without sending or publishing a request. Open Payment Requests and create a request for the test contact. Open Amount. - Use the denomination toggle to select USD and enter 1.50. Verify the amount is leading-aligned near the header, the denomination toggle is trailing-aligned directly below it, and a divider separates them from the keypad. + Use the denomination toggle to select USD and enter 1.50. Verify the amount is leading-aligned near the header, the denomination toggle is trailing-aligned directly below it, and a divider separates them from the keypad. Verify the keypad sits directly above Continue, at the same height and position as on the Send amount screen, with any spare space between the divider and the keypad. Use the single denomination toggle to switch between BTC and USD several times. Verify the Bitcoin unit control is shown only in BTC. Verify the amount controls, divider and keypad stay at the same vertical positions, including when the Bitcoin unit button wraps below the denomination toggle at enlarged text sizes. Verify every keypad key remains legible and tappable on a short screen at enlarged text sizes, including zero, decimal/000 and Delete. Scroll as needed to reach all keys and Continue. Continue to details and verify the request denomination and amount remain 1.50 USD. Cancel without sending. Open Subscriptions and start creating a subscription for the same contact. Select USDT before opening Amount. Starting from zero, enter 1.50 without deleting first. Continue and verify the subscription amount is 1.50 USD. Reopen Amount and verify the existing cents are preserved. Repeat the layout check in BTC and USD. Verify the controls do not overlap the keypad or Continue. diff --git a/journeys/payment-requests/request-summary.xml b/journeys/payment-requests/request-summary.xml index 29faddb0e..393cf1b0a 100644 --- a/journeys/payment-requests/request-summary.xml +++ b/journeys/payment-requests/request-summary.xml @@ -4,7 +4,7 @@ On the requester, send the payer contact a Payment Request for 21,000 sats with the note "Lunch last week" - On the requester, verify completion (id "PaymentRequestSent") says "Sent" with "You have sent a payment request", or "Queued" with "Your payment request is queued and will send automatically"; the title and description must agree + On the requester, verify completion (id "PaymentRequestSent") says "Sent" with "You have sent a payment request", or "Queued" with "Your payment request is queued and will send automatically"; the title and description must agree. Verify a RECIPIENT caption sits above the request card, with OK at the bottom of the sheet and the heading, description and recipient card directly above it On the payer, verify the Payment Request confirmation screen (id "PaymentRequestConfirm") appears with 21,000 sats without opening the pending Payment Requests bell Verify From (id "PaymentRequestFrom") shows the requester's contact name Verify For (id "PaymentRequestFor") shows "Lunch last week" From 63012817dae8676fa8b9f769417ed0858cfe2339 Mon Sep 17 00:00:00 2001 From: Ovi Trif Date: Mon, 2 Nov 2026 22:11:32 +0100 Subject: [PATCH 2/2] fix: match send amount layout and scale request check --- .../Views/PaymentRequests/CreatePaymentRequestView.swift | 7 +++---- journeys/paykit-amount-layout.xml | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Bitkit/Views/PaymentRequests/CreatePaymentRequestView.swift b/Bitkit/Views/PaymentRequests/CreatePaymentRequestView.swift index 48e3c9b15..5f343e3e6 100644 --- a/Bitkit/Views/PaymentRequests/CreatePaymentRequestView.swift +++ b/Bitkit/Views/PaymentRequests/CreatePaymentRequestView.swift @@ -348,21 +348,20 @@ struct PaymentRequestAmountView: View { } } - Spacer().frame(height: 16) + Spacer(minLength: 12) amountControls(showUnit: allowedAssets.contains(.btc)) .hidden() .overlay(alignment: .topTrailing) { amountControls(showUnit: asset == .btc) } - .padding(.bottom, 16) + .padding(.bottom, 12) if conversionError { BodySText(t("wallet__payment_request_rate_unavailable"), textColor: .white64) } CustomDivider() .accessibilityIdentifier("\(testIdentifierPrefix)AmountDivider") - Spacer(minLength: 16) NumberPad( type: asset == .usd ? .decimal : amountViewModel.getNumberPadType(currency: currency), errorKey: amountViewModel.errorKey @@ -665,7 +664,7 @@ struct PaymentRequestSentView: View { Image("check") .resizable() .aspectRatio(contentMode: .fit) - .frame(width: 256, height: 256) + .frame(maxWidth: UIScreen.main.bounds.width * 0.8, maxHeight: UIScreen.main.bounds.width * 0.8) .frame(maxWidth: .infinity) Spacer(minLength: 8) diff --git a/journeys/paykit-amount-layout.xml b/journeys/paykit-amount-layout.xml index ab80d3521..df74405ae 100644 --- a/journeys/paykit-amount-layout.xml +++ b/journeys/paykit-amount-layout.xml @@ -2,7 +2,7 @@ Use an onboarded wallet with USDT enabled, an existing test contact and a current BTC/USD rate. Verify request denomination layout without sending or publishing a request. Open Payment Requests and create a request for the test contact. Open Amount. - Use the denomination toggle to select USD and enter 1.50. Verify the amount is leading-aligned near the header, the denomination toggle is trailing-aligned directly below it, and a divider separates them from the keypad. Verify the keypad sits directly above Continue, at the same height and position as on the Send amount screen, with any spare space between the divider and the keypad. + Use the denomination toggle to select USD and enter 1.50. Verify the layout matches the Send amount screen: the amount is leading-aligned near the header, spare space sits below it, and the trailing-aligned denomination toggle, the divider, the keypad and Continue sit at the same height and position as on Send. Use the single denomination toggle to switch between BTC and USD several times. Verify the Bitcoin unit control is shown only in BTC. Verify the amount controls, divider and keypad stay at the same vertical positions, including when the Bitcoin unit button wraps below the denomination toggle at enlarged text sizes. Verify every keypad key remains legible and tappable on a short screen at enlarged text sizes, including zero, decimal/000 and Delete. Scroll as needed to reach all keys and Continue. Continue to details and verify the request denomination and amount remain 1.50 USD. Cancel without sending. Open Subscriptions and start creating a subscription for the same contact. Select USDT before opening Amount. Starting from zero, enter 1.50 without deleting first. Continue and verify the subscription amount is 1.50 USD. Reopen Amount and verify the existing cents are preserved. Repeat the layout check in BTC and USD. Verify the controls do not overlap the keypad or Continue.