Skip to content

fix(ui): show correct duration for fee rate#452

Open
pwltr wants to merge 1 commit intomasterfrom
fix/fee-display
Open

fix(ui): show correct duration for fee rate#452
pwltr wants to merge 1 commit intomasterfrom
fix/fee-display

Conversation

@pwltr
Copy link
Contributor

@pwltr pwltr commented Feb 19, 2026

Description

Mostly a refactor/cleanup but also adds a way to override fee estimates in debug mode (useful for UI work) and aims to show estimated confirmation time when a custom fee is set, instead of "Depends on fee".

  • show correct duration for fee rate where applicable (transaction speed settings, send fee rate, boost sheet)
  • Route fee estimation usage through FeeEstimatesManager; remove direct blocktank.fees() calls
  • Activity: design updates v59 (activity icons, text)
  • force .modern, .bitcoin denomination for custom fee UI
  • add "override fees" dev setting to be able to debug fee estimation UI
  • update localization keys and strings
  • ActivityListViewModel/TransferViewModel: drop unnecesary fee estimation refresh (payOrder takes required satsPerVbyte, estimates cache warmed in ActivityList/ActivityLatest .task)

Screenshot / Video

Simulator.Screen.Recording.-.iPhone.17.-.2026-03-05.at.17.29.39.mov

@pwltr
Copy link
Contributor Author

pwltr commented Feb 19, 2026

Drafted to give precedence to other PRs

@pwltr pwltr force-pushed the fix/fee-display branch 2 times, most recently from c3a906d to a794374 Compare February 19, 2026 14:19
@pwltr pwltr self-assigned this Mar 4, 2026
@pwltr pwltr force-pushed the fix/fee-display branch 2 times, most recently from b5e1f67 to 0668e8a Compare March 5, 2026 16:32
@pwltr pwltr marked this pull request as ready for review March 5, 2026 16:32
@pwltr pwltr force-pushed the fix/fee-display branch from 0668e8a to d9f3544 Compare March 5, 2026 21:16
@pwltr pwltr force-pushed the fix/fee-display branch from d9f3544 to 45f8dd0 Compare March 6, 2026 07:11
"fee__fast__longTitle" = "Fast (more expensive)";
"fee__fast__description" = "±10 minutes";
"fee__fast__shortDescription" = "±10m";
"fee__fast__range" = "±10-20 minutes";
Copy link

Choose a reason for hiding this comment

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

Missing translations: fee__*__range, wallet__activity_transferring, and wallet__activity_in_transfer are absent from all non-English locales

These new localization keys were added to en.lproj in this PR but are missing from all 14 other locale files (ca, cs, de, el, es, es-419, fr, it, nl, pl, pt-BR, ru, and others):

  • fee__fast__range, fee__normal__range, fee__slow__range, fee__minimum__range, fee__custom__range — used at runtime in FeeItem.swift (via speed.range), SendFeeRate.swift (via customFeeRangeOverride), and SendConfirmationView.swift
  • wallet__activity_transferring — used in ActivityRowOnchain.swift for the status label of unconfirmed transfers
  • wallet__activity_in_transfer — used in ActivityItemView.swift for the detail view status

The non-English locale files did receive fee__*__longRange and fee__*__longTitle translations, but not the shorter fee__*__range variants. For users on any non-English locale, t("fee__fast__range") etc. will return the raw key string instead of a translated duration.

See:

"fee__fast__longTitle" = "Fast (more expensive)";
"fee__fast__description" = "±10 minutes";
"fee__fast__shortDescription" = "±10m";
"fee__fast__range" = "±10-20 minutes";
"fee__fast__longRange" = "± 10-20 minutes";
"fee__normal__title" = "Normal";

@claude
Copy link

claude bot commented Mar 6, 2026

Code review

Found 3 issues:

1. Compile error — type mismatch in SendFeeRate.swift (link)

wallet.totalBalanceSats is Int but amount + fee is UInt64. Swift will not compile this comparison. The fix is to restore the explicit cast that was removed along with onchainBalance: UInt64(wallet.totalBalanceSats) < amount + fee.

2. wallet__activity_boosting missing from all locale files (link)

This key is used in ActivityRowOnchain.swift and ActivityItemView.swift but was never added to any .strings file — including en.lproj. Every user will see the raw key string "wallet__activity_boosting" at runtime.

3. Several new keys missing from non-English locale files (link)

The following keys were added to en.lproj but not to any of the 14 other locales: fee__fast__range, fee__normal__range, fee__slow__range, fee__minimum__range, fee__custom__range, wallet__activity_transferring, and wallet__activity_in_transfer. Non-English users will see raw key strings in the fee rate UI and activity list.

@ovitrif
Copy link
Collaborator

ovitrif commented Mar 6, 2026

Non-English users will see raw key strings in the fee rate UI and activity list.

Is this how it works?! 🤦🏻 In Android it simply shows the non-translated text using the default locale, ie. English copy.
This is platform-level thing, just curious.

@pwltr
Copy link
Contributor Author

pwltr commented Mar 6, 2026

Non-English users will see raw key strings in the fee rate UI and activity list.

No it's making shit up, it falls back to English.

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.

2 participants