diff --git a/app/src/test/kotlin/io/element/android/app/KonsistClassNameTest.kt b/app/src/test/kotlin/io/element/android/app/KonsistClassNameTest.kt index 3a56e2d3ca..d187816682 100644 --- a/app/src/test/kotlin/io/element/android/app/KonsistClassNameTest.kt +++ b/app/src/test/kotlin/io/element/android/app/KonsistClassNameTest.kt @@ -16,6 +16,7 @@ package io.element.android.app +import androidx.compose.ui.tooling.preview.PreviewParameterProvider import com.bumble.appyx.core.node.Node import com.lemonappdev.konsist.api.Konsist import com.lemonappdev.konsist.api.ext.list.withAllParentsOf @@ -43,4 +44,20 @@ class KonsistClassNameTest { it.name.endsWith("Node") } } + + @Test + fun `Classes extending 'PreviewParameterProvider' name MUST end with "Provider" and MUST contain provided class name`() { + Konsist.scopeFromProject() + .classes() + .withAllParentsOf(PreviewParameterProvider::class) + .assertTrue { + // Cannot find a better way to get the type of the generic + val providedType = it.text + .substringBefore(">") + .substringAfter("<") + .removeSuffix("?") + .replace(".", "") + it.name.endsWith("Provider") && it.name.contains(providedType) + } + } } diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/Bloom.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/Bloom.kt index ff8d4221f6..c44a1140f0 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/Bloom.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/Bloom.kt @@ -537,7 +537,7 @@ internal fun BloomPreview() { } } -class InitialsColorStateProvider : PreviewParameterProvider { +class InitialsColorIntProvider : PreviewParameterProvider { override val values: Sequence get() = sequenceOf(0, 1, 2, 3, 4, 5, 6, 7) } @@ -545,7 +545,7 @@ class InitialsColorStateProvider : PreviewParameterProvider { @PreviewsDayNight @Composable @ShowkaseComposable(group = PreviewGroup.Bloom) -internal fun BloomInitialsPreview(@PreviewParameter(InitialsColorStateProvider::class) color: Int) { +internal fun BloomInitialsPreview(@PreviewParameter(InitialsColorIntProvider::class) color: Int) { ElementPreview { val avatarColors = AvatarColorsProvider.provide("$color", ElementTheme.isLightTheme) val bitmap = initialsBitmap(text = "F", backgroundColor = avatarColors.background, textColor = avatarColors.foreground) diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/PairCombinedProvider.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/PairCombinedProvider.kt deleted file mode 100644 index 0f53d44e44..0000000000 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/utils/PairCombinedProvider.kt +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2023 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.element.android.libraries.designsystem.utils - -import androidx.compose.ui.tooling.preview.PreviewParameterProvider - -open class PairCombinedProvider( - private val provider: Pair, PreviewParameterProvider> -) : PreviewParameterProvider> { - override val values: Sequence> - get() = provider.first.values.flatMap { first -> - provider.second.values.map { second -> - first to second - } - } -} diff --git a/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsViewStateProvider.kt b/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsStateProvider.kt similarity index 94% rename from libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsViewStateProvider.kt rename to libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsStateProvider.kt index 2009ad0e85..cc59d96b44 100644 --- a/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsViewStateProvider.kt +++ b/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsStateProvider.kt @@ -19,7 +19,7 @@ package io.element.android.libraries.permissions.api import android.Manifest import androidx.compose.ui.tooling.preview.PreviewParameterProvider -open class PermissionsViewStateProvider : PreviewParameterProvider { +open class PermissionsStateProvider : PreviewParameterProvider { override val values: Sequence get() = sequenceOf( aPermissionsState(showDialog = true, permission = Manifest.permission.POST_NOTIFICATIONS), diff --git a/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsView.kt b/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsView.kt index ef15ab561d..9e2413fff9 100644 --- a/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsView.kt +++ b/libraries/permissions/api/src/main/kotlin/io/element/android/libraries/permissions/api/PermissionsView.kt @@ -57,7 +57,7 @@ private fun String.toDialogContent(): String { @PreviewsDayNight @Composable -internal fun PermissionsViewPreview(@PreviewParameter(PermissionsViewStateProvider::class) state: PermissionsState) = ElementPreview { +internal fun PermissionsViewPreview(@PreviewParameter(PermissionsStateProvider::class) state: PermissionsState) = ElementPreview { PermissionsView( state = state, )