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
|
@Composable
|
||||||
fun UserPicture(
|
fun UserPicture(
|
||||||
baseUser: User,
|
baseUser: User,
|
||||||
baseUserAccount: User,
|
baseUserAccount: User,
|
||||||
size: Dp,
|
size: Dp,
|
||||||
pictureModifier: Modifier = Modifier,
|
pictureModifier: Modifier = Modifier,
|
||||||
onClick: ((User) -> Unit)? = null
|
onClick: ((User) -> Unit)? = null,
|
||||||
|
onLongClick: ((User) -> Unit)? = null
|
||||||
) {
|
) {
|
||||||
val userState by baseUser.live().metadata.observeAsState()
|
val userState by baseUser.live().metadata.observeAsState()
|
||||||
val user = userState?.user ?: return
|
val user = userState?.user ?: return
|
||||||
@@ -519,7 +521,9 @@ fun UserPicture(
|
|||||||
.clip(shape = CircleShape)
|
.clip(shape = CircleShape)
|
||||||
.background(MaterialTheme.colors.background)
|
.background(MaterialTheme.colors.background)
|
||||||
.run {
|
.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) } )
|
this.clickable(onClick = { onClick(user) } )
|
||||||
else
|
else
|
||||||
this
|
this
|
||||||
|
|||||||
@@ -265,7 +265,8 @@ private fun ProfileHeader(
|
|||||||
val accountUser = accountUserState?.user ?: return
|
val accountUser = accountUserState?.user ?: return
|
||||||
|
|
||||||
val coroutineScope = rememberCoroutineScope()
|
val coroutineScope = rememberCoroutineScope()
|
||||||
|
val clipboardManager = LocalClipboardManager.current
|
||||||
|
|
||||||
Box {
|
Box {
|
||||||
DrawBanner(baseUser)
|
DrawBanner(baseUser)
|
||||||
|
|
||||||
@@ -310,12 +311,23 @@ private fun ProfileHeader(
|
|||||||
) {
|
) {
|
||||||
|
|
||||||
UserPicture(
|
UserPicture(
|
||||||
baseUser, navController, account.userProfile(), 100.dp,
|
baseUser = baseUser,
|
||||||
|
baseUserAccount = account.userProfile(),
|
||||||
|
size = 100.dp,
|
||||||
pictureModifier = Modifier.border(
|
pictureModifier = Modifier.border(
|
||||||
3.dp,
|
3.dp,
|
||||||
MaterialTheme.colors.background,
|
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))
|
Spacer(Modifier.weight(1f))
|
||||||
@@ -441,12 +453,14 @@ private fun DrawAdditionalInfo(baseUser: User, account: Account) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OptIn(ExperimentalFoundationApi::class)
|
||||||
@Composable
|
@Composable
|
||||||
private fun DrawBanner(baseUser: User) {
|
private fun DrawBanner(baseUser: User) {
|
||||||
val userState by baseUser.live().metadata.observeAsState()
|
val userState by baseUser.live().metadata.observeAsState()
|
||||||
val user = userState?.user ?: return
|
val user = userState?.user ?: return
|
||||||
|
|
||||||
val banner = user.info?.banner
|
val banner = user.info?.banner
|
||||||
|
val clipboardManager = LocalClipboardManager.current
|
||||||
|
|
||||||
if (banner != null && banner.isNotBlank()) {
|
if (banner != null && banner.isNotBlank()) {
|
||||||
AsyncImageProxy(
|
AsyncImageProxy(
|
||||||
@@ -455,7 +469,12 @@ private fun DrawBanner(baseUser: User) {
|
|||||||
contentScale = ContentScale.FillWidth,
|
contentScale = ContentScale.FillWidth,
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.height(125.dp)
|
.height(125.dp).combinedClickable(
|
||||||
|
onClick = {},
|
||||||
|
onLongClick = {
|
||||||
|
clipboardManager.setText(AnnotatedString(banner))
|
||||||
|
}
|
||||||
|
)
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
Image(
|
Image(
|
||||||
|
|||||||
Reference in New Issue
Block a user