Skip to content

Commit 822fc28

Browse files
committed
Fix viewmodel input
1 parent 799b414 commit 822fc28

File tree

2 files changed

+19
-9
lines changed

2 files changed

+19
-9
lines changed

β€Žfeature/detail/impl/src/main/java/soup/movie/feature/detail/impl/DetailNavGraph.ktβ€Ž

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ package soup.movie.feature.detail.impl
1717

1818
import androidx.compose.runtime.Composable
1919
import androidx.compose.runtime.remember
20-
import androidx.hilt.navigation.compose.hiltViewModel
20+
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
2121
import androidx.navigation3.runtime.NavKey
2222
import androidx.navigation3.runtime.entryProvider
2323
import androidx.navigation3.ui.NavDisplay
2424
import kotlinx.serialization.Serializable
2525

26-
private sealed interface DetailScreen : NavKey {
26+
sealed interface DetailScreen : NavKey {
2727

2828
@Serializable
2929
data class Home(val movieId: String) : DetailScreen
@@ -44,7 +44,11 @@ fun DetailNavGraph(movieId: String) {
4444
// Define entry provider for detail destinations
4545
val entryProvider = entryProvider<NavKey> {
4646
entry<DetailScreen.Home> { key ->
47-
val viewModel = hiltViewModel<DetailViewModel>()
47+
val viewModel = hiltViewModel<DetailViewModel, DetailViewModel.Factory>(
48+
creationCallback = { factory ->
49+
factory.create(key)
50+
}
51+
)
4852
DetailScreen(
4953
viewModel = viewModel,
5054
onPosterClick = {

β€Žfeature/detail/impl/src/main/java/soup/movie/feature/detail/impl/DetailViewModel.ktβ€Ž

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515
*/
1616
package soup.movie.feature.detail.impl
1717

18-
import androidx.lifecycle.SavedStateHandle
1918
import androidx.lifecycle.ViewModel
2019
import androidx.lifecycle.viewModelScope
20+
import dagger.assisted.Assisted
21+
import dagger.assisted.AssistedFactory
22+
import dagger.assisted.AssistedInject
2123
import dagger.hilt.android.lifecycle.HiltViewModel
2224
import kotlinx.coroutines.CoroutineDispatcher
2325
import kotlinx.coroutines.flow.MutableStateFlow
@@ -35,16 +37,15 @@ import soup.movie.model.MovieDetailModel
3537
import soup.movie.model.MovieModel
3638
import soup.movie.model.OpenDateAlarmModel
3739
import java.time.temporal.ChronoUnit
38-
import javax.inject.Inject
3940

40-
@HiltViewModel
41-
class DetailViewModel @Inject constructor(
42-
savedStateHandle: SavedStateHandle,
41+
@HiltViewModel(assistedFactory = DetailViewModel.Factory::class)
42+
class DetailViewModel @AssistedInject constructor(
43+
@Assisted private val input: DetailScreen.Home,
4344
private val repository: MovieRepository,
4445
@DefaultDispatcher private val defaultDispatcher: CoroutineDispatcher,
4546
) : ViewModel() {
4647

47-
private val movieId: String = savedStateHandle["movieId"]!!
48+
private val movieId: String = input.movieId
4849

4950
private val _uiModel = MutableStateFlow<DetailUiModel>(DetailUiModel.None)
5051
val uiModel: StateFlow<DetailUiModel> = _uiModel
@@ -221,4 +222,9 @@ class DetailViewModel @Inject constructor(
221222
return 0
222223
}
223224
}
225+
226+
@AssistedFactory
227+
interface Factory {
228+
fun create(input: DetailScreen.Home): DetailViewModel
229+
}
224230
}

0 commit comments

Comments
Β (0)