diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/Kind3RelayListView.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/Kind3RelayListView.kt index 9b1ccebde..873c8e2dd 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/Kind3RelayListView.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/Kind3RelayListView.kt @@ -59,8 +59,10 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalClipboardManager import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp @@ -677,6 +679,7 @@ private fun ActiveToggles( } } +@OptIn(ExperimentalFoundationApi::class) @Composable private fun FirstLine( item: Kind3BasicRelaySetupInfo, @@ -684,11 +687,18 @@ private fun FirstLine( onDelete: (Kind3BasicRelaySetupInfo) -> Unit, modifier: Modifier, ) { + val clipboardManager = LocalClipboardManager.current Row(verticalAlignment = Alignment.CenterVertically, modifier = modifier) { Row(Modifier.weight(1f), verticalAlignment = Alignment.CenterVertically) { Text( text = item.briefInfo.displayUrl, - modifier = Modifier.clickable(onClick = onClick), + modifier = + Modifier.combinedClickable( + onClick = onClick, + onLongClick = { + clipboardManager.setText(AnnotatedString(item.briefInfo.url)) + }, + ), maxLines = 1, overflow = TextOverflow.Ellipsis, ) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/RelayNameAndRemoveButton.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/RelayNameAndRemoveButton.kt index 4d71d403f..eeba9d2d1 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/RelayNameAndRemoveButton.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/relays/RelayNameAndRemoveButton.kt @@ -20,7 +20,8 @@ */ package com.vitorpamplona.amethyst.ui.actions.relays -import androidx.compose.foundation.clickable +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size @@ -34,6 +35,8 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalClipboardManager +import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R @@ -41,6 +44,7 @@ import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.theme.WarningColor import com.vitorpamplona.amethyst.ui.theme.allGoodColor +@OptIn(ExperimentalFoundationApi::class) @Composable fun RelayNameAndRemoveButton( item: BasicRelaySetupInfo, @@ -48,11 +52,18 @@ fun RelayNameAndRemoveButton( onDelete: (BasicRelaySetupInfo) -> Unit, modifier: Modifier, ) { + val clipboardManager = LocalClipboardManager.current Row(verticalAlignment = Alignment.CenterVertically, modifier = modifier) { Row(Modifier.weight(1f), verticalAlignment = Alignment.CenterVertically) { Text( text = item.briefInfo.displayUrl, - modifier = Modifier.clickable(onClick = onClick), + modifier = + Modifier.combinedClickable( + onClick = onClick, + onLongClick = { + clipboardManager.setText(AnnotatedString(item.briefInfo.url)) + }, + ), maxLines = 1, overflow = TextOverflow.Ellipsis, )