From 0930eead2405ae4a77edc6bea417342ff485416b Mon Sep 17 00:00:00 2001 From: Sad Ellie Date: Tue, 12 Sep 2023 13:39:38 +0300 Subject: [PATCH] Restore old calculation logic --- .../sadellie/unitto/feature/converter/ConverterScreen.kt | 8 ++++++-- .../unitto/feature/converter/ConverterViewModel.kt | 8 +++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConverterScreen.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConverterScreen.kt index 021ce22f..697461ab 100644 --- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConverterScreen.kt +++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConverterScreen.kt @@ -25,8 +25,10 @@ import androidx.compose.animation.core.FastOutSlowInEasing import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.core.tween import androidx.compose.animation.expandHorizontally +import androidx.compose.animation.expandVertically import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut +import androidx.compose.animation.shrinkVertically import androidx.compose.animation.togetherWith import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box @@ -310,8 +312,10 @@ private fun Default( formatterSymbols = uiState.formatterSymbols, ) AnimatedVisibility( - visible = uiState.calculation != null, - modifier = Modifier.weight(1f) + visible = calculation.text.isNotEmpty(), + modifier = Modifier.weight(1f), + enter = expandVertically(clip = false), + exit = shrinkVertically(clip = false) ) { ExpressionTextField( modifier = Modifier, diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConverterViewModel.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConverterViewModel.kt index 058ebe6b..de206ce8 100644 --- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConverterViewModel.kt +++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConverterViewModel.kt @@ -38,6 +38,7 @@ import com.sadellie.unitto.data.units.stateIn import com.sadellie.unitto.data.userprefs.UserPreferencesRepository import dagger.hilt.android.lifecycle.HiltViewModel import io.github.sadellie.evaluatto.Expression +import io.github.sadellie.evaluatto.ExpressionException import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.flow.MutableStateFlow @@ -349,13 +350,14 @@ internal class ConverterViewModel @Inject constructor( ) = viewModelScope.launch(Dispatchers.Default) { val calculated = try { Expression(input.text.ifEmpty { Token.Digit._0 }).calculate() + } catch (e: ExpressionException.DivideByZero) { + _calculation.update { null } + return@launch } catch (e: Exception) { - null + return@launch } _calculation.update { if (input.text.isExpression()) calculated else null } - if (calculated == null) return@launch - try { if ((unitFrom.group == UnitGroup.TIME) and (formatTime)) { _result.update { formatTime(calculated.multiply(unitFrom.basicUnit)) }