From d0fcf5b138bbf37260a192c6d367e1cfd18e8813 Mon Sep 17 00:00:00 2001 From: Sad Ellie Date: Wed, 3 Jan 2024 14:45:44 +0300 Subject: [PATCH] Continuous calculations closes #147 --- .../unitto/data/backup/BackupManagerTest.kt | 2 -- .../sadellie/unitto/data/backup/BackupManager.kt | 3 --- .../com/sadellie/unitto/data/backup/UserData.kt | 1 - .../model/repository/UserPreferencesRepository.kt | 2 -- .../data/model/userprefs/CalculatorPreferences.kt | 1 - .../unitto/data/userprefs/PreferenceExt.kt | 4 ---- .../unitto/data/userprefs/PreferenceModels.kt | 1 - .../sadellie/unitto/data/userprefs/PrefsKeys.kt | 1 - .../unitto/data/userprefs/UserPreferences.kt | 7 ------- .../feature/calculator/CalculatorViewModel.kt | 14 ++++---------- .../calculator/CalculatorSettingsScreen.kt | 14 -------------- .../calculator/CalculatorSettingsUIState.kt | 1 - .../calculator/CalculatorSettingsViewModel.kt | 5 ----- 13 files changed, 4 insertions(+), 52 deletions(-) diff --git a/data/backup/src/androidTest/java/com/sadellie/unitto/data/backup/BackupManagerTest.kt b/data/backup/src/androidTest/java/com/sadellie/unitto/data/backup/BackupManagerTest.kt index 4173a952..c61f77b0 100644 --- a/data/backup/src/androidTest/java/com/sadellie/unitto/data/backup/BackupManagerTest.kt +++ b/data/backup/src/androidTest/java/com/sadellie/unitto/data/backup/BackupManagerTest.kt @@ -83,7 +83,6 @@ class BackupManagerTest { // CALCULATOR it[PrefsKeys.RADIAN_MODE] = FakeUsrPreferenceValues.radianMode it[PrefsKeys.PARTIAL_HISTORY_VIEW] = FakeUsrPreferenceValues.partialHistoryView - it[PrefsKeys.CLEAR_INPUT_AFTER_EQUALS] = FakeUsrPreferenceValues.clearInputAfterEquals // UNIT CONVERTER it[PrefsKeys.LATEST_LEFT_SIDE] = FakeUsrPreferenceValues.latestLeftSide @@ -116,7 +115,6 @@ class BackupManagerTest { outputFormat = FakeUsrPreferenceValues.outputFormat, radianMode = FakeUsrPreferenceValues.radianMode, partialHistoryView = FakeUsrPreferenceValues.partialHistoryView, - clearInputAfterEquals = FakeUsrPreferenceValues.clearInputAfterEquals, latestLeftSide = FakeUsrPreferenceValues.latestLeftSide, latestRightSide = FakeUsrPreferenceValues.latestRightSide, shownUnitGroups = FakeUsrPreferenceValues.shownUnitGroups, diff --git a/data/backup/src/main/java/com/sadellie/unitto/data/backup/BackupManager.kt b/data/backup/src/main/java/com/sadellie/unitto/data/backup/BackupManager.kt index 6a3fb89f..c7d462a4 100644 --- a/data/backup/src/main/java/com/sadellie/unitto/data/backup/BackupManager.kt +++ b/data/backup/src/main/java/com/sadellie/unitto/data/backup/BackupManager.kt @@ -29,7 +29,6 @@ import com.sadellie.unitto.data.database.TimeZoneDao import com.sadellie.unitto.data.database.UnitsDao import com.sadellie.unitto.data.userprefs.PrefsKeys import com.sadellie.unitto.data.userprefs.getAcButton -import com.sadellie.unitto.data.userprefs.getClearInputAfterEquals import com.sadellie.unitto.data.userprefs.getCustomColor import com.sadellie.unitto.data.userprefs.getDigitsPrecision import com.sadellie.unitto.data.userprefs.getEnableAmoledTheme @@ -137,7 +136,6 @@ class BackupManager @Inject constructor( outputFormat = data.getOutputFormat(), radianMode = data.getRadianMode(), partialHistoryView = data.getPartialHistoryView(), - clearInputAfterEquals = data.getClearInputAfterEquals(), latestLeftSide = data.getLatestLeftSide(), latestRightSide = data.getLatestRightSide(), shownUnitGroups = data.getShownUnitGroups().joinToString(","), @@ -174,7 +172,6 @@ class BackupManager @Inject constructor( // CALCULATOR it[PrefsKeys.RADIAN_MODE] = userData.radianMode it[PrefsKeys.PARTIAL_HISTORY_VIEW] = userData.partialHistoryView - it[PrefsKeys.CLEAR_INPUT_AFTER_EQUALS] = userData.clearInputAfterEquals // UNIT CONVERTER it[PrefsKeys.LATEST_LEFT_SIDE] = userData.latestLeftSide diff --git a/data/backup/src/main/java/com/sadellie/unitto/data/backup/UserData.kt b/data/backup/src/main/java/com/sadellie/unitto/data/backup/UserData.kt index 03101f8a..fc0ab364 100644 --- a/data/backup/src/main/java/com/sadellie/unitto/data/backup/UserData.kt +++ b/data/backup/src/main/java/com/sadellie/unitto/data/backup/UserData.kt @@ -46,7 +46,6 @@ internal data class UserData( @Json(name = "radianMode") val radianMode: Boolean, @Json(name = "partialHistoryView") val partialHistoryView: Boolean, - @Json(name = "clearInputAfterEquals") val clearInputAfterEquals: Boolean, @Json(name = "latestLeftSide") val latestLeftSide: String, @Json(name = "latestRightSide") val latestRightSide: String, diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/repository/UserPreferencesRepository.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/repository/UserPreferencesRepository.kt index 95fcce03..98c4156a 100644 --- a/data/model/src/main/java/com/sadellie/unitto/data/model/repository/UserPreferencesRepository.kt +++ b/data/model/src/main/java/com/sadellie/unitto/data/model/repository/UserPreferencesRepository.kt @@ -87,7 +87,5 @@ interface UserPreferencesRepository { suspend fun updateAcButton(enabled: Boolean) - suspend fun updateClearInputAfterEquals(enabled: Boolean) - suspend fun updateRpnMode(enabled: Boolean) } diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/CalculatorPreferences.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/CalculatorPreferences.kt index 36e47982..ac94e89a 100644 --- a/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/CalculatorPreferences.kt +++ b/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/CalculatorPreferences.kt @@ -27,5 +27,4 @@ interface CalculatorPreferences { val partialHistoryView: Boolean val precision: Int val outputFormat: Int - val clearInputAfterEquals: Boolean } diff --git a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PreferenceExt.kt b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PreferenceExt.kt index e8593b33..6418f25d 100644 --- a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PreferenceExt.kt +++ b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PreferenceExt.kt @@ -124,10 +124,6 @@ fun Preferences.getAcButton(): Boolean { return this[PrefsKeys.AC_BUTTON] ?: true } -fun Preferences.getClearInputAfterEquals(): Boolean { - return this[PrefsKeys.CLEAR_INPUT_AFTER_EQUALS] ?: false -} - fun Preferences.getRpnMode(): Boolean { return this[PrefsKeys.RPN_MODE] ?: false } diff --git a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PreferenceModels.kt b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PreferenceModels.kt index 03dc71e1..1e00d073 100644 --- a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PreferenceModels.kt +++ b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PreferenceModels.kt @@ -57,7 +57,6 @@ data class CalculatorPreferencesImpl( override val partialHistoryView: Boolean, override val precision: Int, override val outputFormat: Int, - override val clearInputAfterEquals: Boolean, ) : CalculatorPreferences data class ConverterPreferencesImpl( diff --git a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PrefsKeys.kt b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PrefsKeys.kt index fad50d08..7f081f00 100644 --- a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PrefsKeys.kt +++ b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PrefsKeys.kt @@ -46,7 +46,6 @@ object PrefsKeys { // CALCULATOR val RADIAN_MODE = booleanPreferencesKey("RADIAN_MODE_PREF_KEY") val PARTIAL_HISTORY_VIEW = booleanPreferencesKey("PARTIAL_HISTORY_VIEW_PREF_KEY") - val CLEAR_INPUT_AFTER_EQUALS = booleanPreferencesKey("CLEAR_INPUT_AFTER_EQUALS_PREF_KEY") // UNIT CONVERTER val LATEST_LEFT_SIDE = stringPreferencesKey("LATEST_LEFT_SIDE_PREF_KEY") diff --git a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/UserPreferences.kt b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/UserPreferences.kt index 3200e24f..515e2c19 100644 --- a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/UserPreferences.kt +++ b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/UserPreferences.kt @@ -81,7 +81,6 @@ class UserPreferencesRepositoryImpl @Inject constructor( precision = preferences.getDigitsPrecision(), outputFormat = preferences.getOutputFormat(), acButton = preferences.getAcButton(), - clearInputAfterEquals = preferences.getClearInputAfterEquals() ) } @@ -278,12 +277,6 @@ class UserPreferencesRepositoryImpl @Inject constructor( } } - override suspend fun updateClearInputAfterEquals(enabled: Boolean) { - dataStore.edit { preferences -> - preferences[PrefsKeys.CLEAR_INPUT_AFTER_EQUALS] = enabled - } - } - override suspend fun updateRpnMode(enabled: Boolean) { dataStore.edit { preferences -> preferences[PrefsKeys.RPN_MODE] = enabled 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 a8936a73..2a3a5149 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 @@ -116,8 +116,8 @@ internal class CalculatorViewModel @Inject constructor( .stateIn(viewModelScope, CalculatorUIState.Loading) fun addTokens(tokens: String) = _input.update { - val clearInputAfterEquals = _prefs.value?.clearInputAfterEquals ?: true - val newValue = if (_equalClicked.value and clearInputAfterEquals) { + val newValue = if (_equalClicked.value and Token.Digit.allWithDot.contains(tokens)) { + // Clean input after clicking "=" and any token that is a Digit TextFieldValue().addTokens(tokens) } else { it.addTokens(tokens) @@ -129,12 +129,7 @@ internal class CalculatorViewModel @Inject constructor( } fun addBracket() = _input.update { - val clearInputAfterEquals = _prefs.value?.clearInputAfterEquals ?: true - val newValue = if (_equalClicked.value and clearInputAfterEquals) { - TextFieldValue().addBracket() - } else { - it.addBracket() - } + val newValue = it.addBracket() _equalClicked.update { false } _fractionJob?.cancel() savedStateHandle[_inputKey] = newValue.text @@ -142,8 +137,7 @@ internal class CalculatorViewModel @Inject constructor( } fun deleteTokens() = _input.update { - val clearInputAfterEquals = _prefs.value?.clearInputAfterEquals ?: true - val newValue = if (_equalClicked.value and clearInputAfterEquals) { + val newValue = if (_equalClicked.value) { TextFieldValue().deleteTokens() } else { it.deleteTokens() diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/calculator/CalculatorSettingsScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/calculator/CalculatorSettingsScreen.kt index df846761..a39a7668 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/calculator/CalculatorSettingsScreen.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/calculator/CalculatorSettingsScreen.kt @@ -22,7 +22,6 @@ import androidx.compose.animation.Crossfade import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.Backspace import androidx.compose.material.icons.filled.Timer import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier @@ -48,7 +47,6 @@ internal fun CalculatorSettingsRoute( uiState = prefs, navigateUpAction = navigateUpAction, updatePartialHistoryView = viewModel::updatePartialHistoryView, - updateClearInputAfterEquals = viewModel::updateClearInputAfterEquals, updateRpnMode = viewModel::updateRpnMode, ) } @@ -61,7 +59,6 @@ private fun CalculatorSettingsScreen( uiState: CalculatorSettingsUIState, navigateUpAction: () -> Unit, updatePartialHistoryView: (Boolean) -> Unit, - updateClearInputAfterEquals: (Boolean) -> Unit, updateRpnMode: (Boolean) -> Unit, ) { UnittoScreenWithLargeTopBar( @@ -104,14 +101,6 @@ private fun CalculatorSettingsScreen( switchState = state.partialHistoryView, onSwitchChange = updatePartialHistoryView ) - - UnittoListItem( - headlineText = stringResource(R.string.settings_clear_input), - icon = Icons.AutoMirrored.Filled.Backspace, - supportingText = stringResource(R.string.settings_clear_input_support), - switchState = state.clearInputAfterEquals, - onSwitchChange = updateClearInputAfterEquals - ) } } @@ -128,11 +117,9 @@ private fun PreviewCalculatorSettingsScreenStandard() { CalculatorSettingsScreen( uiState = CalculatorSettingsUIState.Standard( partialHistoryView = true, - clearInputAfterEquals = false ), navigateUpAction = {}, updatePartialHistoryView = {}, - updateClearInputAfterEquals = {}, updateRpnMode = {} ) } @@ -144,7 +131,6 @@ private fun PreviewCalculatorSettingsScreenRPN() { uiState = CalculatorSettingsUIState.RPN, navigateUpAction = {}, updatePartialHistoryView = {}, - updateClearInputAfterEquals = {}, updateRpnMode = {} ) } diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/calculator/CalculatorSettingsUIState.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/calculator/CalculatorSettingsUIState.kt index f7fa8ecf..19dfd715 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/calculator/CalculatorSettingsUIState.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/calculator/CalculatorSettingsUIState.kt @@ -25,6 +25,5 @@ internal sealed class CalculatorSettingsUIState { data class Standard( val partialHistoryView: Boolean, - val clearInputAfterEquals: Boolean, ) : CalculatorSettingsUIState() } diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/calculator/CalculatorSettingsViewModel.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/calculator/CalculatorSettingsViewModel.kt index e7ba599a..f84aad37 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/calculator/CalculatorSettingsViewModel.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/calculator/CalculatorSettingsViewModel.kt @@ -40,7 +40,6 @@ internal class CalculatorSettingsViewModel @Inject constructor( } else { CalculatorSettingsUIState.Standard( partialHistoryView = calc.partialHistoryView, - clearInputAfterEquals = calc.clearInputAfterEquals ) } } @@ -50,10 +49,6 @@ internal class CalculatorSettingsViewModel @Inject constructor( userPrefsRepository.updatePartialHistoryView(enabled) } - fun updateClearInputAfterEquals(enabled: Boolean) = viewModelScope.launch { - userPrefsRepository.updateClearInputAfterEquals(enabled) - } - fun updateRpnMode(enabled: Boolean) = viewModelScope.launch { userPrefsRepository.updateRpnMode(enabled) }