1515 */
1616package soup.movie.feature.detail.impl
1717
18- import androidx.lifecycle.SavedStateHandle
1918import androidx.lifecycle.ViewModel
2019import androidx.lifecycle.viewModelScope
20+ import dagger.assisted.Assisted
21+ import dagger.assisted.AssistedFactory
22+ import dagger.assisted.AssistedInject
2123import dagger.hilt.android.lifecycle.HiltViewModel
2224import kotlinx.coroutines.CoroutineDispatcher
2325import kotlinx.coroutines.flow.MutableStateFlow
@@ -35,16 +37,15 @@ import soup.movie.model.MovieDetailModel
3537import soup.movie.model.MovieModel
3638import soup.movie.model.OpenDateAlarmModel
3739import 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