From 3142cd79f6f199be2dbab6dea472eb2a933a1847 Mon Sep 17 00:00:00 2001 From: andy Date: Mon, 3 Mar 2025 21:51:02 +0500 Subject: [PATCH] Dependencies updated and example screen added --- .../bitcoin_summarizer/MainActivity.kt | 80 ++++++++++++++----- gradle/libs.versions.toml | 18 ++--- 2 files changed, 69 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/ru/vendetti/bitcoin_summarizer/MainActivity.kt b/app/src/main/java/ru/vendetti/bitcoin_summarizer/MainActivity.kt index 939957a..fb576a0 100644 --- a/app/src/main/java/ru/vendetti/bitcoin_summarizer/MainActivity.kt +++ b/app/src/main/java/ru/vendetti/bitcoin_summarizer/MainActivity.kt @@ -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) } -@Preview(showBackground = true) -@Composable -fun GreetingPreview() { - BitcoinSummarizerTheme { - Greeting("Android") + // Состояния для хранения результатов запросов + 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}" + } ?: "Ошибка загрузки данных страха и жадности" } -} \ No newline at end of file + + // Отображаем результаты в виде простой страницы + 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) + } +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0e95e5e..d007579 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -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]