TimeAgo refactoring

This commit is contained in:
Vitor Pamplona
2023-08-04 21:04:13 -04:00
parent 28e6471ade
commit c2b72f1e45
6 changed files with 21 additions and 14 deletions
@@ -37,6 +37,7 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
@@ -146,7 +147,7 @@ private fun RenderTopRouteBar(
baseChannel = it, baseChannel = it,
showVideo = true, showVideo = true,
showBottomDiviser = true, showBottomDiviser = true,
modifier = Modifier.padding(vertical = 8.dp, horizontal = 10.dp), modifier = Modifier.padding(vertical = 8.dp, horizontal = 11.dp),
accountViewModel = accountViewModel, accountViewModel = accountViewModel,
nav = nav nav = nav
) )
@@ -155,7 +156,7 @@ private fun RenderTopRouteBar(
if (it != null) { if (it != null) {
ChatroomHeader( ChatroomHeader(
baseUser = it, baseUser = it,
modifier = Modifier.padding(vertical = 4.dp, horizontal = 10.dp), modifier = Modifier.padding(vertical = 4.dp, horizontal = 11.dp),
accountViewModel = accountViewModel, accountViewModel = accountViewModel,
nav = nav nav = nav
) )
@@ -338,7 +339,8 @@ private fun LoggedInUserPictureDrawer(
robot = pubkeyHex, robot = pubkeyHex,
model = profilePicture, model = profilePicture,
contentDescription = stringResource(id = R.string.profile_image), contentDescription = stringResource(id = R.string.profile_image),
modifier = HeaderPictureModifier modifier = HeaderPictureModifier,
contentScale = ContentScale.Crop
) )
} }
} }
@@ -33,12 +33,10 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.graphics.compositeOver import androidx.compose.ui.graphics.compositeOver
import androidx.compose.ui.layout.onSizeChanged import androidx.compose.ui.layout.onSizeChanged
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.lifecycle.map import androidx.lifecycle.map
import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.model.Note
@@ -58,6 +56,7 @@ import com.vitorpamplona.amethyst.ui.theme.ChatBubbleMaxSizeModifier
import com.vitorpamplona.amethyst.ui.theme.ChatBubbleShapeMe import com.vitorpamplona.amethyst.ui.theme.ChatBubbleShapeMe
import com.vitorpamplona.amethyst.ui.theme.ChatBubbleShapeThem import com.vitorpamplona.amethyst.ui.theme.ChatBubbleShapeThem
import com.vitorpamplona.amethyst.ui.theme.DoubleHorzSpacer import com.vitorpamplona.amethyst.ui.theme.DoubleHorzSpacer
import com.vitorpamplona.amethyst.ui.theme.Font12SP
import com.vitorpamplona.amethyst.ui.theme.ReactionRowHeightChat import com.vitorpamplona.amethyst.ui.theme.ReactionRowHeightChat
import com.vitorpamplona.amethyst.ui.theme.Size15dp import com.vitorpamplona.amethyst.ui.theme.Size15dp
import com.vitorpamplona.amethyst.ui.theme.Size25dp import com.vitorpamplona.amethyst.ui.theme.Size25dp
@@ -68,6 +67,8 @@ import com.vitorpamplona.amethyst.ui.theme.placeholderText
import com.vitorpamplona.amethyst.ui.theme.subtleBorder import com.vitorpamplona.amethyst.ui.theme.subtleBorder
import kotlinx.collections.immutable.persistentSetOf import kotlinx.collections.immutable.persistentSetOf
import kotlinx.collections.immutable.toImmutableSet import kotlinx.collections.immutable.toImmutableSet
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@OptIn(ExperimentalFoundationApi::class) @OptIn(ExperimentalFoundationApi::class)
@Composable @Composable
@@ -575,18 +576,18 @@ private fun StatusRow(
@Composable @Composable
fun ChatTimeAgo(baseNote: Note) { fun ChatTimeAgo(baseNote: Note) {
val context = LocalContext.current val nowStr = stringResource(id = R.string.now)
val timeStr by remember(baseNote) { val time by remember(baseNote) {
derivedStateOf { derivedStateOf {
timeAgoShort(baseNote.createdAt() ?: 0, context = context) timeAgoShort(baseNote.createdAt() ?: 0, nowStr)
} }
} }
Text( Text(
text = timeStr, text = time,
color = MaterialTheme.colors.placeholderText, color = MaterialTheme.colors.placeholderText,
fontSize = 12.sp, fontSize = Font12SP,
maxLines = 1 maxLines = 1
) )
} }
@@ -27,7 +27,7 @@ fun timeAgo(mills: Long?, context: Context): String {
.replace("Yesterday", "1" + context.getString(R.string.d)) .replace("Yesterday", "1" + context.getString(R.string.d))
} }
fun timeAgoShort(mills: Long?, context: Context): String { fun timeAgoShort(mills: Long?, stringForNow: String): String {
if (mills == null) return " " if (mills == null) return " "
var humanReadable = DateUtils.getRelativeTimeSpanString( var humanReadable = DateUtils.getRelativeTimeSpanString(
@@ -37,7 +37,7 @@ fun timeAgoShort(mills: Long?, context: Context): String {
DateUtils.FORMAT_ABBREV_ALL DateUtils.FORMAT_ABBREV_ALL
).toString() ).toString()
if (humanReadable.startsWith("In") || humanReadable.startsWith("0")) { if (humanReadable.startsWith("In") || humanReadable.startsWith("0")) {
humanReadable = context.getString(R.string.now) humanReadable = stringForNow
} }
return humanReadable return humanReadable
@@ -3,6 +3,7 @@ package com.vitorpamplona.amethyst.ui.screen
import androidx.compose.animation.Crossfade import androidx.compose.animation.Crossfade
import androidx.compose.animation.core.tween import androidx.compose.animation.core.tween
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.itemsIndexed
@@ -11,6 +12,7 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.model.Note
import com.vitorpamplona.amethyst.ui.note.ChatroomMessageCompose import com.vitorpamplona.amethyst.ui.note.ChatroomMessageCompose
@@ -86,6 +88,7 @@ fun ChatroomFeedLoaded(
top = 10.dp, top = 10.dp,
bottom = 10.dp bottom = 10.dp
), ),
modifier = Modifier.fillMaxSize(),
reverseLayout = true, reverseLayout = true,
state = listState state = listState
) { ) {
@@ -106,8 +106,8 @@ val UserNameMaxRowHeight = Modifier.fillMaxWidth()
val Height4dpModifier = Modifier.height(4.dp) val Height4dpModifier = Modifier.height(4.dp)
val AccountPictureModifier = Modifier.width(55.dp).height(55.dp).clip(shape = CircleShape) val AccountPictureModifier = Modifier.size(55.dp).clip(shape = CircleShape)
val HeaderPictureModifier = Modifier.width(34.dp).height(34.dp).clip(shape = CircleShape) val HeaderPictureModifier = Modifier.size(34.dp).clip(shape = CircleShape)
val ShowMoreRelaysButtonIconButtonModifier = Modifier.size(24.dp) val ShowMoreRelaysButtonIconButtonModifier = Modifier.size(24.dp)
val ShowMoreRelaysButtonIconModifier = Modifier.size(15.dp) val ShowMoreRelaysButtonIconModifier = Modifier.size(15.dp)
@@ -30,6 +30,7 @@ val Typography = Typography(
*/ */
) )
val Font12SP = 12.sp
val Font14SP = 14.sp val Font14SP = 14.sp
val Font17SP = 17.sp val Font17SP = 17.sp