Do not modify amount immediately after toggle.

fork-5.53.8
Alex Hart 2021-04-07 14:59:07 -03:00
rodzic df948179d8
commit 8e4b08b493
3 zmienionych plików z 6 dodań i 25 usunięć

Wyświetl plik

@ -77,7 +77,7 @@ public class FiatMoneyUtil {
return this;
}
public @NonNull FormatOptions withoutSymbol() {
public @NonNull FormatOptions numberOnly() {
this.withSymbol = false;
return this;
}

Wyświetl plik

@ -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;
}
}

Wyświetl plik

@ -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);
}