main #24

Merged
andy merged 33 commits from main into dev 2025-03-08 22:13:53 +03:00
2 changed files with 69 additions and 29 deletions
Showing only changes of commit d3d7bd391b - Show all commits

View File

@ -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}"
} ?: "Ошибка загрузки данных страха и жадности"
}
}
// Отображаем результаты в виде простой страницы
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)
}
}

View File

@ -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]