From 5da9e430b0d0cb0dddf4411b11d424698515ca91 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Tue, 18 Jun 2024 19:33:04 -0400 Subject: [PATCH] Get's rid of the view count. --- .../vitorpamplona/amethyst/ui/note/Icons.kt | 29 +++--- .../amethyst/ui/note/ReactionsRow.kt | 91 +++++++++---------- .../ui/screen/loggedIn/VideoScreen.kt | 9 -- .../vitorpamplona/amethyst/ui/theme/Shape.kt | 2 +- .../amethyst/commons/icons/Zap.kt | 2 +- 5 files changed, 61 insertions(+), 72 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/Icons.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/Icons.kt index 5d62d22d3..f35750f11 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/Icons.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/Icons.kt @@ -44,8 +44,8 @@ import androidx.compose.material.icons.filled.Link import androidx.compose.material.icons.filled.MoreVert import androidx.compose.material.icons.filled.PushPin import androidx.compose.material.icons.filled.Report +import androidx.compose.material.icons.filled.Share import androidx.compose.material.icons.outlined.ArrowForwardIos -import androidx.compose.material.icons.outlined.BarChart import androidx.compose.material.icons.outlined.Bolt import androidx.compose.material.icons.outlined.PlayCircle import androidx.compose.material3.Icon @@ -243,6 +243,7 @@ fun ReactionRowIconPreview() { OutlinedZapIcon(Size20Modifier) ZapIcon(Size20Modifier) ZappedIcon(Size20Modifier) + ShareIcon(Size20Modifier, Color.Unspecified) } } @@ -274,6 +275,19 @@ fun OutlinedZapIcon( ) } +@Composable +fun ShareIcon( + modifier: Modifier, + tint: Color = Color.Unspecified, +) { + Icon( + imageVector = Icons.Default.Share, + modifier = modifier, + contentDescription = stringResource(R.string.share_or_save), + tint = tint, + ) +} + @Composable fun CashuIcon(modifier: Modifier) { Icon( @@ -349,19 +363,6 @@ fun CommentIcon( ) } -@Composable -fun ViewCountIcon( - modifier: Modifier, - tint: Color = Color.Unspecified, -) { - Icon( - imageVector = Icons.Outlined.BarChart, - null, - modifier = modifier, - tint = tint, - ) -} - @Composable fun PollIcon() { Icon( diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt index 775798ef4..11db3728e 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt @@ -21,6 +21,7 @@ package com.vitorpamplona.amethyst.ui.note import android.content.Context +import android.content.Intent import androidx.compose.animation.AnimatedContent import androidx.compose.animation.AnimatedContentTransitionScope import androidx.compose.animation.ContentTransform @@ -75,7 +76,6 @@ import androidx.compose.ui.Alignment.Companion.CenterStart import androidx.compose.ui.Alignment.Companion.CenterVertically import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.stringResource @@ -87,13 +87,11 @@ import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.TextUnit import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Popup +import androidx.core.content.ContextCompat import androidx.lifecycle.LiveData import androidx.lifecycle.MediatorLiveData import androidx.lifecycle.distinctUntilChanged import androidx.lifecycle.map -import coil.compose.AsyncImage -import coil.request.CachePolicy -import coil.request.ImageRequest import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.model.FeatureSetType import com.vitorpamplona.amethyst.model.Note @@ -109,7 +107,6 @@ import com.vitorpamplona.amethyst.ui.theme.ButtonBorder import com.vitorpamplona.amethyst.ui.theme.DarkerGreen import com.vitorpamplona.amethyst.ui.theme.Font14SP import com.vitorpamplona.amethyst.ui.theme.HalfDoubleVertSpacer -import com.vitorpamplona.amethyst.ui.theme.Height24dpModifier import com.vitorpamplona.amethyst.ui.theme.ModifierWidth3dp import com.vitorpamplona.amethyst.ui.theme.NoSoTinyBorders import com.vitorpamplona.amethyst.ui.theme.ReactionRowExpandButton @@ -202,15 +199,51 @@ private fun InnerReactionRow( ZapReaction(baseNote, MaterialTheme.colorScheme.placeholderText, accountViewModel, nav = nav) }, six = { - // ViewCountReaction( - // note = baseNote, - // grayTint = MaterialTheme.colorScheme.placeholderText, - // viewCountColorFilter = MaterialTheme.colorScheme.placeholderTextColorFilter, - // ) + ShareReaction( + note = baseNote, + grayTint = MaterialTheme.colorScheme.placeholderText, + ) }, ) } +@Composable +fun ShareReaction( + note: Note, + grayTint: Color, + barChartModifier: Modifier = Size19Modifier, +) { + val context = LocalContext.current + + IconButton( + modifier = barChartModifier, + onClick = { + val sendIntent = + Intent().apply { + action = Intent.ACTION_SEND + type = "text/plain" + putExtra( + Intent.EXTRA_TEXT, + externalLinkForNote(note), + ) + putExtra( + Intent.EXTRA_TITLE, + context.getString(R.string.quick_action_share_browser_link), + ) + } + + val shareIntent = + Intent.createChooser( + sendIntent, + context.getString(R.string.quick_action_share), + ) + ContextCompat.startActivity(context, shareIntent, null) + }, + ) { + ShareIcon(barChartModifier, grayTint) + } +} + @Composable private fun GenericInnerReactionRow( showReactionDetail: Boolean, @@ -244,7 +277,7 @@ private fun GenericInnerReactionRow( Row(verticalAlignment = CenterVertically, modifier = Modifier.weight(1f)) { five() } - Row(verticalAlignment = CenterVertically, modifier = Modifier.weight(1f)) { six() } + Row(verticalAlignment = CenterVertically, modifier = Modifier) { six() } } } @@ -1201,42 +1234,6 @@ fun ObserveZapAmountText( } } -@Composable -fun ViewCountReaction( - note: Note, - grayTint: Color, - barChartModifier: Modifier = Size19Modifier, - numberSizeModifier: Modifier = Height24dpModifier, - viewCountColorFilter: ColorFilter, -) { - ViewCountIcon(barChartModifier, grayTint) - DrawViewCount(note, numberSizeModifier, viewCountColorFilter) -} - -@Composable -private fun DrawViewCount( - note: Note, - iconModifier: Modifier = Modifier, - viewCountColorFilter: ColorFilter, -) { - val context = LocalContext.current - - AsyncImage( - model = - remember(note) { - ImageRequest - .Builder(context) - .data("https://counter.amethyst.social/${note.idHex}.svg?label=+&color=00000000") - .diskCachePolicy(CachePolicy.DISABLED) - .memoryCachePolicy(CachePolicy.ENABLED) - .build() - }, - contentDescription = context.getString(R.string.view_count), - modifier = iconModifier, - colorFilter = viewCountColorFilter, - ) -} - @OptIn(ExperimentalLayoutApi::class) @Composable private fun BoostTypeChoicePopup( diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/VideoScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/VideoScreen.kt index 4cb678251..d88d5de76 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/VideoScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/VideoScreen.kt @@ -73,7 +73,6 @@ import com.vitorpamplona.amethyst.ui.note.NoteAuthorPicture import com.vitorpamplona.amethyst.ui.note.NoteUsernameDisplay import com.vitorpamplona.amethyst.ui.note.RenderAllRelayList import com.vitorpamplona.amethyst.ui.note.ReplyReaction -import com.vitorpamplona.amethyst.ui.note.ViewCountReaction import com.vitorpamplona.amethyst.ui.note.ZapReaction import com.vitorpamplona.amethyst.ui.note.elements.NoteDropDownMenu import com.vitorpamplona.amethyst.ui.note.types.FileHeaderDisplay @@ -92,12 +91,10 @@ import com.vitorpamplona.amethyst.ui.theme.AuthorInfoVideoFeed import com.vitorpamplona.amethyst.ui.theme.DoubleHorzSpacer import com.vitorpamplona.amethyst.ui.theme.Size35Modifier import com.vitorpamplona.amethyst.ui.theme.Size35dp -import com.vitorpamplona.amethyst.ui.theme.Size39Modifier import com.vitorpamplona.amethyst.ui.theme.Size40Modifier import com.vitorpamplona.amethyst.ui.theme.Size40dp import com.vitorpamplona.amethyst.ui.theme.Size55dp import com.vitorpamplona.amethyst.ui.theme.VideoReactionColumnPadding -import com.vitorpamplona.amethyst.ui.theme.onBackgroundColorFilter import com.vitorpamplona.amethyst.ui.theme.placeholderText import com.vitorpamplona.quartz.events.FileHeaderEvent import com.vitorpamplona.quartz.events.FileStorageHeaderEvent @@ -444,11 +441,5 @@ fun ReactionsColumn( animationSize = Size35dp, nav = nav, ) - ViewCountReaction( - note = baseNote, - grayTint = MaterialTheme.colorScheme.onBackground, - barChartModifier = Size39Modifier, - viewCountColorFilter = MaterialTheme.colorScheme.onBackgroundColorFilter, - ) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/theme/Shape.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/theme/Shape.kt index 5f3bce586..dd4d233a6 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/theme/Shape.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/theme/Shape.kt @@ -157,7 +157,7 @@ val VideoReactionColumnPadding = Modifier.padding(bottom = 75.dp) val DividerThickness = 0.25.dp val ReactionRowHeight = Modifier.padding(vertical = 7.dp).height(24.dp) -val ReactionRowHeightWithPadding = Modifier.padding(vertical = 7.dp).height(24.dp).padding(start = 10.dp) +val ReactionRowHeightWithPadding = Modifier.padding(vertical = 7.dp).height(24.dp).padding(horizontal = 10.dp) val ReactionRowHeightChat = Modifier.height(25.dp) val UserNameRowHeight = Modifier.fillMaxWidth() val UserNameMaxRowHeight = Modifier.fillMaxWidth() diff --git a/commons/src/main/java/com/vitorpamplona/amethyst/commons/icons/Zap.kt b/commons/src/main/java/com/vitorpamplona/amethyst/commons/icons/Zap.kt index c5caf56ca..5617c78cd 100644 --- a/commons/src/main/java/com/vitorpamplona/amethyst/commons/icons/Zap.kt +++ b/commons/src/main/java/com/vitorpamplona/amethyst/commons/icons/Zap.kt @@ -72,7 +72,7 @@ inline fun ImageVector.Builder.materialOutlinedPath( fillAlpha = fillAlpha, stroke = SolidColor(Color.Black), strokeAlpha = strokeAlpha, - strokeLineWidth = 1.4f, + strokeLineWidth = 1.3f, strokeLineCap = StrokeCap.Butt, strokeLineJoin = StrokeJoin.Bevel, strokeLineMiter = 1f,