Skip to content

fix: present requests and keep controls visible - #1405

Merged
ovitrif merged 2 commits into
masterfrom
fix/payment-request-auto-popup
Oct 1, 2026
Merged

ovitrif merged 2 commits into
masterfrom
fix/payment-request-auto-popup

Conversation

@ben-kaufman

@ben-kaufman ben-kaufman commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Closes #1404
Twin: synonymdev/bitkit-ios#858

This PR addresses the missing request popup and the clipped confirmation controls reported in #1404.

Description

  • Presents newly pending payment requests immediately when the active identity and existing presentation rules allow it, including requests arriving while another request is being resolved.
  • Keeps the amount and Swipe to Pay control fixed while confirmation details and long notes scroll.

Out of Scope

  • Paykit delivery and payment execution latency: polling, private payment preparation, and the pre-send wallet sync are unchanged. Profile loading improvements are tracked in fix: speed up pubky profile loading #1399.
  • iOS confirmation layout: the equivalent popup fix is in the companion iOS PR; its confirmation layout already differs.

Design

Existing Confirm Send Onchain frame in Bitkit handoff, mapped by docs/screens-map.md. The direct frame link has not been verified.

Preview

Automatic incoming request from Home Long note scrolls with amount and payment control visible

QA Notes

Journeys

  • new automatic-presentation.xml - Arrival opens confirmation, another sheet defers it, and reviewed requests stay dismissed.
  • new confirmation-controls.xml - Amount and payment slider remain visible on a compact screen with large text and a long note.
  • updated request-summary.xml - Confirmation opens without the bell and preserves requester and note details.

Two-wallet regtest checks exercised automatic presentation on both platforms, Receive deferral, dismissal, request summaries, and a successful 1,753-sat payment. Device QA applied #1399 and iOS #854 in separate scratch builds. A sampled Android popup started within 0.6 seconds of decoding the request; preceding delivery took about 11 seconds. This PR does not claim that latency is resolved.

Manual Tests

N/A

Automated Checks

  • updated AppViewModelSendFlowTest.kt - Adds arrival and overlapping-resolution regressions using the real presenter.
  • updated SendConfirmScreenTest.kt - Verifies reachable requester summary and fixed amount/slider bounds at 360 x 400 dp and 1.3 font scale; preserves subscription confirmation coverage.
  • updated MnemonicInputFieldTest.kt - Supplies the required focus argument so the existing instrumented test fixture compiles.
  • ran instrumented confirmation and mnemonic tests on an API 36 emulator - device coverage is outside CI.

Local compile, 3,058 unit tests, eight instrumented tests, detekt, and both APK builds passed. Detekt reports the same existing findings.

@greptile-apps

greptile-apps Bot commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 4/5

[Medium risk] Payment request presentation and UI layout for confirmation screen.

The PR should not merge until the compact confirmation keeps requester details reachable on constrained displays.

Findings

  1. P1 Compact summary can be clipped ▶
  2. P2 Test omits requester summary ▶

Summary

The PR presents eligible incoming Paykit requests when pending state changes and moves confirmation details into a scrollable middle region so the amount and swipe control remain fixed.

  • Adds arrival and overlapping-resolution tests, a compact-screen UI test, and payment-request journeys.
  • The compact layout still needs a way to reach the requester summary when fixed elements exhaust the available height.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[Pending requests update] --> B[Check active identity and presentation guards]
  B --> C[Resolve next eligible request]
  C --> D[Open Send confirmation]
  D --> E[Fixed amount header]
  D --> F[Middle review content]
  D --> G[Fixed details and swipe controls]
  F --> H{Details shown or LNURL-pay?}
  H -->|Yes| I[Scrollable details]
  H -->|No| J[Non-scrollable compact summary]
Loading

Reviews (1) · Last reviewed commit: "fix: present requests and keep payment c..."

Comment thread app/src/main/java/to/bitkit/ui/screens/wallets/send/SendConfirmScreen.kt Outdated
@github-actions

github-actions Bot commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Regtest APK

Built from 5985d70 (run).

Download bitkit-dev-debug universal APK (expires in 30 days).

@ovi-reviewer ovi-reviewer Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Advice: ✅ Approve

Review: diff 10 files.
synonymdev/bitkit-ios#858 adds the same automatic request presentation and shared journeys. The fixed confirmation controls and compact layout journey are Android-specific; iOS keeps its existing confirmation layout.

QA:
Tests running: 3 of 3 passed.


Reviewed by gpt-6.1-sol-high via gh-pr-review-loop skill
Commands: @ovi-reviewer review · test · retest (author)

@piotr-iohk piotr-iohk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

QA review

Scope: Full review of the complete PR diff against its merge base, at 5985d70.

No new actionable code findings.

Eligible incoming Paykit requests now present from pending-list updates, including a request that arrives while another resolution is in flight and does not open a sheet. Existing guards still block presentation while a sheet, scan, or unauthenticated session is active. The confirmation amount and swipe control stay fixed; the requester summary and details scroll in the middle. The compact-summary clip on f36e353 (thread) is fixed at this head: that middle region always scrolls, and the compact test uses a requester profile with a 256-character note.

CI build and unit tests and lint passed on this head. Detekt passed in this run. This review did not re-run those tests or any device journey. Pay and delivery latency from #1404 stays out of scope. Presentation parity with bitkit-ios#858 was not re-reviewed here; confirmation-controls.xml is Android-only because that confirmation layout differs.

Device testing: not performed in this review.

Suggested additional test cases

  • Android. Setup: an ordinary on-chain send confirmation, not a payment request. Action: tap Show details and scroll the middle content. Expected: the full amount and Swipe to Pay stay on screen, and the fee and destination stay reachable in the middle scroller.
  • Android. Setup: the two-wallet payment-request fixture, with the first confirmation already open. Action: deliver a second request before closing the first. Expected: the open confirmation is not replaced; after it is closed, the second opens on its own and the first stays dismissed.

Ready for device testing.

@ovi-reviewer ovi-reviewer Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: ✅ Approve

Tests for the review: journeys J1, J2 and J3 passed.

QA:
Tested on two Android 15 emulators.

🟢 Tests J1, J2, J3
Test J1

Requests opened automatically, waited for Receive to close, and stayed dismissed.

J1.mp4
J1-tail.mp4

Test J2

The amount and Swipe To Pay stayed fixed while the summary and long note scrolled at larger text size.

J2-tail.mp4

Test J3

From/For summaries and expanded notes matched the requests; an empty note showed “Not specified”.

J3.mp4
J3-supplemental.mp4

Note

The unresolved-name confirmation case remains unverified because the fixture used unsupported payment deadlines.


Reviewed by gpt-6.1-sol-high via gh-pr-review-loop skill
Commands: @ovi-reviewer review · test · retest (author)

@piotr-iohk piotr-iohk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tACK

@ovitrif ovitrif left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utAck

@ovitrif
ovitrif merged commit 5e990b1 into master Oct 1, 2026
22 checks passed
@ovitrif
ovitrif deleted the fix/payment-request-auto-popup branch October 1, 2026 17:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Paykit payment-request sheet clips and does not open automatically (canary #3)

3 participants