Skip to content

Commit 2e3971c

Browse files
committed
update splash fragment
1 parent f707a22 commit 2e3971c

File tree

3 files changed

+43
-5
lines changed

3 files changed

+43
-5
lines changed

app/src/main/java/com/example/moviedb/ui/screen/splash/SplashFragment.kt

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,34 @@ import com.example.moviedb.ui.base.BaseFragment
1111
import com.example.moviedb.ui.base.BaseViewModel
1212
import com.example.moviedb.ui.base.getNavController
1313
import dagger.hilt.android.AndroidEntryPoint
14-
import kotlinx.coroutines.delay
1514
import kotlinx.coroutines.launch
1615

1716
@AndroidEntryPoint
1817
class 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()
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
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+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.example.moviedb.ui.screen.splash
2+
3+
sealed class SplashViewState {
4+
object Idle : SplashViewState()
5+
object NavigateToHome : SplashViewState()
6+
}

0 commit comments

Comments
 (0)