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


package com.monika.orangesky

import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.monika.orangesky.data.AppDatabase
import com.monika.orangesky.data.Post
import kotlinx.coroutines.launch

@Composable
fun HomeScreen(database: AppDatabase) {
    var postContent by remember { mutableStateOf("") }
    val scope = rememberCoroutineScope()
    val posts by database.postDao().getAllPosts().collectAsState(initial = emptyList())

    Column(modifier = Modifier.fillMaxSize().padding(16.dp)) {
        OutlinedTextField(
            value = postContent,
            onValueChange = { postContent = it },
            label = { Text("Что нового?") },
            modifier = Modifier.fillMaxWidth()
        )
        
        Button(
            onClick = {
                if (postContent.isNotBlank()) {
                    scope.launch {
                        database.postDao().insertPost(
                            Post(username = "Оливер", content = postContent)
                        )
                        postContent = ""
                    }
                }
            },
            modifier = Modifier.fillMaxWidth().padding(vertical = 8.dp)
        ) {
            Text("Опубликовать")
        }

        Spacer(modifier = Modifier.height(8.dp))

        LazyColumn(modifier = Modifier.fillMaxSize()) {
            items(posts) { post ->
                Card(
                    modifier = Modifier.fillMaxWidth().padding(vertical = 4.dp)
                ) {
                    Column(modifier = Modifier.padding(12.dp)) {
                        Text(text = "@${post.username}", style = MaterialTheme.colorScheme.primary)
                        Spacer(modifier = Modifier.height(4.dp))
                        Text(text = post.content)
                    }
                }
            }
        }
    }
}