@@ -23,8 +23,8 @@ import org.koin.core.component.inject
2323
2424
2525sealed class CountryDetailsUIState {
26- object NoCountrySelected : CountryDetailsUIState()
27- object Loading : CountryDetailsUIState()
26+ data object NoCountrySelected : CountryDetailsUIState ()
27+ data object Loading : CountryDetailsUIState ()
2828 data class Error (val message : String ) : CountryDetailsUIState()
2929 data class Success (
3030 val country : Country ,
@@ -64,35 +64,29 @@ open class CountryDetailsViewModel : ViewModel(), KoinComponent {
6464 fun CountryDetailsPresenter (events : Flow <CountryDetailsEvents >): CountryDetailsUIState {
6565 var uiState by remember { mutableStateOf<CountryDetailsUIState >(CountryDetailsUIState .NoCountrySelected ) }
6666 var selectedCountry by remember { mutableStateOf<Country ?>(null ) }
67- var selectedYear by remember { mutableStateOf< String > (" 2022" ) }
67+ var selectedYear by remember { mutableStateOf(" 2022" ) }
6868
6969 var countryEmissionInfo by remember { mutableStateOf<CountryEmissionsInfo ?>(null ) }
7070 var countryAssetEmissionsList by remember { mutableStateOf<List <CountryAssetEmissionsInfo >>(emptyList()) }
7171
7272 LaunchedEffect (Unit ) {
7373 events.collect { event ->
7474 when (event) {
75- is CountryDetailsEvents .SetCountry -> {
76- selectedCountry = event.country
77- selectedCountry?.let { country ->
78- uiState = CountryDetailsUIState .Loading
79- countryEmissionInfo = climateTraceRepository.fetchCountryEmissionsInfo(country.alpha3, selectedYear).firstOrNull()
80- countryAssetEmissionsList = climateTraceRepository.fetchCountryAssetEmissionsInfo(country.alpha3)
81- uiState = CountryDetailsUIState .Success (country, selectedYear, countryEmissionInfo, countryAssetEmissionsList)
82- }
83- }
84-
85- is CountryDetailsEvents .SetYear -> {
86- selectedCountry?.let { country ->
87- selectedYear = event.year
88- countryEmissionInfo = climateTraceRepository.fetchCountryEmissionsInfo(country.alpha3, selectedYear).firstOrNull()
89- uiState = CountryDetailsUIState .Success (country, selectedYear, countryEmissionInfo, countryAssetEmissionsList)
90- }
91- }
75+ is CountryDetailsEvents .SetCountry -> selectedCountry = event.country
76+ is CountryDetailsEvents .SetYear -> selectedYear = event.year
9277 }
9378 }
9479 }
9580
81+ LaunchedEffect (selectedCountry, selectedYear) {
82+ selectedCountry?.let { country ->
83+ uiState = CountryDetailsUIState .Loading
84+ countryEmissionInfo = climateTraceRepository.fetchCountryEmissionsInfo(country.alpha3, selectedYear).firstOrNull()
85+ countryAssetEmissionsList = climateTraceRepository.fetchCountryAssetEmissionsInfo(country.alpha3)
86+ uiState = CountryDetailsUIState .Success (country, selectedYear, countryEmissionInfo, countryAssetEmissionsList)
87+ }
88+ }
89+
9690 return uiState
9791 }
9892}
0 commit comments