From fdb13ebca548a7b901db8aadf101d88dce00cce6 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 25 Apr 2024 17:29:40 +0200 Subject: [PATCH] Create proper PreviewParameterProvider for TimelineItemEncryptedContent And remove `@Suppress("UNUSED_PARAMETER")` --- .../event/TimelineItemEncryptedView.kt | 31 +++++--------- .../TimelineItemEncryptedContentProvider.kt | 40 +++++++++++++++++++ 2 files changed, 50 insertions(+), 21 deletions(-) create mode 100644 features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEncryptedContentProvider.kt diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemEncryptedView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemEncryptedView.kt index 039188b3aa..cb314c23a6 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemEncryptedView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemEncryptedView.kt @@ -16,12 +16,13 @@ package io.element.android.features.messages.impl.timeline.components.event -import androidx.compose.foundation.layout.Column import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.PreviewParameter import io.element.android.features.messages.impl.timeline.components.layout.ContentAvoidingLayoutData import io.element.android.features.messages.impl.timeline.model.event.TimelineItemEncryptedContent +import io.element.android.features.messages.impl.timeline.model.event.TimelineItemEncryptedContentProvider import io.element.android.libraries.designsystem.icons.CompoundDrawables import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight @@ -31,7 +32,7 @@ import io.element.android.libraries.ui.strings.CommonStrings @Composable fun TimelineItemEncryptedView( - @Suppress("UNUSED_PARAMETER") content: TimelineItemEncryptedContent, + content: TimelineItemEncryptedContent, onContentLayoutChanged: (ContentAvoidingLayoutData) -> Unit, modifier: Modifier = Modifier ) { @@ -53,23 +54,11 @@ fun TimelineItemEncryptedView( @PreviewsDayNight @Composable -internal fun TimelineItemEncryptedViewPreview() = ElementPreview { - Column { - TimelineItemEncryptedView( - content = TimelineItemEncryptedContent( - data = UnableToDecryptContent.Data.Unknown - ), - onContentLayoutChanged = {}, - ) - - TimelineItemEncryptedView( - content = TimelineItemEncryptedContent( - data = UnableToDecryptContent.Data.MegolmV1AesSha2( - sessionId = "sessionId", - utdCause = UtdCause.Membership - ) - ), - onContentLayoutChanged = {}, - ) - } +internal fun TimelineItemEncryptedViewPreview( + @PreviewParameter(TimelineItemEncryptedContentProvider::class) content: TimelineItemEncryptedContent +) = ElementPreview { + TimelineItemEncryptedView( + content = content, + onContentLayoutChanged = {}, + ) } diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEncryptedContentProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEncryptedContentProvider.kt new file mode 100644 index 0000000000..fafc65ac1b --- /dev/null +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/model/event/TimelineItemEncryptedContentProvider.kt @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2024 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.features.messages.impl.timeline.model.event + +import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import io.element.android.libraries.matrix.api.timeline.item.event.UnableToDecryptContent +import io.element.android.libraries.matrix.api.timeline.item.event.UtdCause + +open class TimelineItemEncryptedContentProvider : PreviewParameterProvider { + override val values: Sequence + get() = sequenceOf( + aTimelineItemEncryptedContent(), + aTimelineItemEncryptedContent( + data = UnableToDecryptContent.Data.MegolmV1AesSha2( + sessionId = "sessionId", + utdCause = UtdCause.Membership + ) + ), + ) +} + +private fun aTimelineItemEncryptedContent( + data: UnableToDecryptContent.Data = UnableToDecryptContent.Data.Unknown +) = TimelineItemEncryptedContent( + data = data +)