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