diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt index 5913ca458..3afb6d845 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt @@ -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 diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ProfileScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ProfileScreen.kt index 179d99abf..b16677610 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ProfileScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ProfileScreen.kt @@ -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(