lib updates

This commit is contained in:
2025-03-30 03:47:44 +03:00
parent 79dddec48b
commit 25da43cfba
9 changed files with 56 additions and 81 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
FROM gradle:8.4.0-jdk17 AS builder FROM gradle:8.4.0-jdk21 AS builder
COPY --chown=gradle:gradle . /home/gradle/src COPY --chown=gradle:gradle . /home/gradle/src
WORKDIR /home/gradle/src WORKDIR /home/gradle/src
+28 -51
View File
@@ -1,10 +1,7 @@
import com.android.build.api.dsl.ManagedVirtualDevice
import org.jetbrains.compose.ExperimentalComposeLibrary import org.jetbrains.compose.ExperimentalComposeLibrary
import org.jetbrains.compose.desktop.application.dsl.TargetFormat import org.jetbrains.compose.desktop.application.dsl.TargetFormat
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetTree
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
import java.util.* import java.util.*
@@ -17,9 +14,28 @@ plugins {
} }
kotlin { kotlin {
androidTarget {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
}
}
listOf(
iosX64(),
iosArm64(),
iosSimulatorArm64()
).forEach { iosTarget ->
iosTarget.binaries.framework {
baseName = "ComposeApp"
isStatic = true
}
}
jvm()
@OptIn(ExperimentalWasmDsl::class) @OptIn(ExperimentalWasmDsl::class)
wasmJs { wasmJs {
moduleName = "composeApp" outputModuleName = "composeApp"
browser { browser {
val rootDirPath = project.rootDir.path val rootDirPath = project.rootDir.path
val projectDirPath = project.projectDir.path val projectDirPath = project.projectDir.path
@@ -37,34 +53,6 @@ kotlin {
binaries.executable() binaries.executable()
} }
androidTarget {
compilations.all {
compileTaskProvider {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_17)
//https://jakewharton.com/gradle-toolchains-are-rarely-a-good-idea/#what-do-i-do
freeCompilerArgs.add("-Xjdk-release=${JavaVersion.VERSION_17}")
}
}
}
//https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-test.html
@OptIn(ExperimentalKotlinGradlePluginApi::class)
instrumentedTestVariant.sourceSetTree.set(KotlinSourceSetTree.test)
}
jvm()
listOf(
iosX64(),
iosArm64(),
iosSimulatorArm64()
).forEach {
it.binaries.framework {
baseName = "ComposeApp"
isStatic = true
}
}
sourceSets { sourceSets {
commonMain.dependencies { commonMain.dependencies {
implementation(compose.runtime) implementation(compose.runtime)
@@ -72,7 +60,6 @@ kotlin {
implementation(compose.material3) implementation(compose.material3)
implementation(compose.materialIconsExtended) implementation(compose.materialIconsExtended)
implementation(compose.components.resources) implementation(compose.components.resources)
implementation(compose.components.uiToolingPreview)
implementation(libs.voyager.navigator) implementation(libs.voyager.navigator)
implementation(libs.voyager.transitions) implementation(libs.voyager.transitions)
implementation(libs.coil) implementation(libs.coil)
@@ -140,20 +127,14 @@ android {
applicationId = "dev.meloda.overseerr" applicationId = "dev.meloda.overseerr"
versionCode = 1 versionCode = 1
versionName = "1.0.0" versionName = "1.0.0"
}
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" packaging {
} resources {
//https://developer.android.com/studio/test/gradle-managed-devices excludes += "/META-INF/{AL2.0,LGPL2.1}"
@Suppress("UnstableApiUsage")
testOptions {
managedDevices.devices {
maybeCreate<ManagedVirtualDevice>("pixel5").apply {
device = "Pixel 5"
apiLevel = 34
systemImageSource = "aosp"
}
} }
} }
signingConfigs { signingConfigs {
create("release") { create("release") {
val keystoreProperties = Properties() val keystoreProperties = Properties()
@@ -188,19 +169,15 @@ android {
} }
} }
compileOptions { compileOptions {
sourceCompatibility = JavaVersion.VERSION_17 sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_21
} }
} }
//https://developer.android.com/develop/ui/compose/testing#setup
dependencies { dependencies {
androidTestImplementation(libs.androidx.uitest.junit4) androidTestImplementation(libs.androidx.uitest.junit4)
debugImplementation(libs.androidx.uitest.testManifest) debugImplementation(libs.androidx.uitest.testManifest)
//temporary fix: https://youtrack.jetbrains.com/issue/CMP-5864 debugImplementation(compose.uiTooling)
androidTestImplementation("androidx.test:monitor") {
version { strictly("1.6.1") }
}
} }
compose.desktop { compose.desktop {
@@ -3,11 +3,11 @@ package dev.meloda.overseerr.settings.model
import dev.meloda.overseerr.appDir import dev.meloda.overseerr.appDir
import io.github.xxfast.kstore.KStore import io.github.xxfast.kstore.KStore
import io.github.xxfast.kstore.file.storeOf import io.github.xxfast.kstore.file.storeOf
import okio.Path.Companion.toPath import kotlinx.io.files.Path
actual class SettingsStoreProvider actual constructor() { actual class SettingsStoreProvider actual constructor() {
actual fun provideStore(): KStore<AppSettings> { actual fun provideStore(): KStore<AppSettings> {
return storeOf(file = "$appDir/app_settings.json".toPath()) return storeOf(file = Path("$appDir/app_settings.json"))
} }
} }
@@ -22,9 +22,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
import cafe.adriel.voyager.core.screen.Screen import cafe.adriel.voyager.core.screen.Screen
import cafe.adriel.voyager.navigator.LocalNavigator import cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.navigator.currentOrThrow import cafe.adriel.voyager.navigator.currentOrThrow
import dev.chrisbanes.haze.HazeState import dev.chrisbanes.haze.*
import dev.chrisbanes.haze.haze
import dev.chrisbanes.haze.hazeChild
import dev.chrisbanes.haze.materials.ExperimentalHazeMaterialsApi import dev.chrisbanes.haze.materials.ExperimentalHazeMaterialsApi
import dev.chrisbanes.haze.materials.HazeMaterials import dev.chrisbanes.haze.materials.HazeMaterials
import dev.meloda.overseerr.screens.requests.RequestsViewModel import dev.meloda.overseerr.screens.requests.RequestsViewModel
@@ -78,7 +76,7 @@ class RequestsScreen : Screen {
}, },
colors = TopAppBarDefaults.topAppBarColors(containerColor = Color.Transparent), colors = TopAppBarDefaults.topAppBarColors(containerColor = Color.Transparent),
modifier = Modifier modifier = Modifier
.hazeChild( .hazeEffect(
state = hazeState, state = hazeState,
style = hazeStyle style = hazeStyle
).fillMaxWidth(), ).fillMaxWidth(),
@@ -106,7 +104,7 @@ class RequestsScreen : Screen {
LazyColumn( LazyColumn(
modifier = Modifier modifier = Modifier
.fillMaxSize() .fillMaxSize()
.haze(state = hazeState) .hazeSource(state = hazeState)
.pullToRefresh( .pullToRefresh(
isRefreshing = screenState.isLoading, isRefreshing = screenState.isLoading,
state = refreshState, state = refreshState,
@@ -159,7 +157,7 @@ class RequestsScreen : Screen {
Box( Box(
modifier = Modifier modifier = Modifier
.align(Alignment.BottomCenter) .align(Alignment.BottomCenter)
.hazeChild( .hazeEffect(
state = hazeState, state = hazeState,
style = hazeStyle style = hazeStyle
) )
@@ -3,10 +3,10 @@ package dev.meloda.overseerr.settings.model
import dev.meloda.overseerr.appDir import dev.meloda.overseerr.appDir
import io.github.xxfast.kstore.KStore import io.github.xxfast.kstore.KStore
import io.github.xxfast.kstore.file.storeOf import io.github.xxfast.kstore.file.storeOf
import okio.Path.Companion.toPath import kotlinx.io.files.Path
actual class SettingsStoreProvider actual constructor() { actual class SettingsStoreProvider actual constructor() {
actual fun provideStore(): KStore<AppSettings> { actual fun provideStore(): KStore<AppSettings> {
return storeOf(file = "$appDir/app_settings.json".toPath()) return storeOf(file = Path("$appDir/app_settings.json"))
} }
} }
@@ -3,10 +3,10 @@ package dev.meloda.overseerr.settings.model
import dev.meloda.overseerr.appDir import dev.meloda.overseerr.appDir
import io.github.xxfast.kstore.KStore import io.github.xxfast.kstore.KStore
import io.github.xxfast.kstore.file.storeOf import io.github.xxfast.kstore.file.storeOf
import okio.Path.Companion.toPath import kotlinx.io.files.Path
actual class SettingsStoreProvider actual constructor() { actual class SettingsStoreProvider actual constructor() {
actual fun provideStore(): KStore<AppSettings> { actual fun provideStore(): KStore<AppSettings> {
return storeOf(file = "$appDir/app_settings.json".toPath()) return storeOf(file = Path("$appDir/app_settings.json"))
} }
} }
+1 -1
View File
@@ -27,7 +27,7 @@ fun main() = application {
state = rememberWindowState(width = 800.dp, height = 600.dp), state = rememberWindowState(width = 800.dp, height = 600.dp),
onCloseRequest = ::exitApplication onCloseRequest = ::exitApplication
) { ) {
window.minimumSize = Dimension(350, 600) window.minimumSize = Dimension(360, 600)
App() App()
} }
} }
+15 -15
View File
@@ -1,31 +1,31 @@
[versions] [versions]
kotlin = "2.0.20-RC" kotlin = "2.1.20"
compose = "1.7.0-alpha02" compose = "1.8.0-beta01"
agp = "8.2.0" agp = "8.7.3"
androidx-lifecycle = "2.8.4" androidx-lifecycle = "2.8.4"
androidx-activityCompose = "1.9.1" androidx-activity-compose = "1.10.1"
androidx-uiTest = "1.6.8" androidx-uitest = "1.7.8"
voyager = "1.1.0-beta02" voyager = "1.1.0-beta03"
coil = "3.0.4" coil = "3.0.4"
kotlinx-coroutines = "1.9.0" kotlinx-coroutines = "1.10.1"
ktor = "3.0.0-beta-2" ktor = "3.0.1"
kotlinx-serialization = "1.7.1" kotlinx-serialization = "1.8.0"
koin = "4.0.0-RC1" koin = "4.0.3"
viewmodel-compose = "2.8.0" viewmodel-compose = "2.8.3"
haze = "0.7.3" haze = "1.5.2"
kstore = "0.9.1" kstore = "0.9.1"
appdirs = "1.2.2" appdirs = "1.2.2"
napier = "2.7.1" napier = "2.7.1"
[libraries] [libraries]
androidx-activityCompose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activityCompose" } androidx-activityCompose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" }
androidx-lifecycle-viewmodel-compose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "viewmodel-compose" } androidx-lifecycle-viewmodel-compose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "viewmodel-compose" }
androidx-lifecycle-viewmodel = { group = "org.jetbrains.androidx.lifecycle", name = "lifecycle-viewmodel", version.ref = "androidx-lifecycle" } androidx-lifecycle-viewmodel = { group = "org.jetbrains.androidx.lifecycle", name = "lifecycle-viewmodel", version.ref = "androidx-lifecycle" }
androidx-lifecycle-runtime-compose = { group = "org.jetbrains.androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "androidx-lifecycle" } androidx-lifecycle-runtime-compose = { group = "org.jetbrains.androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "androidx-lifecycle" }
androidx-uitest-testManifest = { module = "androidx.compose.ui:ui-test-manifest", version.ref = "androidx-uiTest" } androidx-uitest-testManifest = { module = "androidx.compose.ui:ui-test-manifest", version.ref = "androidx-uitest" }
androidx-uitest-junit4 = { module = "androidx.compose.ui:ui-test-junit4", version.ref = "androidx-uiTest" } androidx-uitest-junit4 = { module = "androidx.compose.ui:ui-test-junit4", version.ref = "androidx-uitest" }
voyager-navigator = { module = "cafe.adriel.voyager:voyager-navigator", version.ref = "voyager" } voyager-navigator = { module = "cafe.adriel.voyager:voyager-navigator", version.ref = "voyager" }
voyager-transitions = { module = "cafe.adriel.voyager:voyager-transitions", version.ref = "voyager" } voyager-transitions = { module = "cafe.adriel.voyager:voyager-transitions", version.ref = "voyager" }
coil = { module = "io.coil-kt.coil3:coil-compose-core", version.ref = "coil" } coil = { module = "io.coil-kt.coil3:coil-compose-core", version.ref = "coil" }
+1 -1
View File
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
networkTimeout=10000 networkTimeout=10000
validateDistributionUrl=true validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME