From ce614aa172b3046e7682d13672fd2892f2835e5a Mon Sep 17 00:00:00 2001 From: Sad Ellie Date: Sun, 26 Feb 2023 15:12:34 +0400 Subject: [PATCH] Fixed expression evaluation ("=" click) --- .../unitto/feature/calculator/CalculatorViewModel.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/CalculatorViewModel.kt b/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/CalculatorViewModel.kt index 3c24bbc8..34769f1a 100644 --- a/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/CalculatorViewModel.kt +++ b/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/CalculatorViewModel.kt @@ -99,7 +99,11 @@ internal class CalculatorViewModel @Inject constructor( fun evaluate() { // Input and output can change while saving in history. This way we cache it here (i think) val output = _output.value - if (!Expression(textFieldController.inputTextWithoutFormatting()).checkSyntax()) return + + // Output can be empty when input and output are identical (for exampel when user entered + // just a number, not expression + if (output.isEmpty()) return + if (!Expression(textFieldController.inputTextWithoutFormatting().clean).checkSyntax()) return // Save to history viewModelScope.launch(Dispatchers.IO) { @@ -139,6 +143,7 @@ internal class CalculatorViewModel @Inject constructor( .setMinimumRequiredScale(_userPrefs.value.digitsPrecision) .trimZeros() + // Output will be empty if it's same as input try { val inputBigDecimal = BigDecimal(currentInput)