long press to copy relay url in the relay icons and relay row

This commit is contained in:
greenart7c3
2024-09-02 09:52:39 -03:00
parent 53acbd8606
commit bba7c257da
3 changed files with 38 additions and 6 deletions

View File

@@ -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.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
@@ -31,6 +32,8 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
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 com.vitorpamplona.amethyst.service.Nip11CachedRetriever import com.vitorpamplona.amethyst.service.Nip11CachedRetriever
import com.vitorpamplona.amethyst.ui.note.RenderRelayIcon import com.vitorpamplona.amethyst.ui.note.RenderRelayIcon
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
@@ -41,6 +44,7 @@ import com.vitorpamplona.amethyst.ui.theme.HalfVertPadding
import com.vitorpamplona.amethyst.ui.theme.ReactionRowHeightChatMaxWidth import com.vitorpamplona.amethyst.ui.theme.ReactionRowHeightChatMaxWidth
import com.vitorpamplona.amethyst.ui.theme.largeRelayIconModifier import com.vitorpamplona.amethyst.ui.theme.largeRelayIconModifier
@OptIn(ExperimentalFoundationApi::class)
@Composable @Composable
fun BasicRelaySetupInfoClickableRow( fun BasicRelaySetupInfoClickableRow(
item: BasicRelaySetupInfo, item: BasicRelaySetupInfo,
@@ -50,7 +54,17 @@ fun BasicRelaySetupInfoClickableRow(
onClick: () -> Unit, onClick: () -> Unit,
accountViewModel: AccountViewModel, accountViewModel: AccountViewModel,
) { ) {
Column(Modifier.fillMaxWidth().clickable(onClick = onClick)) { val clipboardManager = LocalClipboardManager.current
Column(
Modifier
.fillMaxWidth()
.combinedClickable(
onClick = onClick,
onLongClick = {
clipboardManager.setText(AnnotatedString(item.briefInfo.url))
},
),
) {
Row( Row(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
modifier = HalfVertPadding, modifier = HalfVertPadding,

View File

@@ -22,7 +22,6 @@ package com.vitorpamplona.amethyst.ui.actions.relays
import android.widget.Toast import android.widget.Toast
import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.clickable
import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
@@ -294,6 +293,7 @@ fun LoadRelayInfo(
) )
} }
@OptIn(ExperimentalFoundationApi::class)
@Composable @Composable
fun ClickableRelayItem( fun ClickableRelayItem(
item: Kind3BasicRelaySetupInfo, item: Kind3BasicRelaySetupInfo,
@@ -309,7 +309,17 @@ fun ClickableRelayItem(
onDelete: (Kind3BasicRelaySetupInfo) -> Unit, onDelete: (Kind3BasicRelaySetupInfo) -> Unit,
onClick: () -> Unit, onClick: () -> Unit,
) { ) {
Column(Modifier.fillMaxWidth().clickable(onClick = onClick)) { val clipboardManager = LocalClipboardManager.current
Column(
Modifier
.fillMaxWidth()
.combinedClickable(
onClick = onClick,
onLongClick = {
clipboardManager.setText(AnnotatedString(item.briefInfo.url))
},
),
) {
Row( Row(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.padding(vertical = 5.dp), modifier = Modifier.padding(vertical = 5.dp),

View File

@@ -20,8 +20,9 @@
*/ */
package com.vitorpamplona.amethyst.ui.note package com.vitorpamplona.amethyst.ui.note
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
@@ -42,6 +43,8 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalClipboardManager
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
@@ -109,6 +112,7 @@ fun ChatRelayExpandButton(onClick: () -> Unit) {
} }
} }
@OptIn(ExperimentalFoundationApi::class)
@Composable @Composable
fun RenderRelay( fun RenderRelay(
relay: RelayBriefInfoCache.RelayBriefInfo, relay: RelayBriefInfoCache.RelayBriefInfo,
@@ -143,11 +147,15 @@ fun RenderRelay(
) )
} }
val clipboardManager = LocalClipboardManager.current
val clickableModifier = val clickableModifier =
remember(relay) { remember(relay) {
Modifier Modifier
.size(Size17dp) .size(Size17dp)
.clickable( .combinedClickable(
onLongClick = {
clipboardManager.setText(AnnotatedString(relay.url))
},
onClick = { onClick = {
accountViewModel.retrieveRelayDocument( accountViewModel.retrieveRelayDocument(
relay.url, relay.url,