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


package com.example.monika

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Menu
import androidx.compose.material.icons.filled.Send
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
import com.google.ai.client.generativeai.GenerativeModel
import kotlinx.coroutines.launch

class MainActivity : ComponentActivity() {

    private val modelName = "gemini-1.5-flash"
    private val apiKey = "ТВОЙ_КЛЮЧ_СЮДА" // Вставь свой ключ

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        
        val generativeModel = GenerativeModel(modelName, apiKey)

        setContent {
            MaterialTheme {
                val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed)
                val scope = rememberCoroutineScope()
                var mainInputText by remember { mutableStateOf("") }
                var statusText by remember { mutableStateOf("") }

                ModalNavigationDrawer(
                    drawerState = drawerState,
                    drawerContent = {
                        ModalDrawerSheet {
                            Column(modifier = Modifier.padding(16.dp)) {
                                Text("Меню", fontSize = 20.sp, fontWeight = FontWeight.Bold)
                                Spacer(modifier = Modifier.height(16.dp))
                                NavigationDrawerItem(
                                    label = { Text("Создать новый чат") },
                                    selected = false,
                                    onClick = { scope.launch { drawerState.close() } }
                                )
                            }
                        }
                    }
                ) {
                    Scaffold(
                        topBar = {
                            Box(modifier = Modifier.fillMaxWidth().padding(16.dp)) {
                                IconButton(onClick = { scope.launch { drawerState.open() } }, modifier = Modifier.align(Alignment.CenterStart)) {
                                    Icon(Icons.Default.Menu, contentDescription = "Меню")
                                }
                                Text("Monika", fontSize = 20.sp, fontWeight = FontWeight.Bold, modifier = Modifier.align(Alignment.Center))
                            }
                        }
                    ) { paddingValues ->
                        Column(modifier = Modifier.fillMaxSize().padding(paddingValues).padding(16.dp)) {
                            Text("Здравствуйте!", fontSize = 42.sp, fontWeight = FontWeight.Bold, color = Color.Black)
                            Text("Начнем общение?", fontSize = 18.sp, color = Color.Gray)
                            Text(text = statusText, color = Color.Gray, fontSize = 14.sp)
                            
                            Spacer(modifier = Modifier.weight(1f))

                            Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) {
                                // Кастомное поле ввода
                                Box(
                                    modifier = Modifier
                                        .weight(1f)
                                        .background(Color(0xFFF0F0F0), RoundedCornerShape(25.dp))
                                        .padding(horizontal = 16.dp, vertical = 8.dp)
                                ) {
                                    if (mainInputText.isEmpty()) {
                                        Text("Спросить Монику....", color = Color.Gray, modifier = Modifier.padding(8.dp))
                                    }
                                    TextField(
                                        value = mainInputText,
                                        onValueChange = { mainInputText = it },
                                        colors = TextFieldDefaults.colors(
                                            focusedContainerColor = Color.Transparent,
                                            unfocusedContainerColor = Color.Transparent,
                                            focusedIndicatorColor = Color.Transparent,
                                            unfocusedIndicatorColor = Color.Transparent
                                        ),
                                        modifier = Modifier.fillMaxWidth()
                                    )
                                }
                                Spacer(modifier = Modifier.width(8.dp))
                                IconButton(onClick = {
                                    if (mainInputText.isNotBlank()) {
                                        scope.launch {
                                            statusText = "пишу ответ...."
                                            try {
                                                val response = generativeModel.generateContent(mainInputText)
                                                statusText = "Ответ: ${response.text}"
                                            } catch (e: Exception) {
                                                statusText = "Ошибка: ${e.message}"
                                            }
                                        }
                                    }
                                }) {
                                    Icon(Icons.Default.Send, contentDescription = "Отправить")
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}