feat: add private payment requests - #1172
Conversation
This comment has been minimized.
This comment has been minimized.
ba7f745 to
e8183a5
Compare
ovitrif
left a comment
There was a problem hiding this comment.
Looks good. Durably queued requests stay confirmed after an identity change, and a consumed private payment list is never reused or replaced by public details.
5120677 to
7877465
Compare
Note this cc. @jvsena42 @piotr-iohk |
As far as paykit-server it would be good to have a staging deployment since paykit e2e tests are run against our staging regtest and also using staging homeserver (as far as I understand that was the plan, see: #1084 (comment))
|
af0aaa4 to
e2516e9
Compare
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
jvsena42
left a comment
There was a problem hiding this comment.
Review of the payment request flows. just compile and just test pass; the ComposeUi instrumented lane was run on a Pixel 9 AVD and all 15 new tests pass (after 864f008 fixed CreatePaymentRequestScreenTest querying a merged-semantics node). The 8 other failures in that lane reproduce on master and are unrelated.
Findings inline, roughly most-severe first. The SheetHost dismissEnabled work looks sound to me: programmatic hide() bypasses confirmValueChange, the disabled scrim sits under the sheet, and the inner NavHost BackHandlers still take priority over the swallowed sheet back handler.
ovitrif
left a comment
There was a problem hiding this comment.
The QR no longer sits under Request Payment, but in-sheet back still does not return to Payment Requests because that screen still only calls popBackStack().
ovitrif
left a comment
There was a problem hiding this comment.
List-driven Request Payment now starts on the form, and in-sheet back closes the sheet so you return to Payment Requests.
This PR adds private Paykit Payment Requests to Bitkit.
Description
0.1.0-rc44and adds local E2E homeserver configuration plus safe cold-start restoration for externally managed Pubky sessions.The request payload itself remains SDK-backed and durable; Bitkit persists only encrypted, identity-scoped presentation suppression, not a duplicate request queue. Payment proofs and receipts remain out of scope.
Dependencies:
41cda2567226a690a012770017d5e7c1d49e2a2b.Preview
N/A — proof recordings were completed locally and are intentionally not attached to the PR.
QA Notes
Manual Tests
Automated Checks
PaykitPaymentRequestRepoTest.kt: covers mapping, eligibility, proposal delivery, rejection, expiry, identity-scoped presentation state, and action serialization.PaykitSdkServiceTest.kt: covers exact identity enforcement and safe deferred session restoration.AppViewModelSendFlowTest.kt: covers automatic/manual presentation, sheet transitions, identity changes, newer-list retry, strict private resolution, and payment lifecycle races.PaymentRequestExpirationTest.kt: covers expiry selection and retained draft state.SheetHostTest.kt: covers locked sheet dismissal and scrim input isolation during durable proposal creation.git diff --check.