Skip to content

Commit b90cbe3

Browse files
authored
Merge pull request #545 from nimblehq/feature/535-add-asstateflow-to-viewmodel
[#535] Add asStateFlow to the StateFlow variables in ViewModel class
2 parents 590332a + 1d51e5d commit b90cbe3

File tree

4 files changed

+9
-11
lines changed

4 files changed

+9
-11
lines changed

sample-compose/app/src/main/java/co/nimblehq/sample/compose/ui/base/BaseViewModel.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package co.nimblehq.sample.compose.ui.base
22

33
import androidx.lifecycle.ViewModel
44
import androidx.lifecycle.viewModelScope
5-
import co.nimblehq.sample.compose.lib.IsLoading
65
import co.nimblehq.sample.compose.ui.AppDestination
76
import kotlinx.coroutines.*
87
import kotlinx.coroutines.flow.*
@@ -15,13 +14,13 @@ abstract class BaseViewModel : ViewModel() {
1514
private var loadingCount: Int = 0
1615

1716
private val _isLoading = MutableStateFlow(false)
18-
val isLoading: StateFlow<IsLoading> = _isLoading
17+
val isLoading = _isLoading.asStateFlow()
1918

2019
protected val _error = MutableSharedFlow<Throwable>()
21-
val error: SharedFlow<Throwable> = _error
20+
val error = _error.asSharedFlow()
2221

2322
protected val _navigator = MutableSharedFlow<AppDestination>()
24-
val navigator: SharedFlow<AppDestination> = _navigator
23+
val navigator = _navigator.asSharedFlow()
2524

2625
/**
2726
* To show loading manually, should call `hideLoading` after

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ class HomeViewModel @Inject constructor(
2222
) : BaseViewModel() {
2323

2424
private val _uiModels = MutableStateFlow<List<UiModel>>(emptyList())
25-
val uiModels: StateFlow<List<UiModel>> = _uiModels
25+
val uiModels = _uiModels.asStateFlow()
2626

2727
private val _isFirstTimeLaunch = MutableStateFlow(false)
28-
val isFirstTimeLaunch: StateFlow<Boolean> = _isFirstTimeLaunch
28+
val isFirstTimeLaunch = _isFirstTimeLaunch.asStateFlow()
2929

3030
init {
3131
getModelsUseCase()

template-compose/app/src/main/java/co/nimblehq/template/compose/ui/base/BaseViewModel.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package co.nimblehq.template.compose.ui.base
22

33
import androidx.lifecycle.ViewModel
44
import androidx.lifecycle.viewModelScope
5-
import co.nimblehq.template.compose.lib.IsLoading
65
import co.nimblehq.template.compose.ui.AppDestination
76
import kotlinx.coroutines.flow.*
87
import kotlinx.coroutines.launch
@@ -15,13 +14,13 @@ abstract class BaseViewModel : ViewModel() {
1514
private var loadingCount: Int = 0
1615

1716
private val _isLoading = MutableStateFlow(false)
18-
val isLoading: StateFlow<IsLoading> = _isLoading
17+
val isLoading = _isLoading.asStateFlow()
1918

2019
protected val _error = MutableSharedFlow<Throwable>()
21-
val error: SharedFlow<Throwable> = _error
20+
val error = _error.asSharedFlow()
2221

2322
protected val _navigator = MutableSharedFlow<AppDestination>()
24-
val navigator: SharedFlow<AppDestination> = _navigator
23+
val navigator = _navigator.asSharedFlow()
2524

2625
/**
2726
* To show loading manually, should call `hideLoading` after

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class HomeViewModel @Inject constructor(
1717
) : BaseViewModel() {
1818

1919
private val _uiModels = MutableStateFlow<List<UiModel>>(emptyList())
20-
val uiModels: StateFlow<List<UiModel>> = _uiModels
20+
val uiModels = _uiModels.asStateFlow()
2121

2222
init {
2323
useCase()

0 commit comments

Comments
 (0)