Adding the ability to click and hold to copy the image url on profile.
This commit is contained in:
@@ -490,13 +490,15 @@ fun UserPicture(
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalFoundationApi::class)
|
||||
@Composable
|
||||
fun UserPicture(
|
||||
baseUser: User,
|
||||
baseUserAccount: User,
|
||||
size: Dp,
|
||||
pictureModifier: Modifier = Modifier,
|
||||
onClick: ((User) -> Unit)? = null
|
||||
onClick: ((User) -> Unit)? = null,
|
||||
onLongClick: ((User) -> Unit)? = null
|
||||
) {
|
||||
val userState by baseUser.live().metadata.observeAsState()
|
||||
val user = userState?.user ?: return
|
||||
@@ -519,7 +521,9 @@ fun UserPicture(
|
||||
.clip(shape = CircleShape)
|
||||
.background(MaterialTheme.colors.background)
|
||||
.run {
|
||||
if (onClick != null)
|
||||
if (onClick != null && onLongClick != null)
|
||||
this.combinedClickable(onClick = { onClick(user) }, onLongClick = { onLongClick(user) } )
|
||||
else if (onClick != null)
|
||||
this.clickable(onClick = { onClick(user) } )
|
||||
else
|
||||
this
|
||||
|
||||
@@ -265,7 +265,8 @@ private fun ProfileHeader(
|
||||
val accountUser = accountUserState?.user ?: return
|
||||
|
||||
val coroutineScope = rememberCoroutineScope()
|
||||
|
||||
val clipboardManager = LocalClipboardManager.current
|
||||
|
||||
Box {
|
||||
DrawBanner(baseUser)
|
||||
|
||||
@@ -310,12 +311,23 @@ private fun ProfileHeader(
|
||||
) {
|
||||
|
||||
UserPicture(
|
||||
baseUser, navController, account.userProfile(), 100.dp,
|
||||
baseUser = baseUser,
|
||||
baseUserAccount = account.userProfile(),
|
||||
size = 100.dp,
|
||||
pictureModifier = Modifier.border(
|
||||
3.dp,
|
||||
MaterialTheme.colors.background,
|
||||
CircleShape
|
||||
)
|
||||
CircleShape),
|
||||
onClick = {
|
||||
navController.navigate("User/${it.pubkeyHex}")
|
||||
},
|
||||
onLongClick = {
|
||||
ResizeImage(it.info?.picture, 100.dp).proxyUrl()?.let { it1 ->
|
||||
clipboardManager.setText(
|
||||
AnnotatedString(it1)
|
||||
)
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
Spacer(Modifier.weight(1f))
|
||||
@@ -441,12 +453,14 @@ private fun DrawAdditionalInfo(baseUser: User, account: Account) {
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalFoundationApi::class)
|
||||
@Composable
|
||||
private fun DrawBanner(baseUser: User) {
|
||||
val userState by baseUser.live().metadata.observeAsState()
|
||||
val user = userState?.user ?: return
|
||||
|
||||
val banner = user.info?.banner
|
||||
val clipboardManager = LocalClipboardManager.current
|
||||
|
||||
if (banner != null && banner.isNotBlank()) {
|
||||
AsyncImageProxy(
|
||||
@@ -455,7 +469,12 @@ private fun DrawBanner(baseUser: User) {
|
||||
contentScale = ContentScale.FillWidth,
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.height(125.dp)
|
||||
.height(125.dp).combinedClickable(
|
||||
onClick = {},
|
||||
onLongClick = {
|
||||
clipboardManager.setText(AnnotatedString(banner))
|
||||
}
|
||||
)
|
||||
)
|
||||
} else {
|
||||
Image(
|
||||
|
||||
Reference in New Issue
Block a user