From d7ceabe9393581f700f0086dc1f4b809a2ffc2f2 Mon Sep 17 00:00:00 2001 From: Janne Mareike Koschinski <mail@justjanne.de> Date: Sun, 8 Jun 2025 16:54:30 +0200 Subject: [PATCH] chore: update dependencies --- .gitignore | 1 + .../de/chaosdorf/mete/v1/MeteApiV1Factory.kt | 2 +- app/build.gradle.kts | 2 + .../chaosdorf/meteroid/MeteroidApplication.kt | 42 ++++++------ .../kotlin/de/chaosdorf/meteroid/ui/Avatar.kt | 2 +- .../chaosdorf/meteroid/ui/MeteroidRouter.kt | 1 - .../chaosdorf/meteroid/ui/MeteroidScaffold.kt | 36 +++++++--- .../ui/home/purchase/PurchaseDrinkTile.kt | 2 +- .../TransactionHistoryItem.kt | 2 +- .../meteroid/ui/home/wrapped/WrappedScreen.kt | 2 +- .../meteroid/ui/servers/AddServerScreen.kt | 2 +- .../meteroid/util/RememberAvatarPainter.kt | 4 +- build.gradle.kts | 1 + .../kotlin/AndroidApplicationConvention.kt | 4 +- .../main/kotlin/AndroidLibraryConvention.kt | 2 +- .../main/kotlin/KotlinAndroidConvention.kt | 4 -- .../src/main/kotlin/KotlinConvention.kt | 4 -- gradle/libs.versions.toml | 68 ++++++++++--------- 18 files changed, 99 insertions(+), 82 deletions(-) diff --git a/.gitignore b/.gitignore index 49ca4c2..e4641da 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ *.iml .gradle +.kotlin /local.properties /signing.properties /.idea/* diff --git a/api/src/main/kotlin/de/chaosdorf/mete/v1/MeteApiV1Factory.kt b/api/src/main/kotlin/de/chaosdorf/mete/v1/MeteApiV1Factory.kt index 3fdc434..af56fc8 100644 --- a/api/src/main/kotlin/de/chaosdorf/mete/v1/MeteApiV1Factory.kt +++ b/api/src/main/kotlin/de/chaosdorf/mete/v1/MeteApiV1Factory.kt @@ -24,7 +24,6 @@ package de.chaosdorf.mete.v1 -import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory import de.chaosdorf.mete.model.MeteApi import de.chaosdorf.mete.model.MeteApiFactory import de.chaosdorf.mete.util.Code204Interceptor @@ -32,6 +31,7 @@ import kotlinx.serialization.json.Json import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient import retrofit2.Retrofit +import retrofit2.converter.kotlinx.serialization.asConverterFactory import retrofit2.create object MeteApiV1Factory : MeteApiFactory { diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 93f0374..86f5a5a 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -24,6 +24,7 @@ plugins { alias(libs.plugins.kotlin.serialization) alias(libs.plugins.kotlin.ksp) alias(libs.plugins.dagger.hilt) + alias(libs.plugins.compose.compiler) } android { @@ -91,6 +92,7 @@ dependencies { implementation(libs.okhttp) implementation(libs.coil.compose) + implementation(libs.coil.okhttp) implementation(libs.hilt.navigation) implementation(libs.hilt.android) diff --git a/app/src/main/kotlin/de/chaosdorf/meteroid/MeteroidApplication.kt b/app/src/main/kotlin/de/chaosdorf/meteroid/MeteroidApplication.kt index 6ae713b..589c0d6 100644 --- a/app/src/main/kotlin/de/chaosdorf/meteroid/MeteroidApplication.kt +++ b/app/src/main/kotlin/de/chaosdorf/meteroid/MeteroidApplication.kt @@ -21,30 +21,32 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ - package de.chaosdorf.meteroid import android.app.Application -import coil.ImageLoader -import coil.ImageLoaderFactory -import coil.disk.DiskCache -import coil.memory.MemoryCache +import coil3.ImageLoader +import coil3.PlatformContext +import coil3.SingletonImageLoader +import coil3.disk.DiskCache +import coil3.disk.directory +import coil3.memory.MemoryCache import dagger.hilt.android.HiltAndroidApp @HiltAndroidApp -class MeteroidApplication : Application(), ImageLoaderFactory { - override fun newImageLoader() = ImageLoader.Builder(applicationContext) - .memoryCache { - MemoryCache.Builder(applicationContext) - .maxSizePercent(0.25) - .build() - } - .diskCache { - DiskCache.Builder() - .directory(applicationContext.cacheDir.resolve("image_cache")) - .maxSizePercent(0.02) - .build() - } - .respectCacheHeaders(false) - .build() +class MeteroidApplication : Application(), SingletonImageLoader.Factory { + override fun newImageLoader(context: PlatformContext): ImageLoader { + return ImageLoader.Builder(context) + .memoryCache { + MemoryCache.Builder() + .maxSizePercent(context, 0.25) + .build() + } + .diskCache { + DiskCache.Builder() + .directory(applicationContext.cacheDir.resolve("image_cache")) + .maxSizePercent(0.02) + .build() + } + .build() + } } diff --git a/app/src/main/kotlin/de/chaosdorf/meteroid/ui/Avatar.kt b/app/src/main/kotlin/de/chaosdorf/meteroid/ui/Avatar.kt index eb711a2..c0861ac 100644 --- a/app/src/main/kotlin/de/chaosdorf/meteroid/ui/Avatar.kt +++ b/app/src/main/kotlin/de/chaosdorf/meteroid/ui/Avatar.kt @@ -40,7 +40,7 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import coil.compose.AsyncImage +import coil3.compose.AsyncImage import de.chaosdorf.meteroid.theme.icons.MeteroidIcons import de.chaosdorf.meteroid.theme.icons.filled.WaterFull diff --git a/app/src/main/kotlin/de/chaosdorf/meteroid/ui/MeteroidRouter.kt b/app/src/main/kotlin/de/chaosdorf/meteroid/ui/MeteroidRouter.kt index 7b74224..45bba3a 100644 --- a/app/src/main/kotlin/de/chaosdorf/meteroid/ui/MeteroidRouter.kt +++ b/app/src/main/kotlin/de/chaosdorf/meteroid/ui/MeteroidRouter.kt @@ -81,7 +81,6 @@ fun MeteroidRouter( exitTransition = { fadeOut() }, popEnterTransition = { fadeIn() }, popExitTransition = { fadeOut() }, - modifier = Modifier.padding(paddingValues) ) { composable( MeteroidScreen.Home.Purchase.route, arguments = listOf( diff --git a/app/src/main/kotlin/de/chaosdorf/meteroid/ui/MeteroidScaffold.kt b/app/src/main/kotlin/de/chaosdorf/meteroid/ui/MeteroidScaffold.kt index 2867b47..19dbfe5 100644 --- a/app/src/main/kotlin/de/chaosdorf/meteroid/ui/MeteroidScaffold.kt +++ b/app/src/main/kotlin/de/chaosdorf/meteroid/ui/MeteroidScaffold.kt @@ -24,10 +24,13 @@ package de.chaosdorf.meteroid.ui -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.* +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold +import androidx.compose.material3.Surface import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier import androidx.navigation.NavController import de.chaosdorf.meteroid.ui.home.MeteroidBottomBar import de.chaosdorf.meteroid.ui.navigation.MeteroidNavigation @@ -40,12 +43,27 @@ fun MeteroidScaffold( viewModel: NavigationViewModel, content: @Composable (PaddingValues) -> Unit ) { - Box { - Scaffold( - bottomBar = { MeteroidBottomBar(navController, viewModel) }, - content = content - ) - NavigationScrim(viewModel) - MeteroidNavigation(navController, viewModel) + Column { + Surface( + modifier = Modifier + .fillMaxWidth() + .windowInsetsTopHeight(WindowInsets.statusBars), + color = MaterialTheme.colorScheme.scrim.copy(alpha = .38f), + ) {} + Box(Modifier.weight(1f)) { + Scaffold( + bottomBar = { MeteroidBottomBar(navController, viewModel) }, + content = content + ) + Surface( + modifier = Modifier + .align(Alignment.BottomCenter) + .fillMaxWidth() + .windowInsetsBottomHeight(WindowInsets.navigationBars), + color = MaterialTheme.colorScheme.scrim.copy(alpha = .38f), + ) {} + NavigationScrim(viewModel) + MeteroidNavigation(navController, viewModel) + } } } diff --git a/app/src/main/kotlin/de/chaosdorf/meteroid/ui/home/purchase/PurchaseDrinkTile.kt b/app/src/main/kotlin/de/chaosdorf/meteroid/ui/home/purchase/PurchaseDrinkTile.kt index 274c9b1..d3ca74c 100644 --- a/app/src/main/kotlin/de/chaosdorf/meteroid/ui/home/purchase/PurchaseDrinkTile.kt +++ b/app/src/main/kotlin/de/chaosdorf/meteroid/ui/home/purchase/PurchaseDrinkTile.kt @@ -42,7 +42,7 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import coil.compose.rememberAsyncImagePainter +import coil3.compose.rememberAsyncImagePainter import de.chaosdorf.meteroid.model.Drink import de.chaosdorf.meteroid.theme.secondaryGradient import de.chaosdorf.meteroid.ui.home.PriceBadge diff --git a/app/src/main/kotlin/de/chaosdorf/meteroid/ui/home/transactionhistory/TransactionHistoryItem.kt b/app/src/main/kotlin/de/chaosdorf/meteroid/ui/home/transactionhistory/TransactionHistoryItem.kt index 71d5353..968d8fc 100644 --- a/app/src/main/kotlin/de/chaosdorf/meteroid/ui/home/transactionhistory/TransactionHistoryItem.kt +++ b/app/src/main/kotlin/de/chaosdorf/meteroid/ui/home/transactionhistory/TransactionHistoryItem.kt @@ -41,7 +41,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.unit.dp -import coil.compose.rememberAsyncImagePainter +import coil3.compose.rememberAsyncImagePainter import de.chaosdorf.meteroid.model.Drink import de.chaosdorf.meteroid.model.Transaction import de.chaosdorf.meteroid.theme.secondaryGradient diff --git a/app/src/main/kotlin/de/chaosdorf/meteroid/ui/home/wrapped/WrappedScreen.kt b/app/src/main/kotlin/de/chaosdorf/meteroid/ui/home/wrapped/WrappedScreen.kt index c08ee4d..9aaa2b4 100644 --- a/app/src/main/kotlin/de/chaosdorf/meteroid/ui/home/wrapped/WrappedScreen.kt +++ b/app/src/main/kotlin/de/chaosdorf/meteroid/ui/home/wrapped/WrappedScreen.kt @@ -41,7 +41,7 @@ import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp -import coil.compose.rememberAsyncImagePainter +import coil3.compose.rememberAsyncImagePainter import de.chaosdorf.meteroid.R import java.time.format.TextStyle diff --git a/app/src/main/kotlin/de/chaosdorf/meteroid/ui/servers/AddServerScreen.kt b/app/src/main/kotlin/de/chaosdorf/meteroid/ui/servers/AddServerScreen.kt index a629d0b..46489c8 100644 --- a/app/src/main/kotlin/de/chaosdorf/meteroid/ui/servers/AddServerScreen.kt +++ b/app/src/main/kotlin/de/chaosdorf/meteroid/ui/servers/AddServerScreen.kt @@ -38,7 +38,7 @@ import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.navigation.NavController -import coil.compose.AsyncImage +import coil3.compose.AsyncImage import kotlinx.coroutines.launch import okhttp3.HttpUrl.Companion.toHttpUrl diff --git a/app/src/main/kotlin/de/chaosdorf/meteroid/util/RememberAvatarPainter.kt b/app/src/main/kotlin/de/chaosdorf/meteroid/util/RememberAvatarPainter.kt index 463fdf4..9b56e25 100644 --- a/app/src/main/kotlin/de/chaosdorf/meteroid/util/RememberAvatarPainter.kt +++ b/app/src/main/kotlin/de/chaosdorf/meteroid/util/RememberAvatarPainter.kt @@ -31,8 +31,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.RenderVectorGroup import androidx.compose.ui.graphics.vector.rememberVectorPainter import androidx.compose.ui.unit.Dp -import coil.compose.AsyncImagePainter -import coil.compose.rememberAsyncImagePainter +import coil3.compose.AsyncImagePainter +import coil3.compose.rememberAsyncImagePainter @Composable fun rememberAvatarPainter(url: String?, iconWidth: Dp, iconHeight: Dp, iconTint: Color): AsyncImagePainter { diff --git a/build.gradle.kts b/build.gradle.kts index 51555c9..6dfc7d1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,4 +13,5 @@ plugins { alias(libs.plugins.kotlin.serialization) apply false alias(libs.plugins.kotlin.ksp) apply false alias(libs.plugins.dagger.hilt) apply false + alias(libs.plugins.compose.compiler) apply false } diff --git a/gradle/convention/src/main/kotlin/AndroidApplicationConvention.kt b/gradle/convention/src/main/kotlin/AndroidApplicationConvention.kt index 17c95bd..3f2dd47 100644 --- a/gradle/convention/src/main/kotlin/AndroidApplicationConvention.kt +++ b/gradle/convention/src/main/kotlin/AndroidApplicationConvention.kt @@ -16,11 +16,11 @@ class AndroidApplicationConvention : Plugin<Project> { } extensions.configure<ApplicationExtension> { - compileSdk = 34 + compileSdk = 35 defaultConfig { minSdk = 21 - targetSdk = 34 + targetSdk = 35 applicationId = "${rootProject.group}.${rootProject.name.lowercase(Locale.ROOT)}" versionCode = cmd("git", "rev-list", "--count", "HEAD")?.toIntOrNull() ?: 1 diff --git a/gradle/convention/src/main/kotlin/AndroidLibraryConvention.kt b/gradle/convention/src/main/kotlin/AndroidLibraryConvention.kt index ead4e60..0dd1383 100644 --- a/gradle/convention/src/main/kotlin/AndroidLibraryConvention.kt +++ b/gradle/convention/src/main/kotlin/AndroidLibraryConvention.kt @@ -12,7 +12,7 @@ class AndroidLibraryConvention : Plugin<Project> { } extensions.configure<LibraryExtension> { - compileSdk = 34 + compileSdk = 35 defaultConfig { minSdk = 21 diff --git a/gradle/convention/src/main/kotlin/KotlinAndroidConvention.kt b/gradle/convention/src/main/kotlin/KotlinAndroidConvention.kt index dbbe81b..ffb1526 100644 --- a/gradle/convention/src/main/kotlin/KotlinAndroidConvention.kt +++ b/gradle/convention/src/main/kotlin/KotlinAndroidConvention.kt @@ -21,10 +21,6 @@ class KotlinAndroidConvention : Plugin<Project> { kotlinOptions { freeCompilerArgs = freeCompilerArgs + listOf( "-opt-in=kotlin.RequiresOptIn", - // Enable experimental coroutines APIs, including Flow - "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", - "-opt-in=kotlinx.coroutines.FlowPreview", - "-opt-in=androidx.compose.material3.ExperimentalMaterial3Api", "-opt-in=kotlin.ExperimentalUnsignedTypes", ) diff --git a/gradle/convention/src/main/kotlin/KotlinConvention.kt b/gradle/convention/src/main/kotlin/KotlinConvention.kt index ce81fe9..5a48761 100644 --- a/gradle/convention/src/main/kotlin/KotlinConvention.kt +++ b/gradle/convention/src/main/kotlin/KotlinConvention.kt @@ -18,10 +18,6 @@ class KotlinConvention : Plugin<Project> { extensions.configure<KotlinJvmProjectExtension> { compilerOptions.freeCompilerArgs.addAll( "-opt-in=kotlin.RequiresOptIn", - // Enable experimental coroutines APIs, including Flow - "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", - "-opt-in=kotlinx.coroutines.FlowPreview", - "-opt-in=kotlin.Experimental", "-opt-in=kotlin.ExperimentalUnsignedTypes", ) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b20ab82..a32d359 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,24 +1,30 @@ [versions] -androidGradlePlugin = "8.1.4" -androidx-activity = "1.8.1" -androidx-appcompat = "1.6.1" -androidx-compose = "1.6.0-beta02" -androidx-compose-compiler = "1.5.5" -androidx-compose-material3 = "1.2.0-alpha12" -androidx-compose-runtimetracing = "1.0.0-beta01" -androidx-datastore = "1.0.0" -androidx-hilt = "1.1.0" -androidx-navigation = "2.7.5" -androidx-room = "2.6.1" -coil = "2.4.0" -dagger-hilt = "2.48.1" -desugar-jdk = "2.0.4" -kotlin = "1.9.20" -kotlin-ksp = "1.9.20-1.0.14" -kotlinxCoroutines = "1.7.1" -kotlinxDatetime = "0.4.0" -kotlinxSerializationJson = "1.5.1" -junit = "5.10.0" +kotlin = "2.1.21" +kotlin-ksp = "2.1.21-2.0.1" +kotlinxCoroutines = "1.10.2" +kotlinxDatetime = "0.6.2" +kotlinxSerializationJson = "1.8.1" + +androidGradlePlugin = "8.10.0" +androidx-activity = "1.10.1" +androidx-appcompat = "1.7.1" +androidx-compose = "1.8.2" +androidx-compose-compiler = "1.5.15" +androidx-datastore = "1.1.7" +androidx-navigation = "2.9.0" +androidx-room = "2.7.1" +androidx-splashscreen = "1.0.1" +androidx-material3 = "1.3.2" +androidx-material-icons = "1.7.8" + +dagger-hilt = "2.56.2" +androidx-hilt = "1.2.0" + +coil = "3.2.0" +desugar-jdk = "2.1.5" +junit = "5.13.1" +okhttp = "4.12.0" +retrofit = "3.0.0" [libraries] androidx-activity = { module = "androidx.activity:activity-ktx", version.ref = "androidx-activity" } @@ -30,20 +36,14 @@ androidx-appcompat-resources = { module = "androidx.appcompat:appcompat-resource androidx-compose-compiler = { module = "androidx.compose.compiler:compiler", version.ref = "androidx-compose-compiler" } androidx-compose-animation = { group = "androidx.compose.animation", name = "animation", version.ref = "androidx-compose" } androidx-compose-foundation = { group = "androidx.compose.foundation", name = "foundation", version.ref = "androidx-compose" } -androidx-compose-foundation-layout = { group = "androidx.compose.foundation", name = "foundation-layout", version.ref = "androidx-compose" } -androidx-compose-material-icons = { group = "androidx.compose.material", name = "material-icons-extended", version = "androidx-compose" } -androidx-compose-material = { group = "androidx.compose.material3", name = "material3", version.ref = "androidx-compose-material3" } -androidx-compose-material-windowSizeClass = { group = "androidx.compose.material3", name = "material3-window-size-class", version.ref = "androidx-compose-material3" } +androidx-compose-material-icons = { group = "androidx.compose.material", name = "material-icons-extended", version.ref = "androidx-material-icons" } +androidx-compose-material = { group = "androidx.compose.material3", name = "material3", version.ref = "androidx-material3" } androidx-compose-runtime = { group = "androidx.compose.runtime", name = "runtime", version.ref = "androidx-compose" } -androidx-compose-runtime-livedata = { group = "androidx.compose.runtime", name = "runtime-livedata", version.ref = "androidx-compose" } -androidx-compose-runtime-tracing = { group = "androidx.compose.runtime", name = "runtime-tracing", version.ref = "androidx-compose-runtimetracing" } androidx-compose-ui-test = { group = "androidx.compose.ui", name = "ui-test", version.ref = "androidx-compose" } -androidx-compose-ui-testManifest = { group = "androidx.compose.ui", name = "ui-test-manifest", version.ref = "androidx-compose" } androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling", version.ref = "androidx-compose" } androidx-compose-ui-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview", version.ref = "androidx-compose" } -androidx-compose-ui-util = { group = "androidx.compose.ui", name = "ui-util", version.ref = "androidx-compose" } -androidx-splashscreen = { module = "androidx.core:core-splashscreen", version = "1.0.1" } +androidx-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "androidx-splashscreen" } androidx-datastore-preferences = { module = "androidx.datastore:datastore-preferences", version.ref = "androidx-datastore" } @@ -52,14 +52,15 @@ androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "androidx-room" } androidx-room-paging = { module = "androidx.room:room-paging", version.ref = "androidx-room" } -coil-compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" } +coil-compose = { module = "io.coil-kt.coil3:coil-compose", version.ref = "coil" } +coil-okhttp = { module = "io.coil-kt.coil3:coil-network-okhttp", version.ref = "coil" } hilt-compiler = { module = "com.google.dagger:hilt-android-compiler", version.ref = "dagger-hilt" } hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "dagger-hilt" } hilt-navigation = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "androidx-hilt" } -okhttp = { module = "com.squareup.okhttp3:okhttp", version = "4.12.0" } -retrofit-core = { module = "com.squareup.retrofit2:retrofit", version = "2.9.0" } -retrofit-converter-kotlinx = { module = "com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter", version = "1.0.0" } +okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } +retrofit-core = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" } +retrofit-converter-kotlinx = { module = "com.squareup.retrofit2:converter-kotlinx-serialization", version.ref = "retrofit" } androidx-navigation-compose = { group = "androidx.navigation", name = "navigation-compose", version.ref = "androidx-navigation" } @@ -89,3 +90,4 @@ dagger-hilt = { id = "com.google.dagger.hilt.android", version.ref = "dagger-hil kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } kotlin-ksp = { id = "com.google.devtools.ksp", version.ref = "kotlin-ksp" } +compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } -- GitLab