Skip to content

Commit 5662c4f

Browse files
committed
[#541] Handle unstable collections detekt warning
1 parent 429fa8f commit 5662c4f

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

template-compose/app/src/main/java/co/nimblehq/template/compose/ui/screens/home/HomeScreen.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import co.nimblehq.template.compose.ui.models.UiModel
1818
import co.nimblehq.template.compose.ui.showToast
1919
import co.nimblehq.template.compose.ui.theme.AppTheme.dimensions
2020
import co.nimblehq.template.compose.ui.theme.ComposeTheme
21+
import kotlinx.collections.immutable.*
2122
import timber.log.Timber
2223

2324
@Composable
@@ -29,7 +30,7 @@ fun HomeScreen(
2930
viewModel.error.collectAsEffect { e -> e.showToast(context) }
3031
viewModel.navigator.collectAsEffect { destination -> navigator(destination) }
3132

32-
val uiModels: List<UiModel> by viewModel.uiModels.collectAsStateWithLifecycle()
33+
val uiModels: ImmutableList<UiModel> by viewModel.uiModels.collectAsStateWithLifecycle()
3334

3435
HomeScreenContent(
3536
title = stringResource(id = R.string.app_name),
@@ -40,7 +41,7 @@ fun HomeScreen(
4041
@Composable
4142
private fun HomeScreenContent(
4243
title: String,
43-
uiModels: List<UiModel>
44+
uiModels: ImmutableList<UiModel>
4445
) {
4546
Column(
4647
modifier = Modifier.fillMaxSize(),
@@ -63,7 +64,7 @@ private fun HomeScreenPreview() {
6364
ComposeTheme {
6465
HomeScreenContent(
6566
title = stringResource(id = R.string.app_name),
66-
uiModels = listOf(UiModel(1), UiModel(2), UiModel(3))
67+
uiModels = persistentListOf(UiModel(1), UiModel(2), UiModel(3))
6768
)
6869
}
6970
}

template-compose/app/src/main/java/co/nimblehq/template/compose/ui/screens/home/HomeViewModel.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import co.nimblehq.template.compose.ui.models.UiModel
77
import co.nimblehq.template.compose.ui.models.toUiModel
88
import co.nimblehq.template.compose.util.DispatchersProvider
99
import dagger.hilt.android.lifecycle.HiltViewModel
10+
import kotlinx.collections.immutable.*
1011
import kotlinx.coroutines.flow.*
1112
import javax.inject.Inject
1213

@@ -16,15 +17,15 @@ class HomeViewModel @Inject constructor(
1617
useCase: UseCase,
1718
) : BaseViewModel() {
1819

19-
private val _uiModels = MutableStateFlow<List<UiModel>>(emptyList())
20+
private val _uiModels = MutableStateFlow<ImmutableList<UiModel>>(persistentListOf())
2021
val uiModels = _uiModels.asStateFlow()
2122

2223
init {
2324
useCase()
2425
.injectLoading()
2526
.onEach { result ->
2627
val uiModels = result.map { it.toUiModel() }
27-
_uiModels.emit(uiModels)
28+
_uiModels.emit(uiModels.toImmutableList())
2829
}
2930
.flowOn(dispatchersProvider.io)
3031
.catch { e -> _error.emit(e) }

0 commit comments

Comments
 (0)