package ru.vendetti.bitcoin_summarizer import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import ru.vendetti.bitcoin_summarizer.ui.theme.BitcoinSummarizerTheme class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { BitcoinSummarizerTheme { CryptoScreen() } } } } @Composable fun CryptoScreen() { // Создаем репозиторий для работы с API val cryptoRepository = remember { CryptoRepository(RetrofitClient.apiService) } // Состояния для хранения результатов запросов var bitcoinTicker by remember { mutableStateOf("Загрузка Bitcoin Ticker...") } var globalData by remember { mutableStateOf("Загрузка глобальных данных...") } var fearGreedData by remember { mutableStateOf("Загрузка индекса страха и жадности...") } // Запускаем корутину для выполнения сетевых запросов LaunchedEffect(Unit) { // Запрос Bitcoin Ticker val tickerResponse = cryptoRepository.fetchBitcoinTicker() bitcoinTicker = tickerResponse?.joinToString(separator = "\n") { data -> "Название: ${data.name}, Цена: ${data.priceUsd}, Обновлено: ${data.lastUpdated}" } ?: "Ошибка загрузки Bitcoin Ticker" // Запрос глобальных данных val globalResponse = cryptoRepository.fetchGlobalData() globalData = globalResponse?.let { data -> "Активных криптовалют: ${data.activeCryptocurrencies}\nРыночная капитализация: ${data.totalMarketCapUsd}\n24h Объем: ${data.total24hVolumeUsd}" } ?: "Ошибка загрузки глобальных данных" // Запрос индекса страха и жадности val fearResponse = cryptoRepository.fetchFearAndGreedData(30) fearGreedData = fearResponse?.dataList?.joinToString(separator = "\n") { data -> "Время: ${data.timestamp}, Значение: ${data.value}, Классификация: ${data.valueClassification}" } ?: "Ошибка загрузки данных страха и жадности" } // Отображаем результаты в виде простой страницы Column( modifier = Modifier .fillMaxSize() .padding(16.dp) .verticalScroll(rememberScrollState()) ) { Text(text = "Bitcoin Ticker Data", style = MaterialTheme.typography.bodyMedium) Text(text = bitcoinTicker) Spacer(modifier = Modifier.height(16.dp)) Text(text = "Global Data", style = MaterialTheme.typography.bodyMedium) Text(text = globalData) Spacer(modifier = Modifier.height(16.dp)) Text(text = "Fear & Greed Index", style = MaterialTheme.typography.bodyMedium) Text(text = fearGreedData) } }