feat: Add profile photo menu and avatar menu functionality in ProfileScreen

This commit is contained in:
2026-01-22 18:17:31 +05:00
parent ad69af9fd3
commit 5cd6968b06
2 changed files with 111 additions and 2 deletions

View File

@@ -741,3 +741,69 @@ private fun KebabMenuItem(
contentPadding = PaddingValues(horizontal = 12.dp, vertical = 12.dp)
)
}
/** Profile photo menu for avatar */
@Composable
fun ProfilePhotoMenu(
expanded: Boolean,
onDismiss: () -> Unit,
isDarkTheme: Boolean,
onSetPhotoClick: () -> Unit
) {
DropdownMenu(
expanded = expanded,
onDismissRequest = onDismiss,
modifier = Modifier.width(220.dp),
properties = PopupProperties(
focusable = true,
dismissOnBackPress = true,
dismissOnClickOutside = true
)
) {
ProfilePhotoMenuItem(
icon = Icons.Default.AddAPhoto,
text = "Set Profile Photo",
onClick = onSetPhotoClick,
tintColor = PrimaryBlue,
textColor = if (isDarkTheme) Color.White else Color.Black
)
}
}
@Composable
private fun ProfilePhotoMenuItem(
icon: ImageVector,
text: String,
onClick: () -> Unit,
tintColor: Color,
textColor: Color
) {
val interactionSource = remember { MutableInteractionSource() }
DropdownMenuItem(
text = {
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.fillMaxWidth()
) {
Icon(
imageVector = icon,
contentDescription = null,
tint = tintColor,
modifier = Modifier.size(24.dp)
)
Spacer(modifier = Modifier.width(14.dp))
Text(
text = text,
color = textColor,
fontSize = 16.sp,
fontWeight = FontWeight.Medium
)
}
},
onClick = onClick,
modifier = Modifier.fillMaxWidth().padding(horizontal = 4.dp),
interactionSource = interactionSource,
contentPadding = PaddingValues(horizontal = 12.dp, vertical = 12.dp)
)
}