@@ -271,7 +271,7 @@ struct CalculatorWidget: View {
271271 guard let source = values. refreshSource ( activeInput: preferredSource) else { return }
272272
273273 if source == . fiat {
274- refreshBitcoinFromFiat ( )
274+ refreshBitcoinFromFiat ( preserveBitcoinOnConversionFailure : true )
275275 } else {
276276 refreshFiatFromBitcoin ( )
277277 }
@@ -296,20 +296,13 @@ struct CalculatorWidget: View {
296296 }
297297 }
298298
299- private func refreshBitcoinFromFiat( ) {
299+ private func refreshBitcoinFromFiat( preserveBitcoinOnConversionFailure : Bool = false ) {
300300 guard !values. fiatValue. isEmpty else {
301301 values. bitcoinValue = " "
302302 return
303303 }
304304
305- let fiatValue = CalculatorWidgetFormatter . fiatDecimalValue ( values. fiatValue)
306- if NSDecimalNumber ( decimal: fiatValue) . compare ( NSDecimalNumber . zero) == . orderedSame {
307- values. bitcoinValue = CalculatorWidgetFormatter . fiatConversionBitcoinValue ( 0 , displayUnit: currency. displayUnit)
308- return
309- }
310-
311- let fiatDouble = NSDecimalNumber ( decimal: fiatValue) . doubleValue
312- if let sats = currency. convert ( fiatAmount: fiatDouble) {
305+ if let sats = CalculatorWidgetFormatter . convertedSatsFromFiat ( values. fiatValue, convert: { currency. convert ( fiatAmount: $0) } ) {
313306 let cappedSats = min ( sats, CalculatorWidgetFormatter . maxBitcoinSats)
314307 values. bitcoinValue = CalculatorWidgetFormatter . fiatConversionBitcoinValue ( cappedSats, displayUnit: currency. displayUnit)
315308
@@ -320,9 +313,11 @@ struct CalculatorWidget: View {
320313 values. fiatValue = " "
321314 }
322315 }
323- } else {
324- values. bitcoinValue = " "
316+ return
325317 }
318+
319+ guard !preserveBitcoinOnConversionFailure else { return }
320+ values. bitcoinValue = " "
326321 }
327322
328323 private func persistValues( ) {
0 commit comments