Long press to copy relay url

This commit is contained in:
greenart7c3
2024-09-02 07:15:59 -03:00
parent f89c1ff391
commit 53acbd8606
2 changed files with 24 additions and 3 deletions
@@ -59,8 +59,10 @@ 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.platform.LocalClipboardManager
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.text.AnnotatedString
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
@@ -677,6 +679,7 @@ private fun ActiveToggles(
} }
} }
@OptIn(ExperimentalFoundationApi::class)
@Composable @Composable
private fun FirstLine( private fun FirstLine(
item: Kind3BasicRelaySetupInfo, item: Kind3BasicRelaySetupInfo,
@@ -684,11 +687,18 @@ private fun FirstLine(
onDelete: (Kind3BasicRelaySetupInfo) -> Unit, onDelete: (Kind3BasicRelaySetupInfo) -> Unit,
modifier: Modifier, modifier: Modifier,
) { ) {
val clipboardManager = LocalClipboardManager.current
Row(verticalAlignment = Alignment.CenterVertically, modifier = modifier) { Row(verticalAlignment = Alignment.CenterVertically, modifier = modifier) {
Row(Modifier.weight(1f), verticalAlignment = Alignment.CenterVertically) { Row(Modifier.weight(1f), verticalAlignment = Alignment.CenterVertically) {
Text( Text(
text = item.briefInfo.displayUrl, text = item.briefInfo.displayUrl,
modifier = Modifier.clickable(onClick = onClick), modifier =
Modifier.combinedClickable(
onClick = onClick,
onLongClick = {
clipboardManager.setText(AnnotatedString(item.briefInfo.url))
},
),
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
) )
@@ -20,7 +20,8 @@
*/ */
package com.vitorpamplona.amethyst.ui.actions.relays 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.Row
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
@@ -34,6 +35,8 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier 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.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.vitorpamplona.amethyst.R 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.WarningColor
import com.vitorpamplona.amethyst.ui.theme.allGoodColor import com.vitorpamplona.amethyst.ui.theme.allGoodColor
@OptIn(ExperimentalFoundationApi::class)
@Composable @Composable
fun RelayNameAndRemoveButton( fun RelayNameAndRemoveButton(
item: BasicRelaySetupInfo, item: BasicRelaySetupInfo,
@@ -48,11 +52,18 @@ fun RelayNameAndRemoveButton(
onDelete: (BasicRelaySetupInfo) -> Unit, onDelete: (BasicRelaySetupInfo) -> Unit,
modifier: Modifier, modifier: Modifier,
) { ) {
val clipboardManager = LocalClipboardManager.current
Row(verticalAlignment = Alignment.CenterVertically, modifier = modifier) { Row(verticalAlignment = Alignment.CenterVertically, modifier = modifier) {
Row(Modifier.weight(1f), verticalAlignment = Alignment.CenterVertically) { Row(Modifier.weight(1f), verticalAlignment = Alignment.CenterVertically) {
Text( Text(
text = item.briefInfo.displayUrl, text = item.briefInfo.displayUrl,
modifier = Modifier.clickable(onClick = onClick), modifier =
Modifier.combinedClickable(
onClick = onClick,
onLongClick = {
clipboardManager.setText(AnnotatedString(item.briefInfo.url))
},
),
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis,
) )