diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/FormatterExtensions.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/FormatterExtensions.kt index 818e528b..b9843698 100644 --- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/FormatterExtensions.kt +++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/FormatterExtensions.kt @@ -39,7 +39,7 @@ private val timeDivisions by lazy { ) } -internal fun String.clearAndFilterExpression(formatterSymbols: FormatterSymbols): String { +fun String.clearAndFilterExpression(formatterSymbols: FormatterSymbols): String { var clean = this .replace(formatterSymbols.grouping, "") .replace(formatterSymbols.fractional, Token.Digit.dot) 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 7c12c7ad..79c15e10 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 @@ -22,6 +22,7 @@ import androidx.compose.ui.text.TextRange import androidx.compose.ui.text.input.TextFieldValue import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope +import com.sadellie.unitto.core.base.Token import com.sadellie.unitto.core.ui.common.textfield.AllFormatterSymbols import com.sadellie.unitto.core.ui.common.textfield.addTokens import com.sadellie.unitto.core.ui.common.textfield.deleteTokens @@ -91,12 +92,15 @@ internal class CalculatorViewModel @Inject constructor( is CalculationResult.Default -> { if (calculationResult.text.isEmpty()) return@launch + // We can get negative number and they use ugly minus symbol + val calculationText = calculationResult.text.replace("-", Token.Operator.minus) + calculatorHistoryRepository.add( expression = _input.value.text, - result = calculationResult.text + result = calculationText ) _input.update { - TextFieldValue(calculationResult.text, TextRange(calculationResult.text.length)) + TextFieldValue(calculationText, TextRange(calculationText.length)) } _output.update { CalculationResult.Default() } } diff --git a/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/components/HistoryList.kt b/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/components/HistoryList.kt index 9941b691..66cf68b7 100644 --- a/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/components/HistoryList.kt +++ b/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/components/HistoryList.kt @@ -61,6 +61,7 @@ import com.sadellie.unitto.core.base.R import com.sadellie.unitto.core.ui.common.textfield.ExpressionTransformer import com.sadellie.unitto.core.ui.common.textfield.FormatterSymbols import com.sadellie.unitto.core.ui.common.textfield.UnittoTextToolbar +import com.sadellie.unitto.core.ui.common.textfield.clearAndFilterExpression import com.sadellie.unitto.core.ui.common.textfield.copyWithoutGrouping import com.sadellie.unitto.core.ui.theme.NumbersTextStyleDisplayMedium import com.sadellie.unitto.data.model.HistoryItem @@ -171,14 +172,14 @@ private fun HistoryListItem( val expressionInteractionSource = remember(expression) { MutableInteractionSource() } LaunchedEffect(expressionInteractionSource) { expressionInteractionSource.interactions.collect { - if (it is PressInteraction.Release) addTokens(expression) + if (it is PressInteraction.Release) addTokens(expression.clearAndFilterExpression(formatterSymbols)) } } val resultInteractionSource = remember(result) { MutableInteractionSource() } LaunchedEffect(resultInteractionSource) { resultInteractionSource.interactions.collect { - if (it is PressInteraction.Release) addTokens(result) + if (it is PressInteraction.Release) addTokens(result.clearAndFilterExpression(formatterSymbols)) } }