Do not modify amount immediately after toggle.
This commit is contained in:
parent
df948179d8
commit
8e4b08b493
3 changed files with 6 additions and 25 deletions
|
@ -77,7 +77,7 @@ public class FiatMoneyUtil {
|
|||
return this;
|
||||
}
|
||||
|
||||
public @NonNull FormatOptions withoutSymbol() {
|
||||
public @NonNull FormatOptions numberOnly() {
|
||||
this.withSymbol = false;
|
||||
return this;
|
||||
}
|
||||
|
|
|
@ -119,7 +119,7 @@ public class CreatePaymentFragment extends LoggingFragment {
|
|||
Navigation.findNavController(v).navigate(directions);
|
||||
});
|
||||
|
||||
toggle.setOnClickListener(v -> viewModel.toggleMoneyInputTarget(requireContext()));
|
||||
toggle.setOnClickListener(v -> viewModel.toggleMoneyInputTarget());
|
||||
|
||||
initializeConstraintSets();
|
||||
initializeKeyboardButtons(view, viewModel);
|
||||
|
@ -207,9 +207,7 @@ public class CreatePaymentFragment extends LoggingFragment {
|
|||
case FIAT_MONEY:
|
||||
Currency currency = inputState.getFiatMoney().get().getCurrency();
|
||||
exchange.setText(new SpannableStringBuilder().append(currency.getSymbol())
|
||||
.append(inputState.getFiatAmount())
|
||||
.append(SpanUtil.color(ContextCompat.getColor(requireContext(), R.color.payment_currency_code_foreground_color),
|
||||
currency.getCurrencyCode())));
|
||||
.append(inputState.getFiatAmount()));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -118,8 +118,8 @@ public class CreatePaymentViewModel extends ViewModel {
|
|||
});
|
||||
}
|
||||
|
||||
void toggleMoneyInputTarget(@NonNull Context context) {
|
||||
inputState.update(s -> trimFiatAfterToggle(updateAmount(context, s.updateInputTarget(s.getInputTarget().next()), AmountKeyboardGlyph.NONE)));
|
||||
void toggleMoneyInputTarget() {
|
||||
inputState.update(s -> s.updateInputTarget(s.getInputTarget().next()));
|
||||
}
|
||||
|
||||
void setNote(@Nullable CharSequence note) {
|
||||
|
@ -141,23 +141,6 @@ public class CreatePaymentViewModel extends ViewModel {
|
|||
}
|
||||
}
|
||||
|
||||
private @NonNull InputState trimFiatAfterToggle(@NonNull InputState inputState) {
|
||||
if (inputState.getInputTarget() == FIAT_MONEY) {
|
||||
String fiatAmount = inputState.getFiatAmount();
|
||||
FiatMoney fiatMoney = inputState.getFiatMoney().get();
|
||||
|
||||
if (fiatMoney.getAmount().equals(BigDecimal.ZERO)) {
|
||||
return inputState.updateFiatAmount("0");
|
||||
} else if (fiatAmount.contains(ApplicationDependencies.getApplication().getString(AmountKeyboardGlyph.DECIMAL.getGlyphRes()))) {
|
||||
return inputState.updateFiatAmount(inputState.getFiatAmount().replaceFirst("\\.*0+$", ""));
|
||||
} else {
|
||||
return inputState;
|
||||
}
|
||||
} else {
|
||||
return inputState;
|
||||
}
|
||||
}
|
||||
|
||||
private @NonNull InputState updateFiatAmount(@NonNull Context context,
|
||||
@NonNull InputState inputState,
|
||||
@NonNull AmountKeyboardGlyph glyph,
|
||||
|
@ -178,7 +161,7 @@ public class CreatePaymentViewModel extends ViewModel {
|
|||
String newMoneyAmount = updateAmountString(context, inputState.getMoneyAmount(), glyph, inputState.getMoney().getCurrency().getDecimalPrecision());
|
||||
Money newMoney = stringToMobileCoinValueOrZero(newMoneyAmount);
|
||||
Optional<FiatMoney> newFiat = OptionalUtil.flatMap(inputState.getExchangeRate(), e -> e.exchange(newMoney));
|
||||
String newFiatAmount = newFiat.transform(f -> FiatMoneyUtil.format(context.getResources(), f, FiatMoneyUtil.formatOptions().withDisplayTime(false).withoutSymbol())).or("0");
|
||||
String newFiatAmount = newFiat.transform(f -> FiatMoneyUtil.format(context.getResources(), f, FiatMoneyUtil.formatOptions().withDisplayTime(false).numberOnly())).or("0");
|
||||
|
||||
return inputState.updateAmount(newMoneyAmount, newFiatAmount, newMoney, newFiat);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue