From 391946a37b0afe1621cd10d216118e06a7a191a0 Mon Sep 17 00:00:00 2001 From: Ryan Conway Date: Fri, 3 Nov 2023 14:39:49 +0700 Subject: [PATCH] [#541] Handle unstable collections detekt warning --- .../template/compose/ui/screens/main/home/HomeScreen.kt | 7 ++++--- .../template/compose/ui/screens/main/home/HomeViewModel.kt | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/template-compose/app/src/main/java/co/nimblehq/template/compose/ui/screens/main/home/HomeScreen.kt b/template-compose/app/src/main/java/co/nimblehq/template/compose/ui/screens/main/home/HomeScreen.kt index dda7bd4d4..3debe2577 100644 --- a/template-compose/app/src/main/java/co/nimblehq/template/compose/ui/screens/main/home/HomeScreen.kt +++ b/template-compose/app/src/main/java/co/nimblehq/template/compose/ui/screens/main/home/HomeScreen.kt @@ -22,6 +22,7 @@ import co.nimblehq.template.compose.ui.models.UiModel import co.nimblehq.template.compose.ui.showToast import co.nimblehq.template.compose.ui.theme.AppTheme.dimensions import co.nimblehq.template.compose.ui.theme.ComposeTheme +import kotlinx.collections.immutable.* import timber.log.Timber @Composable @@ -33,7 +34,7 @@ fun HomeScreen( viewModel.error.collectAsEffect { e -> e.showToast(context) } viewModel.navigator.collectAsEffect { destination -> navigator(destination) } - val uiModels: List by viewModel.uiModels.collectAsStateWithLifecycle() + val uiModels: ImmutableList by viewModel.uiModels.collectAsStateWithLifecycle() HomeScreenContent( title = stringResource(id = R.string.app_name), @@ -44,7 +45,7 @@ fun HomeScreen( @Composable private fun HomeScreenContent( title: String, - uiModels: List + uiModels: ImmutableList ) { Column( modifier = Modifier.fillMaxSize(), @@ -67,7 +68,7 @@ private fun HomeScreenPreview() { ComposeTheme { HomeScreenContent( title = stringResource(id = R.string.app_name), - uiModels = listOf(UiModel(1), UiModel(2), UiModel(3)) + uiModels = persistentListOf(UiModel(1), UiModel(2), UiModel(3)) ) } } diff --git a/template-compose/app/src/main/java/co/nimblehq/template/compose/ui/screens/main/home/HomeViewModel.kt b/template-compose/app/src/main/java/co/nimblehq/template/compose/ui/screens/main/home/HomeViewModel.kt index 0f2c7a82b..9139d9f67 100644 --- a/template-compose/app/src/main/java/co/nimblehq/template/compose/ui/screens/main/home/HomeViewModel.kt +++ b/template-compose/app/src/main/java/co/nimblehq/template/compose/ui/screens/main/home/HomeViewModel.kt @@ -7,6 +7,7 @@ import co.nimblehq.template.compose.ui.models.UiModel import co.nimblehq.template.compose.ui.models.toUiModel import co.nimblehq.template.compose.util.DispatchersProvider import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.collections.immutable.* import kotlinx.coroutines.flow.* import javax.inject.Inject @@ -16,7 +17,7 @@ class HomeViewModel @Inject constructor( useCase: UseCase, ) : BaseViewModel() { - private val _uiModels = MutableStateFlow>(emptyList()) + private val _uiModels = MutableStateFlow>(persistentListOf()) val uiModels = _uiModels.asStateFlow() init { @@ -24,7 +25,7 @@ class HomeViewModel @Inject constructor( .injectLoading() .onEach { result -> val uiModels = result.map { it.toUiModel() } - _uiModels.emit(uiModels) + _uiModels.emit(uiModels.toImmutableList()) } .flowOn(dispatchersProvider.io) .catch { e -> _error.emit(e) }