mirror of
https://github.com/Myzel394/NumberHub.git
synced 2025-06-20 09:15:26 +02:00
Fix ignored minus
This commit is contained in:
parent
777ff6ca67
commit
52a1a5b4d5
@ -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
|
var clean = this
|
||||||
.replace(formatterSymbols.grouping, "")
|
.replace(formatterSymbols.grouping, "")
|
||||||
.replace(formatterSymbols.fractional, Token.Digit.dot)
|
.replace(formatterSymbols.fractional, Token.Digit.dot)
|
||||||
|
@ -22,6 +22,7 @@ import androidx.compose.ui.text.TextRange
|
|||||||
import androidx.compose.ui.text.input.TextFieldValue
|
import androidx.compose.ui.text.input.TextFieldValue
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
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.AllFormatterSymbols
|
||||||
import com.sadellie.unitto.core.ui.common.textfield.addTokens
|
import com.sadellie.unitto.core.ui.common.textfield.addTokens
|
||||||
import com.sadellie.unitto.core.ui.common.textfield.deleteTokens
|
import com.sadellie.unitto.core.ui.common.textfield.deleteTokens
|
||||||
@ -91,12 +92,15 @@ internal class CalculatorViewModel @Inject constructor(
|
|||||||
is CalculationResult.Default -> {
|
is CalculationResult.Default -> {
|
||||||
if (calculationResult.text.isEmpty()) return@launch
|
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(
|
calculatorHistoryRepository.add(
|
||||||
expression = _input.value.text,
|
expression = _input.value.text,
|
||||||
result = calculationResult.text
|
result = calculationText
|
||||||
)
|
)
|
||||||
_input.update {
|
_input.update {
|
||||||
TextFieldValue(calculationResult.text, TextRange(calculationResult.text.length))
|
TextFieldValue(calculationText, TextRange(calculationText.length))
|
||||||
}
|
}
|
||||||
_output.update { CalculationResult.Default() }
|
_output.update { CalculationResult.Default() }
|
||||||
}
|
}
|
||||||
|
@ -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.ExpressionTransformer
|
||||||
import com.sadellie.unitto.core.ui.common.textfield.FormatterSymbols
|
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.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.common.textfield.copyWithoutGrouping
|
||||||
import com.sadellie.unitto.core.ui.theme.NumbersTextStyleDisplayMedium
|
import com.sadellie.unitto.core.ui.theme.NumbersTextStyleDisplayMedium
|
||||||
import com.sadellie.unitto.data.model.HistoryItem
|
import com.sadellie.unitto.data.model.HistoryItem
|
||||||
@ -171,14 +172,14 @@ private fun HistoryListItem(
|
|||||||
val expressionInteractionSource = remember(expression) { MutableInteractionSource() }
|
val expressionInteractionSource = remember(expression) { MutableInteractionSource() }
|
||||||
LaunchedEffect(expressionInteractionSource) {
|
LaunchedEffect(expressionInteractionSource) {
|
||||||
expressionInteractionSource.interactions.collect {
|
expressionInteractionSource.interactions.collect {
|
||||||
if (it is PressInteraction.Release) addTokens(expression)
|
if (it is PressInteraction.Release) addTokens(expression.clearAndFilterExpression(formatterSymbols))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val resultInteractionSource = remember(result) { MutableInteractionSource() }
|
val resultInteractionSource = remember(result) { MutableInteractionSource() }
|
||||||
LaunchedEffect(resultInteractionSource) {
|
LaunchedEffect(resultInteractionSource) {
|
||||||
resultInteractionSource.interactions.collect {
|
resultInteractionSource.interactions.collect {
|
||||||
if (it is PressInteraction.Release) addTokens(result)
|
if (it is PressInteraction.Release) addTokens(result.clearAndFilterExpression(formatterSymbols))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user