11package com.cherrish.android.presentation.splash
22
3- import androidx.compose.foundation.Image
43import androidx.compose.foundation.layout.Column
54import androidx.compose.foundation.layout.PaddingValues
65import androidx.compose.foundation.layout.Spacer
6+ import androidx.compose.foundation.layout.aspectRatio
77import androidx.compose.foundation.layout.fillMaxSize
8+ import androidx.compose.foundation.layout.fillMaxWidth
89import androidx.compose.foundation.layout.height
910import androidx.compose.foundation.layout.padding
10- import androidx.compose.foundation.layout.size
1111import androidx.compose.runtime.Composable
12- import androidx.compose.runtime.LaunchedEffect
12+ import androidx.compose.runtime.getValue
13+ import androidx.compose.runtime.rememberCoroutineScope
1314import androidx.compose.ui.Alignment
1415import androidx.compose.ui.Modifier
1516import androidx.compose.ui.draw.drawBehind
1617import androidx.compose.ui.geometry.Offset
1718import androidx.compose.ui.graphics.Brush
18- import androidx.compose.ui.graphics.vector.ImageVector
19- import androidx.compose.ui.res.painterResource
20- import androidx.compose.ui.res.vectorResource
2119import androidx.compose.ui.tooling.preview.Preview
2220import androidx.compose.ui.unit.dp
2321import androidx.hilt.navigation.compose.hiltViewModel
22+ import androidx.lifecycle.Lifecycle
23+ import androidx.lifecycle.compose.LifecycleEventEffect
24+ import com.airbnb.lottie.compose.LottieAnimation
25+ import com.airbnb.lottie.compose.LottieCompositionSpec
26+ import com.airbnb.lottie.compose.LottieConstants
27+ import com.airbnb.lottie.compose.animateLottieCompositionAsState
28+ import com.airbnb.lottie.compose.rememberLottieComposition
2429import com.cherrish.android.R
2530import com.cherrish.android.core.common.extension.collectLatestSideEffect
2631import com.cherrish.android.core.designsystem.theme.CherrishTheme
2732import kotlinx.coroutines.delay
33+ import kotlinx.coroutines.launch
2834
2935@Composable
3036fun SplashRoute (
@@ -33,20 +39,19 @@ fun SplashRoute(
3339 paddingValues : PaddingValues ,
3440 viewModel : SplashViewModel = hiltViewModel()
3541) {
36- LaunchedEffect (Unit ) {
37- viewModel.isAutoLoginCheck()
42+ val scope = rememberCoroutineScope()
43+
44+ LifecycleEventEffect (Lifecycle .Event .ON_START ) {
45+ scope.launch {
46+ delay(3000 )
47+ viewModel.isAutoLoginCheck()
48+ }
3849 }
3950
4051 viewModel.sideEffect.collectLatestSideEffect { sideEffect ->
41- delay(3000 )
42-
4352 when (sideEffect) {
44- SplashSideEffect .NavigateToOnboarding -> {
45- navigateToOnboarding()
46- }
47- SplashSideEffect .NavigateToHome -> {
48- navigateToHome()
49- }
53+ SplashSideEffect .NavigateToOnboarding -> navigateToOnboarding()
54+ SplashSideEffect .NavigateToHome -> navigateToHome()
5055 }
5156 }
5257
@@ -60,6 +65,15 @@ private fun SplashScreen(
6065 paddingValues : PaddingValues ,
6166 modifier : Modifier = Modifier
6267) {
68+ val composition by rememberLottieComposition(
69+ LottieCompositionSpec .RawRes (R .raw.lt_challenge_loading)
70+ )
71+ val progress by animateLottieCompositionAsState(
72+ composition,
73+ iterations = LottieConstants .IterateForever ,
74+ isPlaying = true
75+ )
76+
6377 val gradationColors = listOf (CherrishTheme .colors.gradation, CherrishTheme .colors.gradation2)
6478
6579 Column (
@@ -77,19 +91,18 @@ private fun SplashScreen(
7791 ) {
7892 Spacer (modifier = Modifier .weight(283f ))
7993
80- Image (
81- painter = painterResource(id = R .drawable.ic_app_logo),
82- contentDescription = null ,
83- modifier = Modifier .size(width = 114 .dp, height = 100 .dp)
94+ LottieAnimation (
95+ composition = composition,
96+ progress = { progress },
97+ modifier = Modifier
98+ .fillMaxWidth()
99+ .padding(horizontal = 105 .dp)
100+ .aspectRatio(130f / 154f )
101+ .align(Alignment .CenterHorizontally )
84102 )
85103
86104 Spacer (modifier = Modifier .height(14 .dp))
87105
88- Image (
89- imageVector = ImageVector .vectorResource(id = R .drawable.ic_app_logo_title),
90- contentDescription = null
91- )
92-
93106 Spacer (modifier = Modifier .weight(298f ))
94107 }
95108}
0 commit comments