Conversation
a14e315 to
fa55c65
Compare
|
Drafted to give precedence to other PRs |
c3a906d to
a794374
Compare
b5e1f67 to
0668e8a
Compare
| case bitcoin = "Bitcoin" | ||
| case fiat = "Fiat" | ||
| case bitcoin | ||
| case fiat |
There was a problem hiding this comment.
Bug: raw value change breaks existing UserDefaults data and migration path
Changing from explicit raw values to implicit ones changes the stored string representation:
// Before: raw values were "Bitcoin" and "Fiat"
case bitcoin = "Bitcoin"
case fiat = "Fiat"
// After: raw values are now "bitcoin" and "fiat" (lowercase)
case bitcoin
case fiatMigrationsService.swift writes the old capitalized values to UserDefaults:
bitkit-ios/Bitkit/Services/MigrationsService.swift
Lines 1210 to 1214 in d9f3544
After this change, @AppStorage("primaryDisplay") var primaryDisplay: PrimaryDisplay will fail to decode "Fiat" (stored by the migration) because PrimaryDisplay(rawValue: "Fiat") now returns nil. The AppStorage property wrapper will silently fall back to the default value .bitcoin, resetting any user who had fiat as their primary display preference.
The migration write path is also permanently broken going forward — it still writes "Bitcoin" / "Fiat", which will never decode correctly with the new enum.
Fix: Either restore the explicit raw values, or update MigrationsService.applyRNSettings to write the new lowercase values ("bitcoin" / "fiat") and add a migration step to convert existing stored values.
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".
.modern,.bitcoindenomination for custom fee UIsatsPerVbyte, estimates cache warmed in ActivityList/ActivityLatest .task)Screenshot / Video
Simulator.Screen.Recording.-.iPhone.17.-.2026-03-05.at.17.29.39.mov