Skip to content

fix: use app dialog style for retry original payment - #1578

Merged
ovitrif merged 2 commits into
masterfrom
fix/retry-original-dialog-style
Oct 20, 2026
Merged

ovitrif merged 2 commits into
masterfrom
fix/retry-original-dialog-style

Conversation

@jvsena42

@jvsena42 jvsena42 commented Oct 19, 2026 •

Copy link
Copy Markdown
Member

Fixes #1544

This PR moves both steps of Retry original payment from plain Material3 dialogs to the app's AppAlertDialog. The steps now have a title style, a labelled recipient, the usual amount block, and a fee field that shows its unit.

Description

  • Fee step (RecoveryFeeDialog): AppAlertDialog with the Title style, the Gray5 surface and text buttons. It shows the description, then "To" above the address, then BalanceHeaderView with its fiat line above the sats. The fee field is labelled "Set Custom Fee" and shows "₿ / vbyte" as a suffix inside it. An invalid rate shows the existing error under the field and greys out Continue.
  • Approval step: the same dialog with "To", the amount block, then "Speed and fee" with the mining fee in sats and the rate below it.
  • AppAlertDialog: adds confirmEnabled to the overload that takes custom content, so the fee step can disable Continue. The default stays true, so existing callers are unchanged.
  • Both dialogs scroll when the content is taller than the screen. They still close on system Back or a tap outside, as before.
  • All labels reuse existing strings: wallet__send_to, wallet__send_fee_custom, wallet__send_fee_and_speed, common__sat_vbyte.

Rebased on master (review round 1): the only overlap was master's reformatting of the old fee AlertDialog block this PR replaces.

Out of Scope

  • A dedicated design for the retry steps: no Figma frame covers them (docs/screens-map.md maps SendPendingScreen.kt only to "Transaction pending Lightning"). This PR reuses existing components and adds no new UI elements.
  • iOS: shows the same steps as native .alerts, as the issue notes.

Design

N/A — no design available. The steps use the app's dialog component; the closest Figma reference is the Dialog master used across the handoff page. Android's AppAlertDialog is the existing adaptation of that component, as already used by the Warning step on this screen.

Preview

Gate_Throwaway emulator, dev regtest wallet. The broadcast was swallowed by a local copy of scripts/electrum-bridge.py that drops only blockchain.transaction.broadcast, so Payment Pending offered Retry original payment.

Before (from the issue) After
Fee step Before: fee step After: fee step
Invalid fee — After: invalid fee greys out Continue
Approval step Before: approval step After: approval step

Figma Dialog master for reference:

Figma Dialog master

QA Notes

Journeys

  • new retry-original-dialog-style.xml: both retry steps use the app dialog, with the labelled recipient, the amount block and the fee field with its unit; an invalid fee greys out Continue

Manual Tests

N/A

Automated Checks

  • ran just compile, just test and just lint on this branch merged with the other 3.1.0 batch branches: all passed, and detekt reports no findings in the changed files

@jvsena42 jvsena42 added this to the 3.1.0 milestone Oct 19, 2026
@jvsena42 jvsena42 self-assigned this Oct 19, 2026
@greptile-apps

greptile-apps Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The PR appears safe to merge; no actionable regression was found.

Summary

Both retry-payment steps now use AppAlertDialog.

  • Both Retry original payment steps use Bitkit’s app dialogs.

No actionable issues found. Review was source-based; Android builds, tests, and visual checks were not run.

Reviews (1) · Last reviewed commit: "fix: use app dialog style for retry orig..." · Reviewed by Greptile

@talosmachina talosmachina 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.

No findings. Both Retry original payment steps move to AppAlertDialog, which gains a confirmEnabled flag for the fee step. Reviewed 99cdd21, full tier.

What I checked, and 4 candidates I ruled out

Read in full: AppAlertDialog.kt, SendPendingScreen.kt (RecoveryAuthorization, RecoveryFeeDialog, RecoveryRecipient), SendPendingViewModel (answerRecoveryApproval), OnchainRecoveryFeeRate, rememberDebouncedClick
Call sites traced: every AppAlertDialog caller (the new parameter defaults to true), the reused strings wallet__send_to, wallet__send_fee_custom, wallet__send_fee_and_speed
CI: build, lint and e2e still running at review time

Ruled out

  • Approval left unanswered: properties = DialogProperties() keeps dismiss on Back and outside tap, and onDismissRequest defaults to onDismiss, which answers false, as the old AlertDialog did.
  • Stale fee on confirm: rememberDebouncedClick reads the latest lambda through rememberUpdatedState, so feeRate?.let(onAuthorize) sees the current input; a disabled button cannot fire it at all.
  • Double Authorize: the click is debounced, and a second complete on the deferred is a no-op.
  • Dead imports: PrimaryButton, SecondaryButton and BodyM are still used elsewhere in the file.

Bitkit Android branches are not built on this reviewer's machine, so this review is reasoned from the code and CI, and the listed journey was not driven.

Merge confidence: 4/5, CI had not finished and the dialogs are covered only by the manual journey.

@github-actions

github-actions Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Regtest APK

Built from 5df425c (run).

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

@jvsena42
jvsena42 requested review from a team, coreyphillips and pwltr and removed request for a team October 19, 2026 16:45
@jvsena42
jvsena42 enabled auto-merge October 19, 2026 16:46
@jvsena42
jvsena42 marked this pull request as draft October 19, 2026 20:38
auto-merge was automatically disabled October 19, 2026 20:38

Pull request was converted to draft

@jvsena42
jvsena42 force-pushed the fix/retry-original-dialog-style branch from 99cdd21 to 781a40d Compare October 19, 2026 20:38
@jvsena42
jvsena42 marked this pull request as ready for review October 19, 2026 20:39
@greptile-apps

greptile-apps Bot commented Oct 19, 2026

Copy link
Copy Markdown
Contributor

Greptile encountered an error while reviewing this PR. Please reach out to support@greptile.com for assistance and include this reference: aaab5bc8-4992-402c-b66b-e1373a0af0e3.

jvsena42 and others added 2 commits October 20, 2026 09:00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jvsena42
jvsena42 force-pushed the fix/retry-original-dialog-style branch from 781a40d to 5df425c Compare October 20, 2026 12:00
@jvsena42
jvsena42 requested a review from ovitrif October 20, 2026 12:33

@pwltr pwltr left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Approving this as an improvement over the dialogs introduced in #1384. Using the app’s dialog component, labelling the recipient and fee field, and showing validation feedback improves consistency and clarity.

Non-blocking UI recommendation: the overall recovery flow still needs refinement. Two successive dialogs repeat the recipient and amount, while the large balance component and lengthy explanation make the first dialog unnecessarily heavy.

I’d recommend adapting the existing Send fee-selection and confirmation layouts for recovery, keeping the original recipient, amount and inputs fixed, and preserving exact mining-fee approval, fee warnings and normal payment authentication.

@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 fe2c28c into master Oct 20, 2026
21 checks passed
@ovitrif

ovitrif commented Oct 20, 2026

Copy link
Copy Markdown
Collaborator

Merged, as it was approved and green.

@ovitrif
ovitrif deleted the fix/retry-original-dialog-style branch October 20, 2026 15:15
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.

retry original payment dialog uses unstyled material dialogs

4 participants