fix: contact request or pay sheet and pay delay - #809
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Preview uploads before-small.mp4after-small.mp4 |
|
A contact that stops accepting requests is removed, a failed refresh drops deleted contacts, and a single-contact refresh and a full refresh can no longer overwrite each other's newer result. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A single-contact refresh no longer discards an overlapping full refresh; the full refresh only defers, per contact, to single-contact results that started after it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A single-contact refresh whose capability lookup failed no longer stamps the retained target as newer, so an overlapping full refresh can still remove it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
pwltr
left a comment
There was a problem hiding this comment.
One issue in the Contact Detail Pay flow.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A lookup holds the SDK lock the payment needs next, so a contact checked in the last 30 seconds goes straight to payment. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
pwltr
left a comment
There was a problem hiding this comment.
One MEDIUM issue remains in the Contact Detail Pay flow.
The capability lookup now takes the SDK lock per read and stops between reads once cancelled, and the Pay wait cancels it on timeout, so payment resolution waits for at most the read already in flight. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
pwltr
left a comment
There was a problem hiding this comment.
Requesting changes for the remaining MEDIUM SDK-lock cancellation race on this head.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
I checked each fix from the latest Android review round (bitkit-android#1349) against this branch. All of them were already covered here:
The only new iOS change is bfc8d4c, the SDK lock cancellation fix for @pwltr's last thread. |
pwltr
left a comment
There was a problem hiding this comment.
Requesting changes for the remaining MEDIUM eligibility timeout race on this head.
Closes #832
Twin: synonymdev/bitkit-android#1349
This PR fixes the contact Request Or Pay sheet not appearing for contacts that accept payment requests, and cuts the wait between tapping Pay and the amount screen.
Description
RequestOrPaySheetto match Android, and ports thecontact-request-or-pay.xmljourney from Android.Out of Scope
Design
N/A — no design available.
Preview
Warm app on regtest, contact linked on
bitkit/wallet: open the contact from Contacts, tap Pay, then Pay on the sheet.Before: after Pay on the sheet nothing changes on screen. The republish waited behind the contact-sync link burst, and the amount screen opened about 3 minutes later, well after the recording ends.
before-small.mp4
After: Pay shows a spinner on the sheet and Request is disabled until the amount screen opens, about 5 s here with the same link burst running and 2.7 s without it.
after-small.mp4
QA Notes
Journeys
contact-request-or-pay.xml— Pay on a linked contact offers Request Or Pay, paying shows progress and opens the amount screen within a few seconds, and Request opens the Payment Request amount screenManual Tests
N/A
Automated Checks
PaykitPaymentRequestServiceTests.swift— a failed capability or linked-peer lookup keeps the previous target but drops deleted contacts; the single-contact refresh adds a newly eligible contact, removes an unlinked one or one that stopped accepting requests, and ignores unsaved ones; single and full refreshes cannot overwrite each other's newer result; waiting for a target stops at its timeout, skips a contact checked in the last 30 seconds and rechecks after that