import android.net.Uri
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.unit.dp
import coil.compose.rememberAsyncImagePainter
@Composable
fun UserProfileScreen(nickname: String, currentPhotoUrl: String?) {
var selectedImageUri by remember { mutableStateOf<Uri?>(null) }
val photoPickerLauncher = rememberLauncherForActivityResult(
contract = ActivityResultContracts.PickVisualMedia()
) { uri ->
if (uri != null) {
selectedImageUri = uri
uploadPhotoToFirebase(uri, nickname)
}
}
Column(
modifier = Modifier
.fillMaxSize()
.background(Color(0xFFF4F8EC))
.padding(16.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
Spacer(modifier = Modifier.height(40.dp))
Box(
modifier = Modifier
.size(150.dp)
.clip(CircleShape)
.border(4.dp, Color(0xFFD8E2DC), CircleShape)
.background(Color.White)
.clickable {
photoPickerLauncher.launch(
androidx.activity.result.PickVisualMediaRequest(
ActivityResultContracts.PickVisualMedia.ImageOnly
)
)
},
contentAlignment = Alignment.Center
) {
val imagePainter = rememberAsyncImagePainter(
model = selectedImageUri ?: currentPhotoUrl ?: ""
)
Image(
painter = imagePainter,
contentDescription = "Аватарка пользователя",
modifier = Modifier.fillMaxSize(),
contentScale = ContentScale.Crop
)
}
Spacer(modifier = Modifier.height(24.dp))
Text(
text = nickname,
style = MaterialTheme.typography.headlineMedium,
color = Color(0xFF5A5A5A)
)
}
}