diff --git a/src/main/kotlin/ui/screens/SecVaultScreen.kt b/src/main/kotlin/ui/screens/SecVaultScreen.kt index bfcccc1..fc4a3a8 100644 --- a/src/main/kotlin/ui/screens/SecVaultScreen.kt +++ b/src/main/kotlin/ui/screens/SecVaultScreen.kt @@ -27,7 +27,7 @@ class SecVaultScreen : Screen { val toaster = rememberToasterState() LaunchedEffect(Unit) { - screenModel.init() + screenModel.loadInitialPasswords() } Toaster( diff --git a/src/main/kotlin/viewmodel/SecVaultScreenModel.kt b/src/main/kotlin/viewmodel/SecVaultScreenModel.kt index 8e8d202..ef94213 100644 --- a/src/main/kotlin/viewmodel/SecVaultScreenModel.kt +++ b/src/main/kotlin/viewmodel/SecVaultScreenModel.kt @@ -8,12 +8,10 @@ import core.models.PasswordSort import core.models.Result import core.models.UiState import core.models.criteria.PasswordSearchCriteria -import kotlinx.coroutines.CoroutineDispatcher -import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.* import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow -import kotlinx.coroutines.launch import org.slf4j.LoggerFactory import repository.password.PasswordRepository import repository.password.projection.PasswordSummary @@ -42,6 +40,12 @@ class SecVaultScreenModel( private val _passwordItems = MutableStateFlow>(emptyList()) val passwordItems: StateFlow> = _passwordItems.asStateFlow() + init { + observeMenuItemSelection() + observeSortItemSelection() + loadInitialPasswords() + } + fun selectMenuItem(item: DefaultMenuItem) { _selectedMenuItem.value = item } @@ -54,24 +58,11 @@ class SecVaultScreenModel( _secVaultState.value = UiState.Idle } - fun init() { + fun loadInitialPasswords() { screenModelScope.launch(dispatcher) { _secVaultState.value = UiState.Loading loadPasswords(PasswordSort.NAME) } - - screenModelScope.launch(dispatcher) { - _selectedMenuItem.collect { newMenuItem -> - LoggerFactory.getLogger(SecVaultScreenModel::class.java).info(newMenuItem.value) - } - } - - screenModelScope.launch(dispatcher) { - _selectedSortItem.collect { newFilterOption -> - _secVaultState.value = UiState.Loading - loadPasswords(newFilterOption) - } - } } private suspend fun loadPasswords(sort: PasswordSort) { @@ -89,4 +80,21 @@ class SecVaultScreenModel( } } + private fun observeMenuItemSelection() { + screenModelScope.launch(dispatcher) { + _selectedMenuItem.collect { newMenuItem -> + LoggerFactory.getLogger(SecVaultScreenModel::class.java).info(newMenuItem.value) + } + } + } + + private fun observeSortItemSelection() { + screenModelScope.launch(dispatcher) { + _selectedSortItem.collect { newSortItem -> + _secVaultState.value = UiState.Loading + loadPasswords(newSortItem) + } + } + } + } \ No newline at end of file