From 7c38a60788420eedd5fbcbd24cfe9dfbc75a76af Mon Sep 17 00:00:00 2001 From: Sad Ellie Date: Sun, 20 Nov 2022 20:03:08 +0400 Subject: [PATCH] Bump and clear --- app/build.gradle.kts | 14 ++++----- .../com/sadellie/unitto/FirebaseHelper.kt | 1 + .../java/com/sadellie/unitto/MainActivity.kt | 3 +- .../data/units/remote/CurrencyUnitResponse.kt | 2 +- .../java/com/sadellie/unitto/screens/Utils.kt | 25 +++++++++------- .../unitto/screens/main/MainViewModel.kt | 29 +++++++++++++++++-- .../screens/main/components/Keyboard.kt | 20 ++++++++++++- .../screens/main/components/MyTextField.kt | 15 ++++++++-- .../screens/main/components/TopScreen.kt | 7 +++-- .../screens/second/components/SearchBar.kt | 7 ++++- build.gradle.kts | 4 +-- settings.gradle.kts | 1 + 12 files changed, 98 insertions(+), 30 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 8d12ae39..8005165b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -14,7 +14,7 @@ plugins { id("com.google.firebase.crashlytics") } -val composeVersion = "1.4.0-alpha01" +val composeVersion = "1.4.0-alpha02" // Flavor names val playStore = "playStore" @@ -127,7 +127,7 @@ android { shaders = false } composeOptions { - kotlinCompilerExtensionVersion = "1.3.0-rc01" + kotlinCompilerExtensionVersion = "1.4.0-alpha02" } packagingOptions { jniLibs.excludes.add("META-INF/licenses/**") @@ -164,9 +164,9 @@ dependencies { // Hilt and navigation implementation("androidx.hilt:hilt-navigation-compose:1.0.0") - kapt("com.google.dagger:dagger-android-processor:2.44.1") - implementation("com.google.dagger:hilt-android:2.44.1") - kapt("com.google.dagger:hilt-compiler:2.44.1") + kapt("com.google.dagger:dagger-android-processor:2.44.2") + implementation("com.google.dagger:hilt-android:2.44.2") + kapt("com.google.dagger:hilt-compiler:2.44.2") // There are a lot of icons implementation("androidx.compose.material:material-icons-extended:$composeVersion") @@ -175,10 +175,10 @@ dependencies { implementation("androidx.datastore:datastore-preferences:1.0.0") // This is for system status bar color - implementation("com.google.accompanist:accompanist-systemuicontroller:0.27.0") + implementation("com.google.accompanist:accompanist-systemuicontroller:0.27.1") // Firebase - "playStoreImplementation"(platform("com.google.firebase:firebase-bom:31.0.2")) + "playStoreImplementation"(platform("com.google.firebase:firebase-bom:31.1.0")) "playStoreImplementation"("com.google.firebase:firebase-analytics-ktx") // Crashlytics and Analytics "playStoreImplementation"("com.google.firebase:firebase-crashlytics-ktx") diff --git a/app/src/fdroid/java/com/sadellie/unitto/FirebaseHelper.kt b/app/src/fdroid/java/com/sadellie/unitto/FirebaseHelper.kt index 4c31e3bb..1d1a30e0 100644 --- a/app/src/fdroid/java/com/sadellie/unitto/FirebaseHelper.kt +++ b/app/src/fdroid/java/com/sadellie/unitto/FirebaseHelper.kt @@ -23,6 +23,7 @@ import android.content.Context /** * This class is NOT actually using firebase. Used for flavors WITHOUT Firebase dependency. */ +@Suppress("EmptyMethod") class FirebaseHelper { /** diff --git a/app/src/main/java/com/sadellie/unitto/MainActivity.kt b/app/src/main/java/com/sadellie/unitto/MainActivity.kt index a8367ac7..35779a31 100644 --- a/app/src/main/java/com/sadellie/unitto/MainActivity.kt +++ b/app/src/main/java/com/sadellie/unitto/MainActivity.kt @@ -138,8 +138,7 @@ fun UnittoApp( navigateUp = { navController.navigateUp() }, navigateToSettingsAction = { navController.navigate(UNIT_GROUPS_SCREEN) }, selectAction = { mainViewModel.changeUnitTo(it) }, - inputValue = (mainViewModel.mainFlow.value.calculatedValue - ?: mainViewModel.mainFlow.value.inputValue).toBigDecimal(), + inputValue = mainViewModel.inputValue(), unitFrom = mainViewModel.unitFrom ) } diff --git a/app/src/main/java/com/sadellie/unitto/data/units/remote/CurrencyUnitResponse.kt b/app/src/main/java/com/sadellie/unitto/data/units/remote/CurrencyUnitResponse.kt index e56c3dcd..1a006905 100644 --- a/app/src/main/java/com/sadellie/unitto/data/units/remote/CurrencyUnitResponse.kt +++ b/app/src/main/java/com/sadellie/unitto/data/units/remote/CurrencyUnitResponse.kt @@ -37,7 +37,7 @@ data class CurrencyUnitResponse( * Custom parser because API has a weird json structure (dynamic field names) */ class CurrencyAdapter { - @Suppress("UNUSED", "UNUSED_PARAMETER") + @Suppress("UNUSED", "UNUSED_PARAMETER", "SameReturnValue") @ToJson fun toJson(card: CurrencyUnitResponse): String? = null @Suppress("UNUSED", "UNCHECKED_CAST") diff --git a/app/src/main/java/com/sadellie/unitto/screens/Utils.kt b/app/src/main/java/com/sadellie/unitto/screens/Utils.kt index 1bb4a187..b0dc3b6d 100644 --- a/app/src/main/java/com/sadellie/unitto/screens/Utils.kt +++ b/app/src/main/java/com/sadellie/unitto/screens/Utils.kt @@ -21,7 +21,16 @@ package com.sadellie.unitto.screens import android.content.Context import android.content.Intent import android.net.Uri -import com.sadellie.unitto.data.* +import com.sadellie.unitto.data.KEY_COMMA +import com.sadellie.unitto.data.KEY_DIVIDE +import com.sadellie.unitto.data.KEY_DIVIDE_DISPLAY +import com.sadellie.unitto.data.KEY_DOT +import com.sadellie.unitto.data.KEY_E +import com.sadellie.unitto.data.KEY_MINUS +import com.sadellie.unitto.data.KEY_MINUS_DISPLAY +import com.sadellie.unitto.data.KEY_MULTIPLY +import com.sadellie.unitto.data.KEY_MULTIPLY_DISPLAY +import com.sadellie.unitto.data.KEY_PLUS import com.sadellie.unitto.data.preferences.OutputFormat import com.sadellie.unitto.data.preferences.Separator import com.sadellie.unitto.data.units.AbstractUnit @@ -80,10 +89,7 @@ object Formatter { // We may receive expressions // Find all numbers in that expression val allNumbers: List = input.split( - KEY_MINUS, - KEY_DIVIDE, - KEY_PLUS, - KEY_MULTIPLY + KEY_MINUS, KEY_DIVIDE, KEY_PLUS, KEY_MULTIPLY ) allNumbers.forEach { @@ -173,19 +179,18 @@ fun openLink(mContext: Context, url: String) { } /** - * Compute Levenshtein Distance. Doesn't really matter which string goes first + * Compute Levenshtein Distance between this string and [stringB]. Doesn't matter which string is + * first. * - * @param stringToCompare Second string * @return The amount of changes that are needed to transform one string into another */ -fun String.lev(stringToCompare: String): Int { +fun String.lev(stringB: String): Int { val stringA = this - val stringB = stringToCompare // Skipping computation for this cases if (stringA == stringB) return 0 if (stringA.isEmpty()) return stringB.length - // This case is basically unreal in this app, because stringToCompare is a unit name and they are never empty + // This case is basically unreal in this app, because stringB is a unit name and they are never empty if (stringB.isEmpty()) return stringA.length var cost = IntArray(stringA.length + 1) { it } diff --git a/app/src/main/java/com/sadellie/unitto/screens/main/MainViewModel.kt b/app/src/main/java/com/sadellie/unitto/screens/main/MainViewModel.kt index d03e1abf..d5354402 100644 --- a/app/src/main/java/com/sadellie/unitto/screens/main/MainViewModel.kt +++ b/app/src/main/java/com/sadellie/unitto/screens/main/MainViewModel.kt @@ -27,7 +27,22 @@ import androidx.lifecycle.viewModelScope import com.github.keelar.exprk.ExpressionException import com.github.keelar.exprk.Expressions import com.sadellie.unitto.FirebaseHelper -import com.sadellie.unitto.data.* +import com.sadellie.unitto.data.KEY_0 +import com.sadellie.unitto.data.KEY_1 +import com.sadellie.unitto.data.KEY_2 +import com.sadellie.unitto.data.KEY_3 +import com.sadellie.unitto.data.KEY_4 +import com.sadellie.unitto.data.KEY_5 +import com.sadellie.unitto.data.KEY_6 +import com.sadellie.unitto.data.KEY_7 +import com.sadellie.unitto.data.KEY_8 +import com.sadellie.unitto.data.KEY_9 +import com.sadellie.unitto.data.KEY_DIVIDE +import com.sadellie.unitto.data.KEY_DOT +import com.sadellie.unitto.data.KEY_MINUS +import com.sadellie.unitto.data.KEY_MULTIPLY +import com.sadellie.unitto.data.KEY_PLUS +import com.sadellie.unitto.data.OPERATORS import com.sadellie.unitto.data.preferences.UserPreferences import com.sadellie.unitto.data.preferences.UserPreferencesRepository import com.sadellie.unitto.data.units.AbstractUnit @@ -40,7 +55,12 @@ import com.sadellie.unitto.data.units.remote.CurrencyApi import com.sadellie.unitto.data.units.remote.CurrencyUnitResponse import com.sadellie.unitto.screens.toStringWith import dagger.hilt.android.lifecycle.HiltViewModel -import kotlinx.coroutines.flow.* +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.stateIn +import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import java.math.BigDecimal import java.math.RoundingMode @@ -367,6 +387,11 @@ class MainViewModel @Inject constructor( _inputValue.update { KEY_0 } } + /** + * Returns value to be used when converting value on the right side screen (unit selection) + */ + fun inputValue() = (mainFlow.value.calculatedValue ?: mainFlow.value.inputValue).toBigDecimal() + /** * Saves latest pair of units into datastore */ diff --git a/app/src/main/java/com/sadellie/unitto/screens/main/components/Keyboard.kt b/app/src/main/java/com/sadellie/unitto/screens/main/components/Keyboard.kt index dd8e5e4c..67f0c508 100644 --- a/app/src/main/java/com/sadellie/unitto/screens/main/components/Keyboard.kt +++ b/app/src/main/java/com/sadellie/unitto/screens/main/components/Keyboard.kt @@ -25,7 +25,25 @@ import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import com.sadellie.unitto.data.* +import com.sadellie.unitto.data.KEY_0 +import com.sadellie.unitto.data.KEY_1 +import com.sadellie.unitto.data.KEY_2 +import com.sadellie.unitto.data.KEY_3 +import com.sadellie.unitto.data.KEY_4 +import com.sadellie.unitto.data.KEY_5 +import com.sadellie.unitto.data.KEY_6 +import com.sadellie.unitto.data.KEY_7 +import com.sadellie.unitto.data.KEY_8 +import com.sadellie.unitto.data.KEY_9 +import com.sadellie.unitto.data.KEY_CLEAR +import com.sadellie.unitto.data.KEY_DIVIDE +import com.sadellie.unitto.data.KEY_DIVIDE_DISPLAY +import com.sadellie.unitto.data.KEY_DOT +import com.sadellie.unitto.data.KEY_MINUS +import com.sadellie.unitto.data.KEY_MINUS_DISPLAY +import com.sadellie.unitto.data.KEY_MULTIPLY +import com.sadellie.unitto.data.KEY_MULTIPLY_DISPLAY +import com.sadellie.unitto.data.KEY_PLUS import com.sadellie.unitto.screens.Formatter /** diff --git a/app/src/main/java/com/sadellie/unitto/screens/main/components/MyTextField.kt b/app/src/main/java/com/sadellie/unitto/screens/main/components/MyTextField.kt index 9fbed98d..4b866ac0 100644 --- a/app/src/main/java/com/sadellie/unitto/screens/main/components/MyTextField.kt +++ b/app/src/main/java/com/sadellie/unitto/screens/main/components/MyTextField.kt @@ -19,10 +19,21 @@ package com.sadellie.unitto.screens.main.components import android.widget.Toast -import androidx.compose.animation.* +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.SizeTransform +import androidx.compose.animation.expandHorizontally +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.with import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.lazy.LazyRow import androidx.compose.material.ripple.rememberRipple import androidx.compose.material3.MaterialTheme diff --git a/app/src/main/java/com/sadellie/unitto/screens/main/components/TopScreen.kt b/app/src/main/java/com/sadellie/unitto/screens/main/components/TopScreen.kt index eb13d497..5274b76d 100644 --- a/app/src/main/java/com/sadellie/unitto/screens/main/components/TopScreen.kt +++ b/app/src/main/java/com/sadellie/unitto/screens/main/components/TopScreen.kt @@ -21,7 +21,11 @@ package com.sadellie.unitto.screens.main.components import androidx.compose.animation.core.FastOutSlowInEasing import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.core.tween -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.SwapHoriz import androidx.compose.material3.Icon @@ -31,7 +35,6 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue - import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.rotate diff --git a/app/src/main/java/com/sadellie/unitto/screens/second/components/SearchBar.kt b/app/src/main/java/com/sadellie/unitto/screens/second/components/SearchBar.kt index e92758f5..fcb16a91 100644 --- a/app/src/main/java/com/sadellie/unitto/screens/second/components/SearchBar.kt +++ b/app/src/main/java/com/sadellie/unitto/screens/second/components/SearchBar.kt @@ -39,7 +39,12 @@ import androidx.compose.material.icons.filled.Favorite import androidx.compose.material.icons.filled.FavoriteBorder import androidx.compose.material.icons.filled.Search import androidx.compose.material.icons.outlined.Clear -import androidx.compose.material3.* +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.material3.TopAppBarScrollBehavior import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue diff --git a/build.gradle.kts b/build.gradle.kts index 362da9d5..49b72b30 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,8 +6,8 @@ buildscript { } dependencies { classpath("com.android.tools.build:gradle:7.3.1") - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10") - classpath("com.google.dagger:hilt-android-gradle-plugin:2.43") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.21") + classpath("com.google.dagger:hilt-android-gradle-plugin:2.44.2") // Google services classpath("com.google.gms:google-services:4.3.14") diff --git a/settings.gradle.kts b/settings.gradle.kts index 3bcdc7bb..5c6773b1 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,3 +1,4 @@ +@Suppress("UnstableApiUsage") dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories {