diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 0b46ed74..f44ef1a9 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -26,8 +26,8 @@ android { applicationId = "dev.typetype.android" minSdk = 23 targetSdk = 37 - versionCode = 10808 - versionName = "1.8.0-beta.8" + versionCode = 10809 + versionName = "1.8.0-beta.9" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" resValue("string", "app_name", "TypeType") } diff --git a/app/src/main/java/dev/typetype/android/core/ui/components/RelatedVideoCard.kt b/app/src/main/java/dev/typetype/android/core/ui/components/RelatedVideoCard.kt index 35362233..3d2bacf2 100644 --- a/app/src/main/java/dev/typetype/android/core/ui/components/RelatedVideoCard.kt +++ b/app/src/main/java/dev/typetype/android/core/ui/components/RelatedVideoCard.kt @@ -1,5 +1,6 @@ package dev.typetype.android.core.ui.components +import android.text.format.DateUtils import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background import androidx.compose.foundation.combinedClickable @@ -39,6 +40,7 @@ import dev.typetype.android.core.ui.share.buildImageUrl import dev.typetype.android.domain.feed.Video import dev.typetype.android.domain.feed.VideoAvailability import dev.typetype.android.domain.feed.availabilityAt +import dev.typetype.android.domain.feed.releaseTimeMillis @OptIn(ExperimentalFoundationApi::class) @Composable @@ -137,7 +139,7 @@ fun RelatedVideoCard( ) } Text( - text = stringResource(R.string.video_views_short, formatRelatedViews(video.viewCount)), + text = video.metadataText(), style = MaterialTheme.typography.labelSmall, color = MaterialTheme.colorScheme.onSurfaceVariant, maxLines = 1, @@ -169,3 +171,19 @@ private fun formatRelatedViews(views: Long): String = when { views >= 1_000 -> "%.1fK".format(views / 1_000.0) else -> views.toString() } + +@Composable +private fun Video.metadataText(): String { + val views = stringResource(R.string.video_views_short, formatRelatedViews(viewCount)) + val published = releaseTimeMillis() + ?.takeIf { it <= System.currentTimeMillis() } + ?.let { timestamp -> + DateUtils.getRelativeTimeSpanString( + timestamp, + System.currentTimeMillis(), + DateUtils.MINUTE_IN_MILLIS, + DateUtils.FORMAT_ABBREV_RELATIVE, + ).toString() + } + return listOfNotNull(views, published).joinToString(" ยท ") +}