Skip to content

Commit 391946a

Browse files
committed
[#541] Handle unstable collections detekt warning
1 parent be92fe1 commit 391946a

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/main/home/HomeScreen.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import co.nimblehq.template.compose.ui.models.UiModel
2222
import co.nimblehq.template.compose.ui.showToast
2323
import co.nimblehq.template.compose.ui.theme.AppTheme.dimensions
2424
import co.nimblehq.template.compose.ui.theme.ComposeTheme
25+
import kotlinx.collections.immutable.*
2526
import timber.log.Timber
2627

2728
@Composable
@@ -33,7 +34,7 @@ fun HomeScreen(
3334
viewModel.error.collectAsEffect { e -> e.showToast(context) }
3435
viewModel.navigator.collectAsEffect { destination -> navigator(destination) }
3536

36-
val uiModels: List<UiModel> by viewModel.uiModels.collectAsStateWithLifecycle()
37+
val uiModels: ImmutableList<UiModel> by viewModel.uiModels.collectAsStateWithLifecycle()
3738

3839
HomeScreenContent(
3940
title = stringResource(id = R.string.app_name),
@@ -44,7 +45,7 @@ fun HomeScreen(
4445
@Composable
4546
private fun HomeScreenContent(
4647
title: String,
47-
uiModels: List<UiModel>
48+
uiModels: ImmutableList<UiModel>
4849
) {
4950
Column(
5051
modifier = Modifier.fillMaxSize(),
@@ -67,7 +68,7 @@ private fun HomeScreenPreview() {
6768
ComposeTheme {
6869
HomeScreenContent(
6970
title = stringResource(id = R.string.app_name),
70-
uiModels = listOf(UiModel(1), UiModel(2), UiModel(3))
71+
uiModels = persistentListOf(UiModel(1), UiModel(2), UiModel(3))
7172
)
7273
}
7374
}

template-compose/app/src/main/java/co/nimblehq/template/compose/ui/screens/main/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)