Repository navigation
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
[Low impact] The visible change stays within the USDT receive flow. This appears safe to merge, with a non-blocking visual issue when going back from Fees. Findings
SummaryThis PR adds sliding transitions between the USDT receive pages.
Reviews (1) · Last reviewed commit: "test: check usdt receive edit slides in ..." · Reviewed by Greptile |
talosmachina
left a comment
There was a problem hiding this comment.
No findings. Moves the USDT receive pages into an AnimatedContent keyed on ReceivePage, reusing the NavHost slide specs now exposed as plain values in Transitions.kt, with the horizontal padding moved inside each opaque page. Reviewed 755e403, full tier, reasoned from the code; not built by me, so CI is the gate.
What I checked, and 4 candidates I ruled out
Read in full: UsdtDepositReceiveScreen.kt, UsdtDepositViewModel.kt, Transitions.kt, the USDT branch of ReceiveQrScreen.kt
Call sites traced: UsdtDepositReceiveScreen (only ReceiveQrScreen, so the removed outer padding has no other host), the four default*Trans lambdas (now thin wrappers over the same specs, motion unchanged)
CI at review time: lint, detekt and build-local green; build and the local e2e shards still running
Ruled out
- Direction from enum order:
ADDRESS < NETWORKS < AMOUNT < FEESgives push on Network, Edit and the address arriving, pop on every Back and on Continue from FEES, which matches the description. - Stale
pageinback: the lambda reads the delegated state at call time, so a back tap on the outgoing page during the 300 ms slide still acts on the current page. - Layout change from the moved padding:
NetworkSelectorandFillHeighttake their weight from the new innerColumn, which isfillMaxSizeinside aweight(1f)AnimatedContent, the same space the old parentColumngave them. - Outgoing FEES page empties on Back:
backcallsselectNetwork, which nullsaddress, so the sliding-out FEES page draws no body for the length of the slide. It only shows during the 300 ms animation and changes no state, so it is below the bar for a finding.
Merge confidence: 4/5, no findings, but build and e2e were still running at review time and nothing here built the branch; the updated journey is the check for the motion.
755e403 to
042f3a2
Compare
Regtest APKDownload bitkit-dev-debug universal APK (expires in 30 days). |
pwltr
left a comment
There was a problem hiding this comment.
Reviewed 7ea16b2; no additional findings from my review. Greptile’s finding is addressed in source, and CI is green. I have not independently run the device animation journey.
jvsena42
left a comment
There was a problem hiding this comment.
Code scan: no HIGH/MEDIUM. One LOW (journey parity) is inline.
Checked and clean: once each transition finishes, the address, QR and amount are correct.
- Edit then Back keeps the committed
amount. - Continue from Fees keeps
state.address. - The network-change paths are unchanged.
- The journey's slide text matches the push and pop specs, including
targetContentZIndex = -1f.
To confirm on device, not posted as a finding yet: during the 300 ms slide, the outgoing page renders from live state, not a snapshot. Tapping Edit on a non-Arbitrum deposit QR runs selectNetwork, which clears address. The outgoing page could then briefly draw the Arbitrum wallet QR (the wallet.address / wallet.receiveUri fallbacks) under the deposit network's label. Likewise, Back from Amount could snap the outgoing amount back to the old value mid-slide. The FEES page already got a remember { state.address } patch for the same class. I'll frame-step a screen recording before calling it a finding. If it shows, the fix is to animate a per-page snapshot (AnimatedContent(targetState = PageState(page, state, amount, draftAmount), contentKey = { it.page })).
Device gate (partial): not run yet. Pending: usdt-receive-amount-and-units.xml including the new slide step, a frame-stepped recording of Edit and Back on a deposit-network QR, and gfxinfo across the transition. The device result will follow.
…' into fix/usdt-receive-edit-transition
jvsena42
left a comment
There was a problem hiding this comment.
Delta at f473355: no issues found.
a08ca54(blocking USDT wallet tap passthrough) is the same commit I reviewed on #1565:blockPointerInputPassthrough()observes without consuming, as on Savings and Spending.c176c06adds one line tojourneys/README.mdnoting that the USDT receive slide step waits on iOS.
My code scan at 7ea16b2 stands. The open device question from it is still unverified: whether the outgoing page draws the Arbitrum wallet QR under a deposit network's label during the slide.
fix/usdt-wallet-layout-stability), so I'm skipping the device tests until it's rebased. Pending after the rebase:
usdt-receive-amount-and-units.xml, including the slide step;- a frame-stepped recording of Edit and Back on a deposit-network QR;
gfxinfoacross the transition.
…' into fix/usdt-receive-edit-transition # Conflicts: # app/src/main/java/to/bitkit/ui/screens/wallets/usdt/UsdtDepositReceiveScreen.kt
|
@jvsena42 the conflict with the base is resolved in ef3c039: merged |
jvsena42
left a comment
There was a problem hiding this comment.
Delta at ef3c039: the merge of the base (aba8c0f) resolves cleanly. The base's swipeToChangeTab wrapper and the clearAmountError → clearError rename now sit inside each animated page, with no other content change. The PR diff matches a08ca54..f473355.
This also settles the device question from my earlier reviews. During the Edit slide, the outgoing page shows the Arbitrum wallet QR and Copy target under the deposit network's label. One LOW, inline with a failing androidTest. It's visual only: a scan or copy in that window gets the user's own Arbitrum receive address, which still pays Arbitrum.
Device gate (partial): ef3c039 — not run yet. Pending: usdt-receive-amount-and-units.xml Edit/Back on a BNB deposit QR, frame-stepped, after a fix.
Device results will follow in a separate review.
jvsena42
left a comment
There was a problem hiding this comment.
Code scan of ef3c039..4844170: one LOW inline, verified with a failing androidTest.
AnimatedContentnow animates a per-page snapshot (ShownPage(page, state, amount),contentKey = { it.page }). An outgoing Address page keeps its deposit address, URI, label and Copy target, and an outgoing Amount page keeps its digits, so both cases from my earlier outgoing-page thread are fixed by trace. That thread came from a failing androidTest, so I'm leaving it open until that test passes at this head.- The Fees body that vanished on Back stays fixed by the snapshot.
- Cancel and Back paths traced for both the incoming page and taps on the outgoing page: Edit, Back from Amount (deposit network and Arbitrum), Continue from Amount, Back and Continue from Fees, network pick and Back, Back on Address, Back during a running slide. Only Continue on the outgoing Fees page ends in a wrong state.
- No iOS twin: synonymdev/bitkit-ios#1018 is still open, and iOS has no transition there.
Device gate (partial): 4844170 — not run yet; pending usdt-receive-amount-and-units.xml step 4, a frame-stepped Edit and Back on a BNB deposit QR against the Figma frame (49861-374947, 300 ms FastOutSlowIn reused from the receive sheet), the androidTest from the earlier thread, and dumpsys gfxinfo across the transitions. Device results will follow in a separate review.
Closes #1586
Twin: synonymdev/bitkit-ios#1018
Stacked on #1565
Description
UsdtDepositReceiveScreenswitched pages through local state with no animation while the Bitcoin tabs navigate between NavHost destinations.Transitions.kt, so the NavHost lambdas and the USDT pages share one motion spec.Gray7page, so the slide spans the full sheet width and the outgoing page stays hidden behind the incoming one.Out of Scope
UsdtReceiveView: the same missing transition, tracked in bug: receive usdt edit sheet screen has no transitions bitkit-ios#1018.UsdtDepositReceiveScreen: page state stays local; moving USDT receive onto the receive NavHost is not part of this fix.Design
Figma: USDT receive, from
docs/screens-map.md. Motion follows the existing receive sheet transitions; the frames do not specify it.Preview
Savings Edit for reference, then USDT Edit and Back, then Network and Back (regtest, 2x; recorded before the rebase onto #1565, whose changes do not touch the page switch):
usdt-edit-after-2x.mp4
Before: the recording in #1586.
QA Notes
Journeys
usdt-receive-amount-and-units.xml— USDT Edit slides the Amount screen in from the right and Back slides it out over the QRManual Tests
N/A
Automated Checks
N/A