diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml
index 5815a4a6..c224ad56 100644
--- a/.idea/kotlinc.xml
+++ b/.idea/kotlinc.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 43759318..d014f7dc 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -4,6 +4,7 @@
import com.google.firebase.crashlytics.buildtools.gradle.CrashlyticsExtension
import java.io.FileInputStream
import java.util.Properties
+import org.jetbrains.kotlin.compose.compiler.gradle.ComposeFeatureFlag
plugins {
alias(libs.plugins.android.application)
@@ -118,7 +119,7 @@ android {
buildConfig = true
}
composeCompiler {
- enableStrongSkippingMode = true
+ featureFlags.set(listOf(ComposeFeatureFlag.StrongSkipping))
reportsDestination = layout.buildDirectory.dir("compose_compiler")
}
diff --git a/app/src/main/java/dev/staticvar/vlr/ui/events/EventOverviewScreen.kt b/app/src/main/java/dev/staticvar/vlr/ui/events/EventOverviewScreen.kt
index 70a98544..51937d7a 100644
--- a/app/src/main/java/dev/staticvar/vlr/ui/events/EventOverviewScreen.kt
+++ b/app/src/main/java/dev/staticvar/vlr/ui/events/EventOverviewScreen.kt
@@ -102,6 +102,7 @@ fun EventOverviewAdaptive(
val paneScaffoldDirective = calculatePaneScaffoldDirective(currentWindowAdaptiveInfo())
val navigator = rememberListDetailPaneScaffoldNavigator(scaffoldDirective = paneScaffoldDirective)
val listOfLazyListState = remember { mutableStateListOf() }
+ val coroutineScope = rememberCoroutineScope()
if (listOfLazyListState.isEmpty()) {
repeat(3) { listOfLazyListState.add(rememberLazyListState()) }
@@ -123,7 +124,9 @@ fun EventOverviewAdaptive(
BackHandler(navigator.canNavigateBack()) {
selectedItem = null
- navigator.navigateBack()
+ coroutineScope.launch {
+ navigator.navigateBack()
+ }
}
ListDetailPaneScaffold(
@@ -137,7 +140,9 @@ fun EventOverviewAdaptive(
selectedItem = selectedItem ?: " ",
action = {
selectedItem = it
- navigator.navigateTo(ListDetailPaneScaffoldRole.Detail)
+ coroutineScope.launch {
+ navigator.navigateTo(ListDetailPaneScaffoldRole.Detail)
+ }
},
)
}
diff --git a/app/src/main/java/dev/staticvar/vlr/ui/match/MatchOverviewScreen.kt b/app/src/main/java/dev/staticvar/vlr/ui/match/MatchOverviewScreen.kt
index da8df271..f15b5e48 100644
--- a/app/src/main/java/dev/staticvar/vlr/ui/match/MatchOverviewScreen.kt
+++ b/app/src/main/java/dev/staticvar/vlr/ui/match/MatchOverviewScreen.kt
@@ -108,6 +108,7 @@ fun MatchOverviewAdaptive(
val paneScaffoldDirective = calculatePaneScaffoldDirective(currentWindowAdaptiveInfo())
val navigator = rememberListDetailPaneScaffoldNavigator(scaffoldDirective = paneScaffoldDirective)
val listOfLazyListState = remember { mutableStateListOf() }
+ val coroutineScope = rememberCoroutineScope()
if (listOfLazyListState.isEmpty()) {
repeat(3) { listOfLazyListState.add(rememberLazyListState()) }
@@ -129,7 +130,9 @@ fun MatchOverviewAdaptive(
BackHandler(navigator.canNavigateBack()) {
selectedItem = null
- navigator.navigateBack()
+ coroutineScope.launch {
+ navigator.navigateBack()
+ }
}
val localLayoutDirection = LocalLayoutDirection.current
@@ -151,7 +154,9 @@ fun MatchOverviewAdaptive(
),
action = {
selectedItem = it
- navigator.navigateTo(ListDetailPaneScaffoldRole.Detail)
+ coroutineScope.launch {
+ navigator.navigateTo(ListDetailPaneScaffoldRole.Detail)
+ }
},
)
}
diff --git a/app/src/main/java/dev/staticvar/vlr/ui/news/NewsOverviewScreen.kt b/app/src/main/java/dev/staticvar/vlr/ui/news/NewsOverviewScreen.kt
index d3957a79..e31b8681 100644
--- a/app/src/main/java/dev/staticvar/vlr/ui/news/NewsOverviewScreen.kt
+++ b/app/src/main/java/dev/staticvar/vlr/ui/news/NewsOverviewScreen.kt
@@ -38,6 +38,7 @@ import androidx.compose.runtime.NonSkippableComposable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
+import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
@@ -67,6 +68,7 @@ import dev.staticvar.vlr.utils.onPass
import dev.staticvar.vlr.utils.onWaiting
import dev.staticvar.vlr.utils.readableDate
import dev.staticvar.vlr.utils.timeToEpoch
+import kotlinx.coroutines.launch
@OptIn(ExperimentalMaterial3AdaptiveApi::class)
@Composable
@@ -79,6 +81,7 @@ fun NewsScreenAdaptive(
var selectedItem: String? by rememberSaveable { mutableStateOf(null) }
val paneScaffoldDirective = calculatePaneScaffoldDirective(currentWindowAdaptiveInfo())
val navigator = rememberListDetailPaneScaffoldNavigator(scaffoldDirective = paneScaffoldDirective)
+ val coroutineScope = rememberCoroutineScope()
LaunchedEffect(navigator.currentDestination) {
if (navigator.currentDestination?.pane == ThreePaneScaffoldRole.Secondary) {
@@ -88,9 +91,12 @@ fun NewsScreenAdaptive(
BackHandler(navigator.canNavigateBack()) {
selectedItem = null
- navigator.navigateBack()
+ coroutineScope.launch {
+ navigator.navigateBack()
+ }
}
+
ListDetailPaneScaffold(
listPane = {
AnimatedPane(modifier = modifier) {
@@ -100,7 +106,9 @@ fun NewsScreenAdaptive(
contentPadding = innerPadding,
action = {
selectedItem = it
- navigator.navigateTo(ListDetailPaneScaffoldRole.Detail)
+ coroutineScope.launch {
+ navigator.navigateTo(ListDetailPaneScaffoldRole.Detail)
+ }
},
)
}
diff --git a/app/src/main/java/dev/staticvar/vlr/ui/team_rank/RankScreen.kt b/app/src/main/java/dev/staticvar/vlr/ui/team_rank/RankScreen.kt
index e018109a..ada2c75d 100644
--- a/app/src/main/java/dev/staticvar/vlr/ui/team_rank/RankScreen.kt
+++ b/app/src/main/java/dev/staticvar/vlr/ui/team_rank/RankScreen.kt
@@ -54,6 +54,7 @@ import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateListOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
+import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
@@ -100,6 +101,7 @@ import dev.staticvar.vlr.utils.Waiting
import dev.staticvar.vlr.utils.onFail
import dev.staticvar.vlr.utils.onPass
import dev.staticvar.vlr.utils.onWaiting
+import kotlinx.coroutines.launch
@OptIn(ExperimentalMaterial3AdaptiveApi::class)
@Composable
@@ -112,6 +114,7 @@ fun RankScreenAdaptive(
var selectedItem: String? by rememberSaveable { mutableStateOf(null) }
val paneScaffoldDirective = calculatePaneScaffoldDirective(currentWindowAdaptiveInfo())
val navigator = rememberListDetailPaneScaffoldNavigator(scaffoldDirective = paneScaffoldDirective)
+ val coroutineScope = rememberCoroutineScope()
LaunchedEffect(navigator.currentDestination) {
if (navigator.currentDestination?.pane == ThreePaneScaffoldRole.Secondary) {
@@ -131,7 +134,9 @@ fun RankScreenAdaptive(
BackHandler(navigator.canNavigateBack()) {
selectedItem = null
- navigator.navigateBack()
+ coroutineScope.launch {
+ navigator.navigateBack()
+ }
}
val layoutDirection = LocalLayoutDirection.current
@@ -153,7 +158,9 @@ fun RankScreenAdaptive(
),
action = {
selectedItem = it
- navigator.navigateTo(ListDetailPaneScaffoldRole.Detail)
+ coroutineScope.launch {
+ navigator.navigateTo(ListDetailPaneScaffoldRole.Detail)
+ }
},
)
}
diff --git a/designsystem/build.gradle.kts b/designsystem/build.gradle.kts
index c95fa7a8..195a9f3b 100644
--- a/designsystem/build.gradle.kts
+++ b/designsystem/build.gradle.kts
@@ -1,3 +1,5 @@
+import org.jetbrains.kotlin.compose.compiler.gradle.ComposeFeatureFlag
+
plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.kotlin.android)
@@ -32,7 +34,7 @@ android {
compose = true
}
composeCompiler {
- enableStrongSkippingMode = true
+ featureFlags.set(listOf(ComposeFeatureFlag.StrongSkipping))
reportsDestination = layout.buildDirectory.dir("compose_compiler")
}
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 02a185fa..f492405d 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,23 +1,23 @@
[versions]
-kotlin = '2.0.10'
-compose = "2024.08.00-alpha02"
+kotlin = '2.0.21'
+compose = "2024.10.00"
detektCompose = "0.4.10"
-benchmark = "1.3.0"
+benchmark = "1.3.3"
sentry = "4.6.0"
sentry-sdk = "7.9.0"
detekt = "1.23.6"
-gradle = "8.5.2"
+gradle = "8.7.1"
hilt = '2.52'
hiltAndroidGradlePlugin = "2.52"
room = "2.6.1"
-firebase = "33.2.0"
+firebase = "33.5.1"
accompanist = "0.35.0-alpha"
coroutines = "1.8.1"
ktor = "2.3.12"
-ksp = "2.0.10-1.0.24"
+ksp = "2.0.21-1.0.26"
spotless = "6.25.0"
hiltCompiler = "1.2.0"
-collections = "1.4.3"
+collections = "1.4.4"
[libraries]
@@ -31,21 +31,21 @@ room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" }
room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" }
room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" }
-compose-bom-alpha = { module = "dev.chrisbanes.compose:compose-bom", version.ref = "compose" }
+compose-bom-alpha = { module = "androidx.compose:compose-bom-alpha", version.ref = "compose" }
compose-ui = { module = "androidx.compose.ui:ui" }
compose-ui-graphics = { module = "androidx.compose.ui:ui-graphics" }
compose-text = { module = "androidx.compose.ui:ui-text-google-fonts" }
compose-material = { module = "androidx.compose.material:material" }
compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling" }
compose-runtime = { module = "androidx.compose.runtime:runtime-livedata" }
-compose-navigation = { module = "androidx.navigation:navigation-compose", version = "2.7.7" }
+compose-navigation = { module = "androidx.navigation:navigation-compose", version = "2.8.3" }
compose-m3 = { module = "androidx.compose.material3:material3" }
compose-m3-window = { module = "androidx.compose.material3:material3-window-size-class" }
compose-m3-navigation = { module = "androidx.compose.material3:material3-adaptive-navigation-suite" }
-compose-m3-adaptive-android = { module = "androidx.compose.material3.adaptive:adaptive", version = "1.1.0-alpha01" }
-compose-m3-adaptive-layout = { module = "androidx.compose.material3.adaptive:adaptive-layout", version = "1.1.0-alpha01" }
-compose-m3-adaptive-navigation = { module = "androidx.compose.material3.adaptive:adaptive-navigation", version = "1.1.0-alpha01" }
+compose-m3-adaptive-android = { module = "androidx.compose.material3.adaptive:adaptive", version = "1.1.0-alpha05" }
+compose-m3-adaptive-layout = { module = "androidx.compose.material3.adaptive:adaptive-layout", version = "1.1.0-alpha05" }
+compose-m3-adaptive-navigation = { module = "androidx.compose.material3.adaptive:adaptive-navigation", version = "1.1.0-alpha05" }
firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebase" }
firebase-messaging = { module = "com.google.firebase:firebase-messaging-ktx" }
@@ -59,10 +59,10 @@ compose-icons = { module = "androidx.compose.material:material-icons-extended" }
core = { module = "androidx.core:core-ktx", version = "1.13.1" }
app-compat = { module = "androidx.appcompat:appcompat", version = "1.7.0" }
-activity-compose = { module = "androidx.activity:activity-compose", version = "1.9.1" }
+activity-compose = { module = "androidx.activity:activity-compose", version = "1.9.3" }
-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime-compose", version = "2.8.4" }
-lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version = "2.8.4" }
+lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime-compose", version = "2.8.6" }
+lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version = "2.8.6" }
accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" }
@@ -96,17 +96,17 @@ haze-materials = { module = "dev.chrisbanes.haze:haze-materials", version = "0.9
kotlin-monad = { module = "com.michael-bull.kotlin-result:kotlin-result", version = "1.1.21" }
-glance-widget = { module = "androidx.glance:glance-appwidget", version = "1.1.0" }
-glance-widget-m3 = { module = "androidx.glance:glance-material3", version = "1.1.0" }
+glance-widget = { module = "androidx.glance:glance-appwidget", version = "1.1.1" }
+glance-widget-m3 = { module = "androidx.glance:glance-material3", version = "1.1.1" }
splashscreen = { module = "androidx.core:core-splashscreen", version = "1.0.1" }
-webkit = { module = "androidx.webkit:webkit", version = "1.11.0" }
+webkit = { module = "androidx.webkit:webkit", version = "1.12.1" }
browser = { module = "androidx.browser:browser", version = "1.8.0" }
-profileinstaller = { module = "androidx.profileinstaller:profileinstaller", version = "1.3.1" }
+profileinstaller = { module = "androidx.profileinstaller:profileinstaller", version = "1.4.1" }
work-manager = { module = "androidx.work:work-runtime", version = "2.9.1" }
jsoup = { module = "org.jsoup:jsoup", version = "1.18.1" }
immutable-collection = { module = "org.jetbrains.kotlinx:kotlinx-collections-immutable", version = "0.3.7" }
-core-desugar = { module = "com.android.tools:desugar_jdk_libs", version = "2.1.1" }
+core-desugar = { module = "com.android.tools:desugar_jdk_libs", version = "2.1.2" }
androidx-collection = { module = "androidx.collection:collection", version.ref = "collections" }
material-kolor = { module = "com.materialkolor:material-kolor", version = "1.7.0" }
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 9469a505..da8b76e1 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
#Fri Oct 28 11:10:04 IST 2022
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists