From 5ca5a4bff18cf470ad96abe1a6a09bfdd544bf3d Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 30 May 2023 11:33:33 +0200 Subject: [PATCH] Add preview for TimelineEventTimestampView --- .../components/TimelineEventTimestampView.kt | 22 +++++++++++ ...melineItemEventForTimestampViewProvider.kt | 39 +++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventForTimestampViewProvider.kt diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineEventTimestampView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineEventTimestampView.kt index 8358d6cc1e..f6daa68186 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineEventTimestampView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineEventTimestampView.kt @@ -27,11 +27,15 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import io.element.android.features.messages.impl.timeline.model.TimelineItem import io.element.android.features.messages.impl.timeline.model.event.TimelineItemTextBasedContent import io.element.android.libraries.core.bool.orFalse import io.element.android.libraries.designsystem.ElementTextStyles +import io.element.android.libraries.designsystem.preview.ElementPreviewDark +import io.element.android.libraries.designsystem.preview.ElementPreviewLight import io.element.android.libraries.designsystem.theme.ElementTheme import io.element.android.libraries.designsystem.theme.components.Icon import io.element.android.libraries.designsystem.theme.components.Text @@ -68,3 +72,21 @@ fun TimelineEventTimestampView( } } } + +@Preview +@Composable +internal fun TimelineEventTimestampViewLightPreview(@PreviewParameter(TimelineItemEventForTimestampViewProvider::class) event: TimelineItem.Event) = + ElementPreviewLight { ContentToPreview(event) } + +@Preview +@Composable +internal fun TimelineEventTimestampViewDarkPreview(@PreviewParameter(TimelineItemEventForTimestampViewProvider::class) event: TimelineItem.Event) = + ElementPreviewDark { ContentToPreview(event) } + +@Composable +private fun ContentToPreview(event: TimelineItem.Event) { + TimelineEventTimestampView( + event = event, + onClick = {} + ) +} diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventForTimestampViewProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventForTimestampViewProvider.kt new file mode 100644 index 0000000000..24daed065a --- /dev/null +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventForTimestampViewProvider.kt @@ -0,0 +1,39 @@ +/* + * 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.features.messages.impl.timeline.components + +import androidx.compose.ui.tooling.preview.PreviewParameterProvider +import io.element.android.features.messages.impl.timeline.aTimelineItemEvent +import io.element.android.features.messages.impl.timeline.model.TimelineItem +import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemTextContent +import io.element.android.libraries.matrix.api.timeline.item.event.EventSendState + +class TimelineItemEventForTimestampViewProvider : PreviewParameterProvider { + override val values: Sequence + get() = sequenceOf( + aTimelineItemEvent(), + // Sending failed + aTimelineItemEvent().copy(sendState = EventSendState.SendingFailed("AN_ERROR")), + // Edited + aTimelineItemEvent().copy(content = aTimelineItemTextContent().copy(isEdited = true)), + // Sending failed + Edited (not sure this is possible IRL, but should be covered by test) + aTimelineItemEvent().copy( + sendState = EventSendState.SendingFailed("AN_ERROR"), + content = aTimelineItemTextContent().copy(isEdited = true), + ), + ) +}