Skip to content

Commit a50aec4

Browse files
authored
Merge pull request #93 from joreilly/molecule
molecule cleanup
2 parents d0be586 + 403ac22 commit a50aec4

File tree

1 file changed

+14
-20
lines changed

1 file changed

+14
-20
lines changed

composeApp/src/commonMain/kotlin/dev/johnoreilly/climatetrace/viewmodel/CountryDetailsViewModel.kt

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ import org.koin.core.component.inject
2323

2424

2525
sealed 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

Comments
 (0)