mirror of
https://github.com/Myzel394/NumberHub.git
synced 2025-06-18 16:25:27 +02:00
Bump and clear
This commit is contained in:
parent
7fc6cea761
commit
7c38a60788
@ -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")
|
||||
|
@ -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 {
|
||||
|
||||
/**
|
||||
|
@ -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
|
||||
)
|
||||
}
|
||||
|
@ -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")
|
||||
|
@ -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<String> = 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 }
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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
|
||||
|
||||
/**
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
@ -1,3 +1,4 @@
|
||||
@Suppress("UnstableApiUsage")
|
||||
dependencyResolutionManagement {
|
||||
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
|
||||
repositories {
|
||||
|
Loading…
x
Reference in New Issue
Block a user