Uh oh!
There was an error while loading. Please reload this page.
feat: add Paykit subscriptions - #1186
Conversation
This comment has been minimized.
This comment has been minimized.
Uh oh!
There was an error while loading. Please reload this page.
jvsena42
commented
Aug 28, 2026
could test the PR stack feature for this case |
f189535 to
a1a7907Compare2eecc75 to
baf9894Compare9e4ee27 to
19823e6Comparebaf9894 to
5a876f8CompareUh oh!
There was an error while loading. Please reload this page.
5a876f8 to
bb2f12fComparebb2f12f to
050b32bCompareben-kaufman
commented
Aug 31, 2026
ovitrif
left a comment
There was a problem hiding this comment.
A few leftovers on this layer:
- Several new Kotlin sites still use inline fully-qualified names where an import would do.
wallet__payment_request_contact_timestampis unused after the payment-request subtitle rewrite.- Local due-notification scheduling and
beginPaymentRequestWaitingForUpdatedListhave no tests that would fail if those paths broke.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
82d6c73 to
e1053b0Compare1cbcc6f to
4cfdf4eComparee1053b0 to
850c252Compare4cfdf4e to
dd53772Compareben-kaufman
commented
Sep 1, 2026
@jvsena42 Fixed in dd53772. The duplicated fiat value came from replacing the subscription review sheet while its content was still composed. The flow now reuses the existing dismiss-delay-present sheet transition and waits for that transition before validating the destination. The focused send-flow regression passes. |
ben-kaufman
commented
Sep 1, 2026
ovitrif
left a comment
There was a problem hiding this comment.
prepareHardwareContactPayment marks the on-chain proof started before the hardware device signs, but onHardwareSignCancelled and send-sheet dismiss never call failOnchainPayment. The due request then stays in inFlightRequestIds and a later prepare() fails with OperationInProgress.
Also:
- Several new Kotlin sites still use inline fully-qualified names where an import would do.
wallet__payment_request_timestampis unused afterpaymentRequestDateTimewas removed.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
850c252 to
bac8656Comparedd53772 to
9bd7677Comparebac8656 to
6bb8501Compareaf462ca to
1d50070Compareb242110 to
f36505cCompareddd0195 to
d0bf6c2Comparef36505c to
3b32ae0Compared0bf6c2 to
e84d74aCompare3b32ae0 to
e623010Comparee84d74a to
35c0b4cCompare3e5bab0 to
bbce563Compare
ovitrif
left a comment
There was a problem hiding this comment.
Onchain Paykit payment still fails closed after proof prepare fails: markOnchainPaymentStarted(...).getOrThrow() in beforeSendAttempt (and the hardware onFailure return) still requires the unstarted proof that prepare would have stored. The new tests stub that mark to succeed, so they would not catch this.
Uh oh!
There was an error while loading. Please reload this page.
ovitrif
left a comment
There was a problem hiding this comment.
On-chain Paykit sends still fail closed when proof prepare fails. proceedWithPayment continues after getOrNull(), but beforeSendAttempt then calls markOnchainPaymentStarted(...).getOrThrow(), and hardware prepareHardwareContactPayment still returns false on that failure. The new tests stub the mark to succeed, so they do not catch this.
09f85e6 to
92b10ebCompare
Description
Adds the payer side of Paykit subscriptions, stacked on #1199, which is stacked on #1178.
This PR intentionally covers payer-side receipt only. Subscription creation, Discover, automatic payment without confirmation, and renewal are not included because they are outside this MVP or are not currently exposed by Paykit.
Dependencies:
0.1.0-rc46Preview
Final Android and cross-platform proof recordings were completed locally; they are not attached to the PR.
QA Notes
Manual Tests
Automated Checks
testDevDebugUnitTestsuitePaykitPaymentRequestRepoTest,PaykitPaymentRequestRepoSubscriptionTest,SubscriptionsScreenTest, andAppViewModelSendFlowTestcompileDevDebugKotlincompileDevDebugAndroidTestKotlindetekt --rerun-tasksassembleDevDebug, install, and cold launch on API 36 emulatorCodexBullTlsUiApi36git diff --check