@@ -23,8 +23,8 @@ import org.koin.core.component.inject
23
23
24
24
25
25
sealed class CountryDetailsUIState {
26
- object NoCountrySelected : CountryDetailsUIState()
27
- object Loading : CountryDetailsUIState()
26
+ data object NoCountrySelected : CountryDetailsUIState ()
27
+ data object Loading : CountryDetailsUIState ()
28
28
data class Error (val message : String ) : CountryDetailsUIState()
29
29
data class Success (
30
30
val country : Country ,
@@ -64,35 +64,29 @@ open class CountryDetailsViewModel : ViewModel(), KoinComponent {
64
64
fun CountryDetailsPresenter (events : Flow <CountryDetailsEvents >): CountryDetailsUIState {
65
65
var uiState by remember { mutableStateOf<CountryDetailsUIState >(CountryDetailsUIState .NoCountrySelected ) }
66
66
var selectedCountry by remember { mutableStateOf<Country ?>(null ) }
67
- var selectedYear by remember { mutableStateOf< String > (" 2022" ) }
67
+ var selectedYear by remember { mutableStateOf(" 2022" ) }
68
68
69
69
var countryEmissionInfo by remember { mutableStateOf<CountryEmissionsInfo ?>(null ) }
70
70
var countryAssetEmissionsList by remember { mutableStateOf<List <CountryAssetEmissionsInfo >>(emptyList()) }
71
71
72
72
LaunchedEffect (Unit ) {
73
73
events.collect { event ->
74
74
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
92
77
}
93
78
}
94
79
}
95
80
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
+
96
90
return uiState
97
91
}
98
92
}
0 commit comments