package com.socialapp.presentation.ui.screens import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Favorite import androidx.compose.material.icons.filled.FavoriteBorder import androidx.compose.material.icons.filled.ChatBubbleOutline import androidx.compose.material.icons.filled.Share import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.hilt.navigation.compose.hiltViewModel import coil.compose.AsyncImage import com.socialapp.data.api.Post import com.socialapp.presentation.ui.theme.AccentMagenta import com.socialapp.presentation.viewmodel.PostViewModel @Composable fun ReelScreen( viewModel: PostViewModel = hiltViewModel(), onBackClick: () -> Unit = {}, onProfileClick: (Int) -> Unit = {} ) { val posts = viewModel.posts.value if (posts.isEmpty()) { Box( modifier = Modifier .fillMaxSize() .background(MaterialTheme.colorScheme.background), contentAlignment = Alignment.Center ) { Text("No reels available", color = MaterialTheme.colorScheme.onBackground) } return } val reel = posts.first() Box( modifier = Modifier .fillMaxSize() .background(MaterialTheme.colorScheme.background) ) { // Video Content - Full Screen Box( modifier = Modifier .fillMaxSize() .background(MaterialTheme.colorScheme.onBackground.copy(alpha = 0.1f)) ) { if (!reel.mediaUrl.isNullOrEmpty()) { AsyncImage( model = reel.mediaUrl.firstOrNull(), contentDescription = "Reel Content", modifier = Modifier.fillMaxSize(), contentScale = ContentScale.Crop ) } } // Header Row( modifier = Modifier .fillMaxWidth() .padding(16.dp), horizontalArrangement = androidx.compose.foundation.layout.Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically ) { IconButton(onClick = onBackClick, modifier = Modifier.size(36.dp)) { Icon( imageVector = Icons.Default.FavoriteBorder, contentDescription = "Back", tint = MaterialTheme.colorScheme.background, modifier = Modifier.size(20.dp) ) } Row { Text( text = "Following", fontSize = 14.sp, color = MaterialTheme.colorScheme.background, fontWeight = FontWeight.SemiBold ) Spacer(modifier = Modifier.width(24.dp)) Text( text = "Trending", fontSize = 14.sp, color = MaterialTheme.colorScheme.background.copy(alpha = 0.6f) ) } } // Right Side Action Bar Column( modifier = Modifier .align(Alignment.CenterEnd) .padding(end = 16.dp), horizontalAlignment = Alignment.CenterHorizontally ) { IconButton( onClick = { /* Like reel */ }, modifier = Modifier.size(48.dp) ) { Icon( imageVector = Icons.Default.FavoriteBorder, contentDescription = "Like", tint = MaterialTheme.colorScheme.background, modifier = Modifier.size(24.dp) ) } Text( text = "${reel.likesCount}", fontSize = 12.sp, color = MaterialTheme.colorScheme.background, fontWeight = FontWeight.SemiBold ) Spacer(modifier = Modifier.height(12.dp)) IconButton( onClick = { /* Comment */ }, modifier = Modifier.size(48.dp) ) { Icon( imageVector = Icons.Default.ChatBubbleOutline, contentDescription = "Comment", tint = MaterialTheme.colorScheme.background, modifier = Modifier.size(24.dp) ) } Text( text = "${reel.commentsCount}", fontSize = 12.sp, color = MaterialTheme.colorScheme.background, fontWeight = FontWeight.SemiBold ) Spacer(modifier = Modifier.height(12.dp)) IconButton( onClick = { /* Share */ }, modifier = Modifier.size(48.dp) ) { Icon( imageVector = Icons.Default.Share, contentDescription = "Share", tint = MaterialTheme.colorScheme.background, modifier = Modifier.size(24.dp) ) } } // Bottom User Info Column( modifier = Modifier .align(Alignment.BottomStart) .fillMaxWidth() .padding(16.dp) ) { Row( verticalAlignment = Alignment.CenterVertically, modifier = Modifier.fillMaxWidth() ) { Box( modifier = Modifier .size(48.dp) .clip(CircleShape) .background(AccentMagenta.copy(alpha = 0.3f)), contentAlignment = Alignment.Center ) { Text( text = reel.username.firstOrNull()?.toString() ?: "U", fontSize = 20.sp, fontWeight = FontWeight.Bold, color = AccentMagenta ) } Spacer(modifier = Modifier.width(12.dp)) Column(modifier = Modifier.weight(1f)) { Text( text = reel.username, fontSize = 14.sp, fontWeight = FontWeight.SemiBold, color = MaterialTheme.colorScheme.background ) Text( text = "Just now", fontSize = 12.sp, color = MaterialTheme.colorScheme.background.copy(alpha = 0.7f) ) } Button( onClick = { /* Follow */ }, modifier = Modifier .height(36.dp) .width(80.dp), colors = ButtonDefaults.buttonColors( containerColor = AccentMagenta ), shape = RoundedCornerShape(16.dp) ) { Text("Follow", fontSize = 12.sp, fontWeight = FontWeight.SemiBold) } } Spacer(modifier = Modifier.height(12.dp)) if (reel.content.isNotEmpty()) { Text( text = reel.content, fontSize = 13.sp, color = MaterialTheme.colorScheme.background, fontWeight = FontWeight.Medium ) } } } }