|
1 | 1 | package team.aliens.dms.android.feature.volunteers |
2 | 2 |
|
| 3 | +import androidx.compose.runtime.Immutable |
3 | 4 | import dagger.hilt.android.lifecycle.HiltViewModel |
| 5 | +import team.aliens.dms.android.core.jwt.AccessToken |
| 6 | +import team.aliens.dms.android.core.jwt.RefreshToken |
| 7 | +import team.aliens.dms.android.core.jwt.datastore.JwtDataStoreDataSource |
4 | 8 | import team.aliens.dms.android.core.ui.mvi.BaseMviViewModel |
5 | 9 | import team.aliens.dms.android.core.ui.mvi.Intent |
6 | 10 | import team.aliens.dms.android.core.ui.mvi.SideEffect |
7 | 11 | import team.aliens.dms.android.core.ui.mvi.UiState |
8 | | -import team.aliens.dms.android.core.ui.viewmodel.BaseViewModel |
9 | 12 | import javax.inject.Inject |
10 | 13 |
|
11 | 14 | @HiltViewModel |
12 | 15 | class VolunteersViewModel @Inject constructor( |
13 | | - |
| 16 | + private val jwtDataStoreDataSource: JwtDataStoreDataSource |
14 | 17 | ) : BaseMviViewModel<VolunteersState, VolunteersIntent, VolunteersSideEffect>( |
15 | 18 | initialState = VolunteersState.initial() |
16 | 19 | ) { |
| 20 | + init { |
| 21 | + loadToken() |
| 22 | + } |
| 23 | + |
| 24 | + private fun loadToken() { |
| 25 | + reduce( |
| 26 | + newState = stateFlow.value.copy( |
| 27 | + accessToken = jwtDataStoreDataSource.loadTokens().accessToken, |
| 28 | + refreshToken = jwtDataStoreDataSource.loadTokens().refreshToken, |
| 29 | + ) |
| 30 | + ) |
| 31 | + } |
17 | 32 | } |
18 | 33 |
|
| 34 | +@Immutable |
19 | 35 | data class VolunteersState( |
20 | | - val value: String, |
| 36 | + val accessToken: AccessToken?, |
| 37 | + val refreshToken: RefreshToken?, |
21 | 38 | ) : UiState() { |
22 | 39 | companion object { |
23 | 40 | fun initial() = VolunteersState( |
24 | | - value = "", |
| 41 | + accessToken = null, |
| 42 | + refreshToken = null, |
25 | 43 | ) |
26 | 44 | } |
27 | 45 | } |
28 | 46 |
|
29 | | -sealed class VolunteersIntent : Intent() { |
30 | | - data object Vol |
31 | | -} |
| 47 | +sealed class VolunteersIntent : Intent() |
32 | 48 |
|
33 | | -sealed class VolunteersSideEffect : SideEffect() { |
34 | | - data object VolunteersSideEffectn : VolunteersSideEffect() |
35 | | -} |
| 49 | +sealed class VolunteersSideEffect : SideEffect() |
0 commit comments