@@ -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 ( )  {  
		
	
		
			
				    // Создаем репозиторий для работы с  
 
		
	
		
			
				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} \n 24h Объем:  ${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 ) 
 
		
	
		
			
				    } 
 
		
	
		
			
				}