File tree Expand file tree Collapse file tree 3 files changed +43
-5
lines changed
app/src/main/java/com/example/moviedb/ui/screen/splash Expand file tree Collapse file tree 3 files changed +43
-5
lines changed Original file line number Diff line number Diff line change @@ -11,26 +11,34 @@ import com.example.moviedb.ui.base.BaseFragment
1111import com.example.moviedb.ui.base.BaseViewModel
1212import com.example.moviedb.ui.base.getNavController
1313import dagger.hilt.android.AndroidEntryPoint
14- import kotlinx.coroutines.delay
1514import kotlinx.coroutines.launch
1615
1716@AndroidEntryPoint
1817class SplashFragment : BaseFragment <FragmentSplashBinding , BaseViewModel >() {
1918
2019 override val layoutId: Int = R .layout.fragment_splash
21- override val viewModel: BaseViewModel by viewModels()
20+ override val viewModel: SplashViewModel by viewModels()
2221
2322 override fun onViewCreated (view : View , savedInstanceState : Bundle ? ) {
2423 super .onViewCreated(view, savedInstanceState)
2524 lifecycleScope.launch {
2625 whenStarted {
27- delay(1000 )
28- navigateToOther()
26+ viewModel.splashViewStateFlow.collect { state ->
27+ when (state) {
28+ is SplashViewState .Idle -> {
29+ // do nothing
30+ }
31+ is SplashViewState .NavigateToHome -> {
32+ navigateToHome()
33+ }
34+ }
35+ }
2936 }
3037 }
38+ viewModel.showSplash()
3139 }
3240
33- private fun navigateToOther () {
41+ private fun navigateToHome () {
3442 getNavController()?.navigate(
3543 when (1 ) {
3644 0 -> SplashFragmentDirections .toMovieListPager()
Original file line number Diff line number Diff line change 1+ package com.example.moviedb.ui.screen.splash
2+
3+ import androidx.lifecycle.viewModelScope
4+ import com.example.moviedb.ui.base.BaseViewModel
5+ import dagger.hilt.android.lifecycle.HiltViewModel
6+ import kotlinx.coroutines.delay
7+ import kotlinx.coroutines.flow.MutableStateFlow
8+ import kotlinx.coroutines.flow.asStateFlow
9+ import kotlinx.coroutines.launch
10+ import javax.inject.Inject
11+
12+ @HiltViewModel
13+ class SplashViewModel @Inject constructor() : BaseViewModel() {
14+
15+ private val _splashViewStateFlow = MutableStateFlow <SplashViewState >(SplashViewState .Idle )
16+ val splashViewStateFlow = _splashViewStateFlow .asStateFlow()
17+
18+ fun showSplash () {
19+ viewModelScope.launch {
20+ delay(1000 )
21+ _splashViewStateFlow .emit(SplashViewState .NavigateToHome )
22+ }
23+ }
24+ }
Original file line number Diff line number Diff line change 1+ package com.example.moviedb.ui.screen.splash
2+
3+ sealed class SplashViewState {
4+ object Idle : SplashViewState()
5+ object NavigateToHome : SplashViewState()
6+ }
You can’t perform that action at this time.
0 commit comments