From da7af50eb56228ca8884453717c6936a867bbd38 Mon Sep 17 00:00:00 2001 From: ganfra Date: Wed, 1 Mar 2023 11:33:54 +0100 Subject: [PATCH] Add preview to new timeline items --- .../virtual/TimelineItemDaySeparatorView.kt | 28 +++++++++++++++-- .../TimelineItemLoadingMoreIndicator.kt | 22 ++++++++++++-- .../TimelineItemDaySeparatorModelProvider.kt | 30 +++++++++++++++++++ 3 files changed, 75 insertions(+), 5 deletions(-) create mode 100644 features/messages/src/main/kotlin/io/element/android/features/messages/timeline/model/virtual/TimelineItemDaySeparatorModelProvider.kt diff --git a/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/components/virtual/TimelineItemDaySeparatorView.kt b/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/components/virtual/TimelineItemDaySeparatorView.kt index 0c57c9e242..753723a88d 100644 --- a/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/components/virtual/TimelineItemDaySeparatorView.kt +++ b/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/components/virtual/TimelineItemDaySeparatorView.kt @@ -20,12 +20,18 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.wrapContentHeight -import androidx.compose.material3.Text +import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +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.timeline.model.virtual.TimelineItemDaySeparatorModel +import io.element.android.features.messages.timeline.model.virtual.TimelineItemDaySeparatorModelProvider +import io.element.android.libraries.designsystem.preview.ElementPreviewDark +import io.element.android.libraries.designsystem.preview.ElementPreviewLight +import io.element.android.libraries.designsystem.theme.components.Text @Composable internal fun TimelineItemDaySeparatorView( @@ -40,7 +46,25 @@ internal fun TimelineItemDaySeparatorView( contentAlignment = Alignment.Center, ) { Text( - text = model.formattedDate + text = model.formattedDate, + color = MaterialTheme.colorScheme.secondary, ) } } + +@Preview +@Composable +internal fun TimelineItemDaySeparatorViewLightPreview(@PreviewParameter(TimelineItemDaySeparatorModelProvider::class) model: TimelineItemDaySeparatorModel) = + ElementPreviewLight { ContentToPreview(model) } + +@Preview +@Composable +internal fun TimelineItemDaySeparatorViewDarkPreview(@PreviewParameter(TimelineItemDaySeparatorModelProvider::class) model: TimelineItemDaySeparatorModel) = + ElementPreviewDark { ContentToPreview(model) } + +@Composable +private fun ContentToPreview(model: TimelineItemDaySeparatorModel) { + TimelineItemDaySeparatorView( + model = model, + ) +} diff --git a/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/components/virtual/TimelineItemLoadingMoreIndicator.kt b/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/components/virtual/TimelineItemLoadingMoreIndicator.kt index 7588192c6e..ace9b8d58b 100644 --- a/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/components/virtual/TimelineItemLoadingMoreIndicator.kt +++ b/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/components/virtual/TimelineItemLoadingMoreIndicator.kt @@ -20,12 +20,14 @@ import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.wrapContentHeight -import androidx.compose.material.CircularProgressIndicator -import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import io.element.android.libraries.designsystem.preview.ElementPreviewDark +import io.element.android.libraries.designsystem.preview.ElementPreviewLight +import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator @Composable internal fun TimelineLoadingMoreIndicator(modifier: Modifier = Modifier) { @@ -38,7 +40,21 @@ internal fun TimelineLoadingMoreIndicator(modifier: Modifier = Modifier) { ) { CircularProgressIndicator( strokeWidth = 2.dp, - color = MaterialTheme.colorScheme.primary ) } } + +@Preview +@Composable +internal fun TimelineLoadingMoreIndicatorLightPreview() = + ElementPreviewLight { ContentToPreview() } + +@Preview +@Composable +internal fun TimelineLoadingMoreIndicatorDarkPreview() = + ElementPreviewDark { ContentToPreview() } + +@Composable +private fun ContentToPreview() { + TimelineLoadingMoreIndicator() +} diff --git a/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/model/virtual/TimelineItemDaySeparatorModelProvider.kt b/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/model/virtual/TimelineItemDaySeparatorModelProvider.kt new file mode 100644 index 0000000000..0d1cb4d68a --- /dev/null +++ b/features/messages/src/main/kotlin/io/element/android/features/messages/timeline/model/virtual/TimelineItemDaySeparatorModelProvider.kt @@ -0,0 +1,30 @@ +/* + * 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.timeline.model.virtual + +import androidx.compose.ui.tooling.preview.PreviewParameterProvider + +class TimelineItemDaySeparatorModelProvider : PreviewParameterProvider { + override val values = sequenceOf( + aTimelineItemDaySeparatorModel("Today"), + aTimelineItemDaySeparatorModel("March 6, 2023") + ) +} + +fun aTimelineItemDaySeparatorModel(formattedDate: String) = TimelineItemDaySeparatorModel( + formattedDate = formattedDate +)