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


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.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.*
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 com.google.ai.client.generativeai.type.content

class MainActivity : ComponentActivity() {

    private val generativeModel = GenerativeModel(
        modelName = "gemini-1.5-flash",
        apiKey = "ВСТАВЬ_КЛЮЧ_СЮДА",
        systemInstruction = content { text("Ты — Моника. Создатель — Оливер Тимербулатов. Не упоминай Gemini/Google.") }
    )

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            MaterialTheme {
                val messages = remember { mutableStateListOf<ChatMessage>() }
                var inputText by remember { mutableStateOf("") }
                var isChatStarted by remember { mutableStateOf(false) }

                Scaffold(
                    topBar = {
                        Row(modifier = Modifier.fillMaxWidth().padding(16.dp), verticalAlignment = Alignment.CenterVertically) {
                            Icon(Icons.Default.Menu, "Меню")
                            Spacer(modifier = Modifier.weight(1f))
                            Text("Monika", fontSize = 20.sp, fontWeight = FontWeight.Bold)
                            Spacer(modifier = Modifier.weight(1f))
                            Icon(Icons.Default.Settings, "Настройки")
                        }
                    }
                ) { padding ->
                    Column(modifier = Modifier.padding(padding).fillMaxSize()) {
                        
                        // Начальный экран
                        if (!isChatStarted) {
                            Column(modifier = Modifier.fillMaxSize(), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally) {
                                Text("Здравствуйте!", fontSize = 42.sp, fontWeight = FontWeight.Bold)
                                Text("Начнем общение?", fontSize = 18.sp, color = Color.Gray)
                            }
                        } else {
                            LazyColumn(modifier = Modifier.weight(1f).padding(8.dp)) {
                                items(messages) { msg ->
                                    Box(modifier = Modifier.fillMaxWidth().padding(vertical = 4.dp), contentAlignment = if (msg.isUser) Alignment.CenterEnd else Alignment.CenterStart) {
                                        Text(
                                            text = msg.text,
                                            modifier = Modifier
                                                .background(if (msg.isUser) MaterialTheme.colorScheme.primary else Color.Transparent, RoundedCornerShape(16.dp))
                                                .padding(12.dp),
                                            color = if (msg.isUser) Color.White else MaterialTheme.colorScheme.onSurface
                                        )
                                    }
                                }
                            }
                        }

                        // Поле ввода
                        Surface(modifier = Modifier.fillMaxWidth().padding(8.dp), shape = RoundedCornerShape(25.dp), color = MaterialTheme.colorScheme.surfaceVariant) {
                            Row(verticalAlignment = Alignment.CenterVertically, modifier = Modifier.padding(horizontal = 8.dp)) {
                                IconButton(onClick = {}) { Icon(Icons.Default.Add, null) }
                                OutlinedTextField(
                                    value = inputText,
                                    onValueChange = { inputText = it },
                                    modifier = Modifier.weight(1f),
                                    placeholder = { Text("Спросить Монику....") },
                                    colors = TextFieldDefaults.colors(focusedContainerColor = Color.Transparent, unfocusedContainerColor = Color.Transparent)
                                )
                                IconButton(onClick = {
                                    if (inputText.isNotBlank()) {
                                        isChatStarted = true
                                        messages.add(ChatMessage(inputText, true))
                                        // Здесь вызов нейросети...
                                        inputText = ""
                                    }
                                }) { Icon(Icons.Default.Send, null) }
                            }
                        }
                    }
                }
            }
        }
    }
}

data class ChatMessage(val text: String, val isUser: Boolean)