Dependencies updated and example screen added
This commit is contained in:
		| @@ -4,13 +4,23 @@ import android.os.Bundle | ||||
| import androidx.activity.ComponentActivity | ||||
| import androidx.activity.compose.setContent | ||||
| import androidx.activity.enableEdgeToEdge | ||||
| 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.material3.Scaffold | ||||
| 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.tooling.preview.Preview | ||||
| import androidx.compose.ui.unit.dp | ||||
| import ru.vendetti.bitcoin_summarizer.ui.theme.BitcoinSummarizerTheme | ||||
|  | ||||
| class MainActivity : ComponentActivity() { | ||||
| @@ -19,29 +29,59 @@ class MainActivity : ComponentActivity() { | ||||
|         enableEdgeToEdge() | ||||
|         setContent { | ||||
|             BitcoinSummarizerTheme { | ||||
|                 Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> | ||||
|                     Greeting( | ||||
|                         name = "Android", | ||||
|                         modifier = Modifier.padding(innerPadding) | ||||
|                     ) | ||||
|                 } | ||||
|                 CryptoScreen() | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @Composable | ||||
| fun Greeting(name: String, modifier: Modifier = Modifier) { | ||||
|     Text( | ||||
|         text = "Hello $name!", | ||||
|         modifier = modifier | ||||
|     ) | ||||
| 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?.data?.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}" | ||||
|         } ?: "Ошибка загрузки данных страха и жадности" | ||||
|     } | ||||
|  | ||||
| @Preview(showBackground = true) | ||||
| @Composable | ||||
| fun GreetingPreview() { | ||||
|     BitcoinSummarizerTheme { | ||||
|         Greeting("Android") | ||||
|     // Отображаем результаты в виде простой страницы | ||||
|     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) | ||||
|     } | ||||
| } | ||||
| @@ -1,16 +1,16 @@ | ||||
| [versions] | ||||
| agp = "8.8.1" | ||||
| agp = "8.8.2" | ||||
| converterGson = "2.9.0" | ||||
| kotlin = "2.0.0" | ||||
| coreKtx = "1.10.1" | ||||
| coreKtx = "1.15.0" | ||||
| junit = "4.13.2" | ||||
| junitVersion = "1.1.5" | ||||
| espressoCore = "3.5.1" | ||||
| kotlinxCoroutinesAndroid = "1.7.1" | ||||
| kotlinxCoroutinesCore = "1.7.1" | ||||
| lifecycleRuntimeKtx = "2.6.1" | ||||
| activityCompose = "1.8.0" | ||||
| composeBom = "2024.04.01" | ||||
| junitVersion = "1.2.1" | ||||
| espressoCore = "3.6.1" | ||||
| kotlinxCoroutinesAndroid = "1.7.3" | ||||
| kotlinxCoroutinesCore = "1.7.3" | ||||
| lifecycleRuntimeKtx = "2.8.7" | ||||
| activityCompose = "1.10.1" | ||||
| composeBom = "2025.02.00" | ||||
| retrofit = "2.9.0" | ||||
|  | ||||
| [libraries] | ||||
|   | ||||
		Reference in New Issue
	
	Block a user