From a8ffbb922d0790bdd6d73f5b785d9b5bc2b9714f Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Fri, 26 May 2023 14:03:57 -0400 Subject: [PATCH] Moves relay color filters to a singleton --- .../ui/note/ChatroomMessageCompose.kt | 11 ++---- .../amethyst/ui/note/NoteCompose.kt | 8 +--- .../ui/screen/loggedIn/VideoScreen.kt | 39 +++---------------- .../vitorpamplona/amethyst/ui/theme/Color.kt | 4 ++ 4 files changed, 15 insertions(+), 47 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChatroomMessageCompose.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChatroomMessageCompose.kt index a800c9fd8..5560f7d8a 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChatroomMessageCompose.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChatroomMessageCompose.kt @@ -37,8 +37,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.ColorFilter -import androidx.compose.ui.graphics.ColorMatrix import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.compositeOver import androidx.compose.ui.layout.onSizeChanged @@ -66,6 +64,7 @@ import com.vitorpamplona.amethyst.ui.components.RobohashFallbackAsyncImage import com.vitorpamplona.amethyst.ui.components.SensitivityWarning import com.vitorpamplona.amethyst.ui.components.TranslatableRichTextViewer import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel +import com.vitorpamplona.amethyst.ui.theme.RelayIconFilter import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -538,7 +537,7 @@ private fun RelayBadges(baseNote: Note) { } @Composable -private fun RenderRelay(dirtyUrl: String) { +fun RenderRelay(dirtyUrl: String) { val uri = LocalUriHandler.current val website = remember { val cleanUrl = dirtyUrl.removePrefix("wss://").removePrefix("ws://") @@ -556,10 +555,6 @@ private fun RenderRelay(dirtyUrl: String) { .clickable(onClick = { uri.openUri(website) }) } - val colorFilter = remember { - ColorFilter.colorMatrix(ColorMatrix().apply { setToSaturation(0.5f) }) - } - val iconModifier = remember { Modifier .size(15.dp) @@ -574,7 +569,7 @@ private fun RenderRelay(dirtyUrl: String) { robotSize = 15.dp, model = iconUrl, contentDescription = stringResource(id = R.string.relay_icon), - colorFilter = colorFilter, + colorFilter = RelayIconFilter, modifier = iconModifier.background(MaterialTheme.colors.background) ) } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt index 721b28320..2ede5871f 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt @@ -57,8 +57,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.ColorFilter -import androidx.compose.ui.graphics.ColorMatrix import androidx.compose.ui.graphics.compositeOver import androidx.compose.ui.graphics.luminance import androidx.compose.ui.layout.ContentScale @@ -131,6 +129,7 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.ChannelHeader import com.vitorpamplona.amethyst.ui.screen.loggedIn.ReportNoteDialog import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange import com.vitorpamplona.amethyst.ui.theme.Following +import com.vitorpamplona.amethyst.ui.theme.RelayIconFilter import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -1936,9 +1935,6 @@ private fun RelayIconCompose(url: String) { .clip(shape = CircleShape) .clickable(onClick = { uri.openUri("https://$url") }) } - val colorFilter = remember { - ColorFilter.colorMatrix(ColorMatrix().apply { setToSaturation(0.5f) }) - } Box(boxModifier) { RobohashFallbackAsyncImage( @@ -1946,7 +1942,7 @@ private fun RelayIconCompose(url: String) { robotSize = 15.dp, model = model, contentDescription = stringResource(R.string.relay_icon), - colorFilter = colorFilter, + colorFilter = RelayIconFilter, modifier = iconModifier.background(MaterialTheme.colors.background) ) } 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 3c8541185..7dd638332 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 @@ -7,7 +7,6 @@ import androidx.compose.animation.Crossfade import androidx.compose.animation.core.tween import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background -import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -47,12 +46,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.ColorFilter -import androidx.compose.ui.graphics.ColorMatrix import androidx.compose.ui.platform.LocalLifecycleOwner -import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.res.painterResource -import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @@ -73,7 +68,6 @@ import com.vitorpamplona.amethyst.ui.actions.NewMediaModel import com.vitorpamplona.amethyst.ui.actions.NewMediaView import com.vitorpamplona.amethyst.ui.actions.NewPostView import com.vitorpamplona.amethyst.ui.components.ObserveDisplayNip05Status -import com.vitorpamplona.amethyst.ui.components.RobohashFallbackAsyncImage import com.vitorpamplona.amethyst.ui.dal.VideoFeedFilter import com.vitorpamplona.amethyst.ui.navigation.Route import com.vitorpamplona.amethyst.ui.note.FileHeaderDisplay @@ -82,6 +76,7 @@ import com.vitorpamplona.amethyst.ui.note.LikeReaction import com.vitorpamplona.amethyst.ui.note.NoteAuthorPicture import com.vitorpamplona.amethyst.ui.note.NoteDropDownMenu import com.vitorpamplona.amethyst.ui.note.NoteUsernameDisplay +import com.vitorpamplona.amethyst.ui.note.RenderRelay import com.vitorpamplona.amethyst.ui.note.ViewCountReaction import com.vitorpamplona.amethyst.ui.note.ZapReaction import com.vitorpamplona.amethyst.ui.screen.FeedEmpty @@ -317,35 +312,13 @@ private fun RenderVideoOrPictureNote( @Composable private fun RelayBadges(baseNote: Note) { val noteRelaysState by baseNote.live().relays.observeAsState() - val noteRelays = noteRelaysState?.note?.relays ?: emptySet() - - var expanded by remember { mutableStateOf(false) } - - val relaysToDisplay = noteRelays - - val uri = LocalUriHandler.current + val noteRelays = remember(noteRelaysState) { + noteRelaysState?.note?.relays ?: emptySet() + } FlowRow() { - relaysToDisplay.forEach { - val url = it.removePrefix("wss://").removePrefix("ws://") - Box( - Modifier - .size(15.dp) - .padding(1.dp) - ) { - RobohashFallbackAsyncImage( - robot = "https://$url/favicon.ico", - robotSize = 15.dp, - model = "https://$url/favicon.ico", - contentDescription = stringResource(id = R.string.relay_icon), - colorFilter = ColorFilter.colorMatrix(ColorMatrix().apply { setToSaturation(0f) }), - modifier = Modifier - .fillMaxSize(1f) - .clip(shape = CircleShape) - .background(MaterialTheme.colors.background) - .clickable(onClick = { uri.openUri("https://$url") }) - ) - } + noteRelays.forEach { dirtyUrl -> + RenderRelay(dirtyUrl) } } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/theme/Color.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/theme/Color.kt index c21e0dfdd..c97fb88c6 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/theme/Color.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/theme/Color.kt @@ -1,6 +1,8 @@ package com.vitorpamplona.amethyst.ui.theme import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.ColorFilter +import androidx.compose.ui.graphics.ColorMatrix val Purple200 = Color(0xFFBB86FC) val Purple500 = Color(0xFF6200EE) @@ -15,3 +17,5 @@ val FollowsFollow = Color.Yellow val NIP05Verified = Color.Blue val WarningColor = Color(0xFFC62828) + +val RelayIconFilter = ColorFilter.colorMatrix(ColorMatrix().apply { setToSaturation(0.5f) })