@@ -3,9 +3,9 @@ package com.terning.feature.filtering.startfiltering
33import androidx.compose.animation.AnimatedVisibility
44import androidx.compose.animation.fadeIn
55import androidx.compose.foundation.background
6- import androidx.compose.foundation.layout.Box
76import androidx.compose.foundation.layout.Column
87import androidx.compose.foundation.layout.Spacer
8+ import androidx.compose.foundation.layout.aspectRatio
99import androidx.compose.foundation.layout.fillMaxSize
1010import androidx.compose.foundation.layout.fillMaxWidth
1111import androidx.compose.foundation.layout.height
@@ -21,17 +21,18 @@ import androidx.compose.ui.Modifier
2121import androidx.compose.ui.platform.LocalConfiguration
2222import androidx.compose.ui.res.stringResource
2323import androidx.compose.ui.text.style.TextAlign
24+ import androidx.compose.ui.text.style.TextDecoration
2425import androidx.compose.ui.tooling.preview.Preview
2526import androidx.compose.ui.unit.dp
2627import androidx.hilt.navigation.compose.hiltViewModel
2728import androidx.lifecycle.compose.collectAsStateWithLifecycle
28- import com.airbnb.lottie.compose.LottieCompositionSpec
2929import com.airbnb.lottie.compose.LottieConstants
30- import com.airbnb.lottie.compose.rememberLottieComposition
3130import com.terning.core.analytics.EventType
3231import com.terning.core.analytics.LocalTracker
33- import com.terning.core.designsystem.component.button.RectangleButton
32+ import com.terning.core.designsystem.component.button.RoundButton
3433import com.terning.core.designsystem.component.item.TerningLottieAnimation
34+ import com.terning.core.designsystem.extension.noRippleClickable
35+ import com.terning.core.designsystem.theme.Grey500
3536import com.terning.core.designsystem.theme.TerningPointTheme
3637import com.terning.core.designsystem.theme.TerningTheme
3738import com.terning.core.designsystem.theme.White
@@ -40,7 +41,8 @@ import kotlinx.coroutines.delay
4041
4142@Composable
4243fun StartFilteringRoute (
43- onNextClick : () -> Unit ,
44+ onStartClick : () -> Unit ,
45+ onLaterClick : () -> Unit ,
4446 viewModel : StartFilteringViewModel = hiltViewModel()
4547) {
4648 val state by viewModel.state.collectAsStateWithLifecycle()
@@ -56,69 +58,90 @@ fun StartFilteringRoute(
5658 }
5759
5860 StartFilteringScreen (
59- onNextClick = {
60- onNextClick ()
61+ onStartClick = {
62+ onStartClick ()
6163 amplitudeTracker.track(
6264 type = EventType .CLICK ,
6365 name = " start_service"
6466 )
6567 },
68+ onLaterClick = onLaterClick,
6669 buttonState = state.isButtonVisible,
6770 screenHeight = screenHeight,
6871 )
69-
7072}
7173
7274@Composable
7375fun StartFilteringScreen (
74- onNextClick : () -> Unit ,
76+ onStartClick : () -> Unit ,
77+ onLaterClick : () -> Unit ,
7578 buttonState : Boolean ,
7679 screenHeight : Float ,
7780) {
78- Box (
81+ Column (
7982 modifier = Modifier
8083 .fillMaxSize()
8184 .statusBarsPadding()
8285 .navigationBarsPadding()
83- .background(White )
86+ .background(White ),
87+ horizontalAlignment = Alignment .CenterHorizontally
88+ ) {
89+ Spacer (modifier = Modifier .height((138 * screenHeight).dp))
90+ Text (
91+ text = stringResource(id = R .string.start_filtering_title),
92+ style = TerningTheme .typography.title1,
93+ textAlign = TextAlign .Center
94+ )
95+ TerningLottieAnimation (
96+ jsonFile = R .raw.terning_onboarding_start,
97+ iterations = LottieConstants .IterateForever ,
98+ modifier = Modifier
99+ .fillMaxWidth()
100+ .aspectRatio(1f )
101+ .padding(horizontal = 24 .dp)
102+ )
103+ Spacer (modifier = Modifier .height((79 * screenHeight).dp))
104+ ButtonAnimation (
105+ buttonState = buttonState,
106+ onStartClick = onStartClick,
107+ onLaterClick = onLaterClick
108+ )
109+ Spacer (modifier = Modifier .height((24 * screenHeight).dp))
110+ }
111+ }
112+
113+ @Composable
114+ private fun ButtonAnimation (
115+ buttonState : Boolean ,
116+ onStartClick : () -> Unit ,
117+ onLaterClick : () -> Unit ,
118+ modifier : Modifier = Modifier ,
119+ ) {
120+ AnimatedVisibility (
121+ visible = buttonState,
122+ enter = fadeIn(initialAlpha = 0.3f ),
84123 ) {
85124 Column (
86- modifier = Modifier .fillMaxSize() ,
125+ modifier = modifier ,
87126 horizontalAlignment = Alignment .CenterHorizontally
88127 ) {
89- Spacer (modifier = Modifier .height((128 * screenHeight).dp))
90- Text (
91- text = stringResource(id = R .string.start_filtering_title),
92- style = TerningTheme .typography.title1,
93- modifier = Modifier .padding(bottom = 36 .dp),
94- textAlign = TextAlign .Center
128+ RoundButton (
129+ style = TerningTheme .typography.button0,
130+ paddingVertical = 17 .dp,
131+ text = R .string.start_filtering_button,
132+ onButtonClick = onStartClick,
133+ cornerRadius = 10 .dp,
134+ modifier = Modifier .padding(horizontal = 24 .dp)
95135 )
96- TerningLottieAnimation (
97- jsonFile = R .raw.terning_onboarding_start,
98- iterations = LottieConstants .IterateForever ,
99- modifier = Modifier
100- .fillMaxWidth()
101- .height(372 .dp)
102- .padding(horizontal = 24 .dp)
136+ Spacer (modifier = Modifier .height(12 .dp))
137+ Text (
138+ text = stringResource(R .string.start_filtering_later),
139+ style = TerningTheme .typography.detail3.copy(
140+ textDecoration = TextDecoration .Underline
141+ ),
142+ color = Grey500 ,
143+ modifier = Modifier .noRippleClickable { onLaterClick() }
103144 )
104- Spacer (modifier = Modifier .weight(2f ))
105- }
106- Box (
107- modifier = Modifier
108- .align(Alignment .BottomCenter )
109- .padding(bottom = 12 .dp)
110- ) {
111- AnimatedVisibility (
112- visible = buttonState,
113- enter = fadeIn(initialAlpha = 0.3f ),
114- ) {
115- RectangleButton (
116- style = TerningTheme .typography.button0,
117- paddingVertical = 20 .dp,
118- text = R .string.start_filtering_button,
119- onButtonClick = onNextClick,
120- )
121- }
122145 }
123146 }
124147}
@@ -127,10 +150,11 @@ private const val DELAY: Long = 1000
127150
128151@Preview(showBackground = true )
129152@Composable
130- fun StartFilteringScreenPreview () {
153+ private fun StartFilteringScreenPreview () {
131154 TerningPointTheme {
132155 StartFilteringScreen (
133- onNextClick = {},
156+ onStartClick = {},
157+ onLaterClick = {},
134158 buttonState = true ,
135159 screenHeight = 1f
136160 )
0 commit comments