diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 7d242ee5..7fbeb1a2 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -90,9 +90,6 @@ android {
kotlinOptions {
jvmTarget = JavaVersion.VERSION_11.toString()
- freeCompilerArgs = freeCompilerArgs + listOf(
- "-opt-in=androidx.lifecycle.compose.ExperimentalLifecycleComposeApi"
- )
}
composeOptions {
diff --git a/build-logic/convention/src/main/java/com/sadellie/unitto/ConfigureKotlinAndroid.kt b/build-logic/convention/src/main/java/com/sadellie/unitto/ConfigureKotlinAndroid.kt
index 7ab7c66e..52c8d784 100644
--- a/build-logic/convention/src/main/java/com/sadellie/unitto/ConfigureKotlinAndroid.kt
+++ b/build-logic/convention/src/main/java/com/sadellie/unitto/ConfigureKotlinAndroid.kt
@@ -73,7 +73,6 @@ internal fun Project.configureKotlinAndroid(
"-opt-in=androidx.compose.animation.ExperimentalAnimationApi",
"-opt-in=androidx.compose.foundation.ExperimentalFoundationApi",
"-opt-in=androidx.compose.ui.unit.ExperimentalUnitApi",
- "-opt-in=androidx.lifecycle.compose.ExperimentalLifecycleComposeApi",
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
)
jvmTarget = JavaVersion.VERSION_11.toString()
diff --git a/core/base/build.gradle.kts b/core/base/build.gradle.kts
index e3c29da2..1ee78dca 100644
--- a/core/base/build.gradle.kts
+++ b/core/base/build.gradle.kts
@@ -16,8 +16,6 @@
* along with this program. If not, see .
*/
-@file:Suppress("UnstableApiUsage")
-
plugins {
id("unitto.library")
}
diff --git a/core/base/src/main/java/com/sadellie/unitto/core/base/Token.kt b/core/base/src/main/java/com/sadellie/unitto/core/base/Token.kt
index dd20a0c8..dd392aa4 100644
--- a/core/base/src/main/java/com/sadellie/unitto/core/base/Token.kt
+++ b/core/base/src/main/java/com/sadellie/unitto/core/base/Token.kt
@@ -18,6 +18,7 @@
package com.sadellie.unitto.core.base
+@Suppress("ObjectPropertyName")
object Token {
object Digit {
const val _1 = "1"
diff --git a/data/common/src/main/java/com/sadellie/unitto/data/common/FlowUtils.kt b/data/common/src/main/java/com/sadellie/unitto/data/common/FlowUtils.kt
index c668de26..d7b745d3 100644
--- a/data/common/src/main/java/com/sadellie/unitto/data/common/FlowUtils.kt
+++ b/data/common/src/main/java/com/sadellie/unitto/data/common/FlowUtils.kt
@@ -117,5 +117,42 @@ fun combine(
)
}
+@Suppress("UNCHECKED_CAST", "UNUSED")
+fun combine(
+ flow: Flow,
+ flow2: Flow,
+ flow3: Flow,
+ flow4: Flow,
+ flow5: Flow,
+ flow6: Flow,
+ flow7: Flow,
+ flow8: Flow,
+ flow9: Flow,
+ transform: suspend (T1, T2, T3, T4, T5, T6, T7, T8, T9) -> R,
+): Flow =
+ kotlinx.coroutines.flow.combine(
+ flow,
+ flow2,
+ flow3,
+ flow4,
+ flow5,
+ flow6,
+ flow7,
+ flow8,
+ flow9
+ ) { args: Array<*> ->
+ transform(
+ args[0] as T1,
+ args[1] as T2,
+ args[2] as T3,
+ args[3] as T4,
+ args[4] as T5,
+ args[5] as T6,
+ args[6] as T7,
+ args[7] as T8,
+ args[8] as T9,
+ )
+ }
+
fun Flow.stateIn(scope: CoroutineScope, initialValue: T): StateFlow =
stateIn(scope, SharingStarted.WhileSubscribed(5000L), initialValue)
diff --git a/data/evaluatto/src/test/java/io/github/sadellie/evaluatto/Helpers.kt b/data/evaluatto/src/test/java/io/github/sadellie/evaluatto/Helpers.kt
index 806c42e7..024eec3e 100644
--- a/data/evaluatto/src/test/java/io/github/sadellie/evaluatto/Helpers.kt
+++ b/data/evaluatto/src/test/java/io/github/sadellie/evaluatto/Helpers.kt
@@ -18,8 +18,8 @@
package io.github.sadellie.evaluatto
-import org.junit.jupiter.api.Assertions.assertEquals
-import org.junit.jupiter.api.Assertions.assertThrows
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertThrows
import java.math.BigDecimal
import java.math.RoundingMode
diff --git a/data/units/src/main/java/com/sadellie/unitto/data/units/UnitsRepository.kt b/data/units/src/main/java/com/sadellie/unitto/data/units/UnitsRepository.kt
index b9d953bc..d79cff95 100644
--- a/data/units/src/main/java/com/sadellie/unitto/data/units/UnitsRepository.kt
+++ b/data/units/src/main/java/com/sadellie/unitto/data/units/UnitsRepository.kt
@@ -245,7 +245,7 @@ class UnitsRepository @Inject constructor(
favoritesOnly: Boolean,
hideBrokenUnits: Boolean,
sorting: UnitsListSorting,
- shownUnitGroups: List,
+ shownUnitGroups: List = emptyList(),
): Map> {
// Leave only shown unit groups
var units: Sequence = if (unitGroup == null) {
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 2e5c9085..edc214ab 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
@@ -45,7 +45,6 @@ import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
-import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.getAndUpdate
import kotlinx.coroutines.flow.mapLatest
@@ -73,8 +72,13 @@ internal class ConverterViewModel @Inject constructor(
private val _unitFrom = MutableStateFlow(null)
private val _unitTo = MutableStateFlow(null)
- private val _leftSideUIState = MutableStateFlow(LeftSideUIState())
- private val _rightSideUIState = MutableStateFlow(RightSideUIState())
+ private val _leftQuery = MutableStateFlow(TextFieldValue())
+ private val _leftUnits = MutableStateFlow