From 217bccdcfbe0b43b11f2ce498d5a5a74e0dbb4ae Mon Sep 17 00:00:00 2001 From: francoisadam Date: Tue, 28 Jan 2025 16:17:35 +0100 Subject: [PATCH 1/3] fix: conditional modifiers not working as expected (#1439) Co-authored-by: Francois ADAM Co-authored-by: spark-ui-bot --- ...fields_MultilineTextFieldScreenshot_showcase__dark.png | 4 ++-- ...ields_MultilineTextFieldScreenshot_showcase__light.png | 4 ++-- ...ltilineTextFieldScreenshot_showcase_disabled__dark.png | 4 ++-- ...tilineTextFieldScreenshot_showcase_disabled__light.png | 4 ++-- ...ieldDocScreenshot_multilineTextFieldShowcase__dark.png | 4 ++-- ...eldDocScreenshot_multilineTextFieldShowcase__light.png | 4 ++-- ...xtFieldDocScreenshot_selectTextFieldShowcase__dark.png | 4 ++-- ...tFieldDocScreenshot_selectTextFieldShowcase__light.png | 4 ++-- ...lds_TextFieldDocScreenshot_textFieldShowcase__dark.png | 4 ++-- ...ds_TextFieldDocScreenshot_textFieldShowcase__light.png | 4 ++-- ...inta.spark.textfields_TextFieldScreenshot_bigValue.png | 4 ++-- ...inta.spark.textfields_TextFieldScreenshot_disabled.png | 4 ++-- ...vinta.spark.textfields_TextFieldScreenshot_enabled.png | 4 ++-- ...ta.spark.textfields_TextFieldScreenshot_smallValue.png | 4 ++-- .../com/adevinta/spark/tools/modifiers/Conditions.kt | 8 ++++---- 15 files changed, 32 insertions(+), 32 deletions(-) diff --git a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_MultilineTextFieldScreenshot_showcase__dark.png b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_MultilineTextFieldScreenshot_showcase__dark.png index 456998c8b..d2aede36f 100644 --- a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_MultilineTextFieldScreenshot_showcase__dark.png +++ b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_MultilineTextFieldScreenshot_showcase__dark.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:949307406fdb7002475eb3c1509ac0c8c2ef2d9a72abe6057d79a2154b5fecbc -size 94564 +oid sha256:64ceaa22e0bf4398cc7d286682b583e9f2a98da30cf2c9d56235a122b107b2ab +size 93830 diff --git a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_MultilineTextFieldScreenshot_showcase__light.png b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_MultilineTextFieldScreenshot_showcase__light.png index a2e678563..f7ca55659 100644 --- a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_MultilineTextFieldScreenshot_showcase__light.png +++ b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_MultilineTextFieldScreenshot_showcase__light.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3711b672aed780df52d7ee6464e19914086ebf362a85703c7bdfee60f055be89 -size 94157 +oid sha256:90573361d233bf338062538b60fd766baddf60041466f72caabc4e927b6034fa +size 93307 diff --git a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_MultilineTextFieldScreenshot_showcase_disabled__dark.png b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_MultilineTextFieldScreenshot_showcase_disabled__dark.png index b7df4e1a1..c7f89b8c7 100644 --- a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_MultilineTextFieldScreenshot_showcase_disabled__dark.png +++ b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_MultilineTextFieldScreenshot_showcase_disabled__dark.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7bf11e25cfe3228d80414b8714f366cf80ede2befdb200967b61fb4b679b2f6a -size 71519 +oid sha256:0e99aa5626f2d76aedec90f496e08fed67c64b022ebce1e1b7793d88bdaefa21 +size 70876 diff --git a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_MultilineTextFieldScreenshot_showcase_disabled__light.png b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_MultilineTextFieldScreenshot_showcase_disabled__light.png index 6afce09f3..9cf74f87f 100644 --- a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_MultilineTextFieldScreenshot_showcase_disabled__light.png +++ b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_MultilineTextFieldScreenshot_showcase_disabled__light.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f75910bbc18a649b080b19a2e8436a0ad7468422e1f8f4cd6a8d7953d2cdd467 -size 68463 +oid sha256:44701c4e8abcebaf85a682cbcf4ba4dbdb0fff2b9e53e29248d38e7c964f85ad +size 67632 diff --git a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_multilineTextFieldShowcase__dark.png b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_multilineTextFieldShowcase__dark.png index bcea9b4cb..caf38eb8a 100644 --- a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_multilineTextFieldShowcase__dark.png +++ b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_multilineTextFieldShowcase__dark.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4a081d1aaf5bd796c2dab1a0bbc9dc2073ed178493cd3a64054f9875e861a9b6 -size 97951 +oid sha256:223f6ddb92b52c9d48ad671acce35f733ed4230859550a7d01b723ce24cf0870 +size 97185 diff --git a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_multilineTextFieldShowcase__light.png b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_multilineTextFieldShowcase__light.png index 4780d7f95..5cbd0b464 100644 --- a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_multilineTextFieldShowcase__light.png +++ b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_multilineTextFieldShowcase__light.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2cb75ba31079d41fa96757f9869c9db23520d59210f1a270f01f58a58a8eefb4 -size 98223 +oid sha256:47bd0e52ef3d374bf680988a3131fed10937333e97d228eba032ed0104b6589d +size 97330 diff --git a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_selectTextFieldShowcase__dark.png b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_selectTextFieldShowcase__dark.png index 5fe890559..167b4eb9c 100644 --- a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_selectTextFieldShowcase__dark.png +++ b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_selectTextFieldShowcase__dark.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bd880baf4d83d9166a5c69c18e57a8b51c33454e58c0a32d011d76be22047993 -size 90677 +oid sha256:c013dca92d7a6612f87b2b0c4ce3a234a33746b5fbd460c56262752e035a8374 +size 89944 diff --git a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_selectTextFieldShowcase__light.png b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_selectTextFieldShowcase__light.png index 9a5da5863..d92a0cf1a 100644 --- a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_selectTextFieldShowcase__light.png +++ b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_selectTextFieldShowcase__light.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eaa55d4fff631da31a98439eb50c543382130db64fbbc5a1ca7bc74e88e9e9b1 -size 88399 +oid sha256:58636d994865fb9f2e2d230057f3b61a9d3b37933b8263cfc867b0396ecee08b +size 87501 diff --git a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_textFieldShowcase__dark.png b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_textFieldShowcase__dark.png index 51ac73381..acfcfce87 100644 --- a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_textFieldShowcase__dark.png +++ b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_textFieldShowcase__dark.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:36190eeb1ed6dc00df4df6c83d56ee50199f7c954aa26a5d46e6b79bce8e5207 -size 90663 +oid sha256:11e5d61739d7392dbde24972810248e8bdbbe71c06552149087dea32ab46ab6a +size 89934 diff --git a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_textFieldShowcase__light.png b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_textFieldShowcase__light.png index 0fb04b1c5..5b0a9b66c 100644 --- a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_textFieldShowcase__light.png +++ b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldDocScreenshot_textFieldShowcase__light.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c95b35774a81efaff6046192691c1157739afd90a2f2c66bd0bd7e13636000b5 -size 89263 +oid sha256:5590abb9e0128e5deb034d939f17bb4815ed33dce4c2a3f990e70f1e602a4c61 +size 88379 diff --git a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldScreenshot_bigValue.png b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldScreenshot_bigValue.png index 76c39807d..cbd02a8fd 100644 --- a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldScreenshot_bigValue.png +++ b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldScreenshot_bigValue.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b7fc1c57f2336822cf97232be8ce6bd6b1a44bab0c0a5f3130b22c13e3bfe40b -size 140156 +oid sha256:477e9a15bc97e855fc818485e1240ac89bae54bbac122799fce69119f0eb87d5 +size 139517 diff --git a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldScreenshot_disabled.png b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldScreenshot_disabled.png index fa5ba32f7..ba8e219d3 100644 --- a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldScreenshot_disabled.png +++ b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldScreenshot_disabled.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:04de75ef103bf87b64859edf91a7738bd83ec0db12a3c09a39918cb29bb29eb8 -size 143715 +oid sha256:b4d7dcb36f8032d55bbe83dbf1206378edca308a6f7e3c81437c41a951c2d646 +size 142728 diff --git a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldScreenshot_enabled.png b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldScreenshot_enabled.png index 4f6301bd0..2128fae4e 100644 --- a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldScreenshot_enabled.png +++ b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldScreenshot_enabled.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2af9c2a1189f475d91c45de8b55bc01003f0489639ecd084e373291aae4cb9d0 -size 156979 +oid sha256:5ce35bb38c6d9a8c270510d99f0805b91d9a8f73e736b244651fd6d39dc0b0bc +size 156080 diff --git a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldScreenshot_smallValue.png b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldScreenshot_smallValue.png index 2825b265b..9018aa27e 100644 --- a/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldScreenshot_smallValue.png +++ b/spark-screenshot-testing/src/test/snapshots/images/com.adevinta.spark.textfields_TextFieldScreenshot_smallValue.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b3e18f560b56baba1318b1a2cab31ba6e571eb9bda4dab789cf0f772f106ed91 -size 187834 +oid sha256:06fee3cbf1cbd5bf363ca3d43de9f0da7a830228dee78e0ac423d31a6d5f8cd9 +size 186955 diff --git a/spark/src/main/kotlin/com/adevinta/spark/tools/modifiers/Conditions.kt b/spark/src/main/kotlin/com/adevinta/spark/tools/modifiers/Conditions.kt index e52aa7cd9..6c68fee42 100644 --- a/spark/src/main/kotlin/com/adevinta/spark/tools/modifiers/Conditions.kt +++ b/spark/src/main/kotlin/com/adevinta/spark/tools/modifiers/Conditions.kt @@ -36,7 +36,7 @@ import androidx.compose.ui.Modifier * @param builder the modifier(s) to apply when [predicate] is true */ public inline fun Modifier.ifTrue(predicate: Boolean, builder: Modifier.() -> Modifier): Modifier = - then(if (predicate) this.builder() else Modifier) + then(if (predicate) this.builder() else this) /** * Modifier to make it easy to conditionally add a modifier based on [predicate] @@ -51,7 +51,7 @@ public inline fun Modifier.ifTrue(predicate: Boolean, builder: Modifier.() -> Mo * @param builder the modifier(s) to apply when [predicate] is false */ public inline fun Modifier.ifFalse(predicate: Boolean, builder: Modifier.() -> Modifier): Modifier = - then(if (!predicate) this.builder() else Modifier) + then(if (!predicate) this.builder() else this) /** * Modifier to make it easy to conditionally add a modifier based on [value] nullability @@ -66,7 +66,7 @@ public inline fun Modifier.ifFalse(predicate: Boolean, builder: Modifier.() -> M * @param builder the modifier(s) to apply when [value] is not null */ public inline fun Modifier.ifNotNull(value: T?, builder: Modifier.(T) -> Modifier): Modifier = - then(if (value != null) this.builder(value) else Modifier) + then(if (value != null) this.builder(value) else this) /** * Modifier to make it easy to conditionally add a modifier based on [value] nullability @@ -81,4 +81,4 @@ public inline fun Modifier.ifNotNull(value: T?, builder: Modifier.(T) * @param builder the modifier(s) to apply when [value] is null */ public inline fun Modifier.ifNull(value: T?, builder: Modifier.() -> Modifier): Modifier = - then(if (value == null) this.builder() else Modifier) + then(if (value == null) this.builder() else this) From f2a3a1f38249ab58af86163e583b8b4998e4ffac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 16:21:16 +0100 Subject: [PATCH 2/3] chore(deps): bump androidx.compose:compose-bom from 2024.12.01 to 2025.01.00 (#1431) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- gradle/libs.versions.toml | 2 +- spark-icons/dependencies/releaseRuntimeClasspath.txt | 2 +- spark/dependencies/releaseRuntimeClasspath.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e7eef1e02..0dd1e013b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ accompanist = "0.36.0" android-gradlePlugin = "8.7.3" androidx-activity = "1.9.3" androidx-appCompat = "1.7.0" -androidx-compose-bom = "2024.12.01" +androidx-compose-bom = "2025.01.00" androidx-graphics = "1.0.1" androidx-lifecycle = "2.8.7" androidx-navigation = "2.8.5" diff --git a/spark-icons/dependencies/releaseRuntimeClasspath.txt b/spark-icons/dependencies/releaseRuntimeClasspath.txt index 3eeeec9bb..12c447d85 100644 --- a/spark-icons/dependencies/releaseRuntimeClasspath.txt +++ b/spark-icons/dependencies/releaseRuntimeClasspath.txt @@ -26,7 +26,7 @@ androidx.compose.ui:ui-unit:1.7.6 androidx.compose.ui:ui-util-android:1.7.6 androidx.compose.ui:ui-util:1.7.6 androidx.compose.ui:ui:1.7.6 -androidx.compose:compose-bom:2024.12.01 +androidx.compose:compose-bom:2025.01.00 androidx.concurrent:concurrent-futures:1.1.0 androidx.core:core-ktx:1.12.0 androidx.core:core:1.12.0 diff --git a/spark/dependencies/releaseRuntimeClasspath.txt b/spark/dependencies/releaseRuntimeClasspath.txt index f45df4903..362f77b85 100644 --- a/spark/dependencies/releaseRuntimeClasspath.txt +++ b/spark/dependencies/releaseRuntimeClasspath.txt @@ -49,7 +49,7 @@ androidx.compose.ui:ui-unit:1.7.6 androidx.compose.ui:ui-util-android:1.7.6 androidx.compose.ui:ui-util:1.7.6 androidx.compose.ui:ui:1.7.6 -androidx.compose:compose-bom:2024.12.01 +androidx.compose:compose-bom:2025.01.00 androidx.concurrent:concurrent-futures:1.1.0 androidx.constraintlayout:constraintlayout-compose-android:1.1.0 androidx.constraintlayout:constraintlayout-compose:1.1.0 From 9edd07a074721756910ff5f6162f08d18e9cfec2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 16:27:15 +0100 Subject: [PATCH 3/3] chore(deps): bump androidx-activity from 1.9.3 to 1.10.0 (#1429) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Simon Marquis --- gradle/libs.versions.toml | 2 +- spark/dependencies/releaseRuntimeClasspath.txt | 6 +++--- .../com/adevinta/spark/tokens/WindowSizeClass.kt | 13 ++----------- 3 files changed, 6 insertions(+), 15 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0dd1e013b..c4c26ec50 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,7 @@ [versions] accompanist = "0.36.0" android-gradlePlugin = "8.7.3" -androidx-activity = "1.9.3" +androidx-activity = "1.10.0" androidx-appCompat = "1.7.0" androidx-compose-bom = "2025.01.00" androidx-graphics = "1.0.1" diff --git a/spark/dependencies/releaseRuntimeClasspath.txt b/spark/dependencies/releaseRuntimeClasspath.txt index 362f77b85..810584531 100644 --- a/spark/dependencies/releaseRuntimeClasspath.txt +++ b/spark/dependencies/releaseRuntimeClasspath.txt @@ -1,6 +1,6 @@ -androidx.activity:activity-compose:1.9.3 -androidx.activity:activity-ktx:1.9.3 -androidx.activity:activity:1.9.3 +androidx.activity:activity-compose:1.10.0 +androidx.activity:activity-ktx:1.10.0 +androidx.activity:activity:1.10.0 androidx.annotation:annotation-experimental:1.4.1 androidx.annotation:annotation-jvm:1.8.1 androidx.annotation:annotation:1.8.1 diff --git a/spark/src/main/kotlin/com/adevinta/spark/tokens/WindowSizeClass.kt b/spark/src/main/kotlin/com/adevinta/spark/tokens/WindowSizeClass.kt index 03bb910cc..9f7c14629 100644 --- a/spark/src/main/kotlin/com/adevinta/spark/tokens/WindowSizeClass.kt +++ b/spark/src/main/kotlin/com/adevinta/spark/tokens/WindowSizeClass.kt @@ -21,9 +21,7 @@ */ package com.adevinta.spark.tokens -import android.app.Activity -import android.content.Context -import android.content.ContextWrapper +import androidx.activity.compose.LocalActivity import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi import androidx.compose.material3.windowsizeclass.WindowSizeClass import androidx.compose.runtime.Composable @@ -31,7 +29,6 @@ import androidx.compose.runtime.ProvidableCompositionLocal import androidx.compose.runtime.staticCompositionLocalOf import androidx.compose.ui.graphics.toComposeRect import androidx.compose.ui.platform.LocalConfiguration -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalInspectionMode import androidx.compose.ui.unit.DpSize @@ -54,16 +51,10 @@ internal fun calculateWindowSizeClass(): WindowSizeClass { val config = LocalConfiguration.current return WindowSizeClass.calculateFromSize(DpSize(config.screenWidthDp.dp, config.screenHeightDp.dp)) } - val activity = LocalContext.current.findActivity() + val activity = requireNotNull(LocalActivity.current) { "Could not find activity in Context chain." } LocalConfiguration.current val density = LocalDensity.current val metrics = WindowMetricsCalculator.getOrCreate().computeCurrentWindowMetrics(activity) val size = with(density) { metrics.bounds.toComposeRect().size.toDpSize() } return WindowSizeClass.calculateFromSize(size) } - -private tailrec fun Context.findActivity(): Activity = when (this) { - is Activity -> this - is ContextWrapper -> this.baseContext.findActivity() - else -> error("Could not find activity in Context chain.") -}