Загрузка данных


package com.monika.orangesky

import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp

@Composable
fun HomeScreen(onUserClick: (String) -> Unit, onLogout: () -> Unit) {
    var selectedTab by remember { mutableIntStateOf(0) }
    val winterIceBlue = Color(0xFF1E3F66)
    val snowBackground = Color(0xFFF0F4F8)
    val iceSubtle = Color(0xFFD8E2EC)

    Column(
        modifier = Modifier
            .fillMaxSize()
            .background(snowBackground)
    ) {
        Row(
            modifier = Modifier
                .fillMaxWidth()
                .background(winterIceBlue)
                .padding(12.dp),
            horizontalArrangement = Arrangement.SpaceBetween,
            verticalAlignment = Alignment.CenterVertically
        ) {
            Text("❄️ the facebook", color = Color.White, fontWeight = FontWeight.Bold, fontSize = 20.sp)
            TextButton(onClick = onLogout) {
                Text("Logout", color = Color.White)
            }
        }

        Row(modifier = Modifier.fillMaxWidth().background(iceSubtle)) {
            TabButton("Directory", selectedTab == 0) { selectedTab = 0 }
            TabButton("❄️ Winter Wall", selectedTab == 1) { selectedTab = 1 }
        }

        if (selectedTab == 0) {
            LazyColumn(
                modifier = Modifier.fillMaxSize().padding(8.dp),
                verticalArrangement = Arrangement.spacedBy(6.dp)
            ) {
                item {
                    Text(
                        "❄️ Harvard Directory — Winter Term 2004",
                        fontWeight = FontWeight.Bold,
                        color = Color.DarkGray,
                        modifier = Modifier.padding(4.dp)
                    )
                }
                items(DataSource.users) { user ->
                    Card(
                        colors = CardDefaults.cardColors(containerColor = Color.White),
                        elevation = CardDefaults.cardElevation(2.dp),
                        modifier = Modifier
                            .fillMaxWidth()
                            .clickable { onUserClick(user.id) }
                    ) {
                        Column(modifier = Modifier.padding(12.dp)) {
                            Text(user.name, fontWeight = FontWeight.Bold, color = winterIceBlue, fontSize = 16.sp)
                            Text("House: ${user.house}", fontSize = 12.sp, color = Color.Gray)
                            Text("Status: ${user.status}", fontSize = 14.sp, modifier = Modifier.padding(top = 4.dp))
                        }
                    }
                }
            }
        } else {
            var newPostText by remember { mutableStateOf("") }
            Column(modifier = Modifier.fillMaxSize().padding(8.dp)) {
                Card(
                    colors = CardDefaults.cardColors(containerColor = Color.White),
                    modifier = Modifier.fillMaxWidth()
                ) {
                    Column(modifier = Modifier.padding(8.dp)) {
                        OutlinedTextField(
                            value = newPostText,
                            onValueChange = { newPostText = it },
                            label = { Text("Post a New Year note...") },
                            modifier = Modifier.fillMaxWidth()
                        )
                        Spacer(modifier = Modifier.height(4.dp))
                        Button(
                            onClick = {
                                if (newPostText.isNotBlank()) {
                                    DataSource.wallPosts.add(
                                        0,
                                        WallPost(
                                            id = System.currentTimeMillis().toString(),
                                            authorName = "You",
                                            text = "❄️ $newPostText",
                                            time = "Just now"
                                        )
                                    )
                                    newPostText = ""
                                }
                            },
                            colors = ButtonDefaults.buttonColors(containerColor = winterIceBlue)
                        ) {
                            Text("Post to Wall")
                        }
                    }
                }
                Spacer(modifier = Modifier.height(8.dp))
                LazyColumn(
                    verticalArrangement = Arrangement.spacedBy(6.dp),
                    modifier = Modifier.fillMaxSize()
                ) {
                    items(DataSource.wallPosts) { post ->
                        Card(
                            colors = CardDefaults.cardColors(containerColor = Color.White),
                            modifier = Modifier.fillMaxWidth()
                        ) {
                            Column(modifier = Modifier.padding(10.dp)) {
                                Row(
                                    horizontalArrangement = Arrangement.SpaceBetween,
                                    modifier = Modifier.fillMaxWidth()
                                ) {
                                    Text(post.authorName, fontWeight = FontWeight.Bold, color = winterIceBlue, fontSize = 13.sp)
                                    Text(post.time, fontSize = 10.sp, color = Color.Gray)
                                }
                                Text(post.text, fontSize = 14.sp, modifier = Modifier.padding(top = 2.dp))
                            }
                        }
                    }
                }
            }
        }
    }
}

@Composable
fun RowScope.TabButton(text: String, selected: Boolean, onClick: () -> Unit) {
    Button(
        onClick = onClick,
        colors = ButtonDefaults.buttonColors(
            containerColor = if (selected) Color(0xFF1E3F66) else Color.Transparent
        ),
        shape = RoundedCornerShape(0.dp),
        modifier = Modifier.weight(1f)
    ) {
        Text(text, color = if (selected) Color.White else Color.DarkGray, fontSize = 12.sp)
    }
}