diff --git a/app/src/main/kotlin/com/bff/wespot/AppNavGraphs.kt b/app/src/main/kotlin/com/bff/wespot/AppNavGraphs.kt index ef6de0bdc..5dd030fed 100644 --- a/app/src/main/kotlin/com/bff/wespot/AppNavGraphs.kt +++ b/app/src/main/kotlin/com/bff/wespot/AppNavGraphs.kt @@ -3,6 +3,8 @@ package com.bff.wespot import androidx.compose.animation.AnimatedContentTransitionScope import androidx.compose.animation.EnterTransition import androidx.compose.animation.ExitTransition +import androidx.compose.animation.core.Spring +import androidx.compose.animation.core.spring import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.runtime.Composable @@ -15,13 +17,13 @@ import androidx.navigation.NavGraph import androidx.navigation.NavHostController import com.bff.wespot.entire.screen.destinations.AccountSettingScreenDestination import com.bff.wespot.entire.screen.destinations.BlockListScreenDestination +import com.bff.wespot.entire.screen.destinations.CharacterEditScreenDestination import com.bff.wespot.entire.screen.destinations.EntireScreenDestination import com.bff.wespot.entire.screen.destinations.NotificationSettingScreenDestination +import com.bff.wespot.entire.screen.destinations.ProfileEditScreenDestination import com.bff.wespot.entire.screen.destinations.RevokeConfirmScreenDestination import com.bff.wespot.entire.screen.destinations.RevokeScreenDestination import com.bff.wespot.entire.screen.destinations.SettingScreenDestination -import com.bff.wespot.entire.screen.destinations.ProfileEditScreenDestination -import com.bff.wespot.entire.screen.destinations.CharacterEditScreenDestination import com.bff.wespot.message.screen.destinations.MessageEditScreenDestination import com.bff.wespot.message.screen.destinations.MessageScreenDestination import com.bff.wespot.message.screen.destinations.MessageWriteScreenDestination @@ -29,8 +31,8 @@ import com.bff.wespot.message.screen.destinations.ReceiverSelectionScreenDestina import com.bff.wespot.message.screen.destinations.ReservedMessageScreenDestination import com.bff.wespot.message.viewmodel.SendViewModel import com.bff.wespot.model.ToastState -import com.bff.wespot.notification.screen.destinations.NotificationScreenDestination import com.bff.wespot.navigation.Navigator +import com.bff.wespot.notification.screen.destinations.NotificationScreenDestination import com.bff.wespot.vote.screen.destinations.CharacterSettingScreenDestination import com.bff.wespot.vote.screen.destinations.IndividualVoteScreenDestination import com.bff.wespot.vote.screen.destinations.IntroductionScreenDestination @@ -209,7 +211,12 @@ private fun AnimatedContentTransitionScope<*>.defaultEnterTransition( if (initialNavGraph.id != targetNavGraph.id) { return fadeIn() } - return fadeIn() + slideIntoContainer(AnimatedContentTransitionScope.SlideDirection.Start) + return fadeIn() + slideIntoContainer( + AnimatedContentTransitionScope.SlideDirection.Start, + animationSpec = spring( + stiffness = Spring.StiffnessMediumLow, + ), + ) } private fun AnimatedContentTransitionScope<*>.defaultExitTransition( @@ -221,7 +228,12 @@ private fun AnimatedContentTransitionScope<*>.defaultExitTransition( if (initialNavGraph.id != targetNavGraph.id) { return fadeOut() } - return fadeOut() + slideOutOfContainer(AnimatedContentTransitionScope.SlideDirection.End) + return fadeOut() + slideOutOfContainer( + AnimatedContentTransitionScope.SlideDirection.End, + animationSpec = spring( + stiffness = Spring.StiffnessMediumLow, + ), + ) } private val NavDestination.hostNavGraph: NavGraph diff --git a/designsystem/src/main/kotlin/com/bff/wespot/designsystem/component/indicator/WSHomeTabRow.kt b/designsystem/src/main/kotlin/com/bff/wespot/designsystem/component/indicator/WSHomeTabRow.kt index ff729a6d9..f5d462071 100644 --- a/designsystem/src/main/kotlin/com/bff/wespot/designsystem/component/indicator/WSHomeTabRow.kt +++ b/designsystem/src/main/kotlin/com/bff/wespot/designsystem/component/indicator/WSHomeTabRow.kt @@ -1,8 +1,10 @@ package com.bff.wespot.designsystem.component.indicator import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Surface import androidx.compose.material3.Tab import androidx.compose.material3.TabRow @@ -43,6 +45,9 @@ fun WSHomeTabRow( color = WeSpotThemeManager.colors.abledTxtColor, ) }, + divider = { + HorizontalDivider(color = WeSpotThemeManager.colors.tertiaryBtnColor) + }, ) { tabList.forEachIndexed { index, tab -> val selected = selectedTabIndex == index @@ -50,8 +55,7 @@ fun WSHomeTabRow( selected = selected, onClick = { onTabSelected(index) }, modifier = Modifier - .padding(vertical = 11.dp) - .padding(horizontal = 20.dp), + .padding(vertical = 11.dp), ) { Text( text = tab, @@ -61,6 +65,13 @@ fun WSHomeTabRow( } else { WeSpotThemeManager.colors.disableIcnColor }, + modifier = Modifier.padding( + if (index == 0) { + PaddingValues(start = 20.dp) + } else { + PaddingValues(end = 20.dp) + }, + ), ) } } diff --git a/designsystem/src/main/kotlin/com/bff/wespot/designsystem/component/input/WsTextField.kt b/designsystem/src/main/kotlin/com/bff/wespot/designsystem/component/input/WsTextField.kt index 4bcadf872..752c570e7 100644 --- a/designsystem/src/main/kotlin/com/bff/wespot/designsystem/component/input/WsTextField.kt +++ b/designsystem/src/main/kotlin/com/bff/wespot/designsystem/component/input/WsTextField.kt @@ -70,9 +70,9 @@ fun WsTextField( .wrapContentSize() .border( BorderStroke(1.dp, WeSpotThemeManager.colors.primaryColor), - shape = WeSpotThemeManager.shapes.small + shape = WeSpotThemeManager.shapes.small, ) - .padding(1.dp) + .padding(1.dp), ) { OutlinedTextField( modifier = Modifier diff --git a/feature/auth/src/main/kotlin/com/bff/wespot/auth/screen/AuthScreen.kt b/feature/auth/src/main/kotlin/com/bff/wespot/auth/screen/AuthScreen.kt index fd04caf72..0f1c5cc24 100644 --- a/feature/auth/src/main/kotlin/com/bff/wespot/auth/screen/AuthScreen.kt +++ b/feature/auth/src/main/kotlin/com/bff/wespot/auth/screen/AuthScreen.kt @@ -143,5 +143,5 @@ private enum class AuthCarouselItem( ) { FIRST(R.raw.onboarding01, R.drawable.onboarding_01_bkg, R.string.onboarding1), SignUp(R.raw.onboarding02, R.drawable.onboarding_02_bkg, R.string.onboarding2), - Welcome(R.raw.onboarding03, R.drawable.onboarding_03_bkg, R.string.onboarding3); + Welcome(R.raw.onboarding03, R.drawable.onboarding_03_bkg, R.string.onboarding3), } diff --git a/feature/auth/src/main/kotlin/com/bff/wespot/auth/screen/SchoolScreen.kt b/feature/auth/src/main/kotlin/com/bff/wespot/auth/screen/SchoolScreen.kt index 34c14214b..1205c456a 100644 --- a/feature/auth/src/main/kotlin/com/bff/wespot/auth/screen/SchoolScreen.kt +++ b/feature/auth/src/main/kotlin/com/bff/wespot/auth/screen/SchoolScreen.kt @@ -195,13 +195,13 @@ fun SchoolScreen( ) { it() } - } Box( modifier = Modifier .fillMaxSize() - .zIndex(1f), contentAlignment = Alignment.BottomCenter + .zIndex(1f), + contentAlignment = Alignment.BottomCenter, ) { ListBottomGradient(height = 120) } diff --git a/feature/entire/src/main/java/com/bff/wespot/entire/screen/EntireScreen.kt b/feature/entire/src/main/java/com/bff/wespot/entire/screen/EntireScreen.kt index 53e75040b..ffe8cbc09 100644 --- a/feature/entire/src/main/java/com/bff/wespot/entire/screen/EntireScreen.kt +++ b/feature/entire/src/main/java/com/bff/wespot/entire/screen/EntireScreen.kt @@ -79,7 +79,7 @@ internal fun EntireScreen( .clickable { navigator.navigateToSetting() } .padding(end = 16.dp), imageVector = ImageVector.vectorResource( - com.bff.wespot.designsystem.R.drawable.icn_settings + com.bff.wespot.designsystem.R.drawable.icn_settings, ), contentDescription = stringResource(R.string.setting_icon), tint = WeSpotThemeManager.colors.secondaryBtnColor, diff --git a/feature/vote/src/main/java/com/bff/wespot/vote/screen/VoteResultScreen.kt b/feature/vote/src/main/java/com/bff/wespot/vote/screen/VoteResultScreen.kt index c9aa038cf..ac94eb805 100644 --- a/feature/vote/src/main/java/com/bff/wespot/vote/screen/VoteResultScreen.kt +++ b/feature/vote/src/main/java/com/bff/wespot/vote/screen/VoteResultScreen.kt @@ -132,7 +132,7 @@ fun VoteResultScreen( } } - if (state.onBoarding) { + if (state.onBoarding && !showLottie) { Box( modifier = Modifier .fillMaxSize() @@ -329,7 +329,11 @@ fun VoteResultScreen( Box( modifier = Modifier .fillMaxSize() - .padding(bottom = 104.dp), + .padding(bottom = 104.dp) + .blur( + if (state.onBoarding) 10.dp else 0.dp, + edgeTreatment = BlurredEdgeTreatment.Unbounded, + ), contentAlignment = Alignment.BottomCenter, ) { DotIndicators(pagerState = pagerState) diff --git a/feature/vote/src/main/java/com/bff/wespot/vote/screen/VotingScreen.kt b/feature/vote/src/main/java/com/bff/wespot/vote/screen/VotingScreen.kt index 2149396cc..c6c0dff76 100644 --- a/feature/vote/src/main/java/com/bff/wespot/vote/screen/VotingScreen.kt +++ b/feature/vote/src/main/java/com/bff/wespot/vote/screen/VotingScreen.kt @@ -142,7 +142,7 @@ fun VotingScreen( ) { if (state.loading && showGuideScreen) { return@Scaffold - } else if (!showGuideScreen) { + } else if (showGuideScreen) { VotingGuideScreen(it, navigator) } else { VotingProgressScreen( @@ -243,7 +243,7 @@ private fun VotingProgressScreen( } Text( text = - "${state.currentVote.voteUser.name}${stringResource(id = R.string.vote_question)}", + "${state.currentVote.voteUser.name}${stringResource(id = R.string.vote_question)}", style = StaticTypeScale.Default.header1, modifier = Modifier.padding(horizontal = 20.dp), ) @@ -282,13 +282,13 @@ private fun VotingProgressScreen( } }, buttonType = - if (state.selectedVote[state.pageNumber - 1].voteOptionId == voteItem.id || - selected == voteItem.id - ) { - WSOutlineButtonType.Highlight - } else { - WSOutlineButtonType.None - }, + if (state.selectedVote[state.pageNumber - 1].voteOptionId == voteItem.id || + selected == voteItem.id + ) { + WSOutlineButtonType.Highlight + } else { + WSOutlineButtonType.None + }, paddingValues = PaddingValues(vertical = 8.dp, horizontal = 20.dp), ) { Text( @@ -328,7 +328,7 @@ private fun VotingGuideScreen( modifier = Modifier .fillMaxSize() .padding(paddingValues), - verticalArrangement = Arrangement.spacedBy(16.dp) + verticalArrangement = Arrangement.spacedBy(16.dp), ) { Text( text = stringResource(R.string.guide_title), diff --git a/feature/vote/src/main/java/com/bff/wespot/vote/ui/VoteCard.kt b/feature/vote/src/main/java/com/bff/wespot/vote/ui/VoteCard.kt index 783f9969c..3473c6b8b 100644 --- a/feature/vote/src/main/java/com/bff/wespot/vote/ui/VoteCard.kt +++ b/feature/vote/src/main/java/com/bff/wespot/vote/ui/VoteCard.kt @@ -135,7 +135,7 @@ internal fun VoteCard( if (result.voteCount == 0) { Image( painter = painterResource( - id = com.bff.wespot.designsystem.R.drawable.question + id = com.bff.wespot.designsystem.R.drawable.question, ), contentDescription = stringResource( id = R.string.vote_ongoing, diff --git a/feature/vote/src/main/java/com/bff/wespot/vote/viewmodel/VoteResultViewModel.kt b/feature/vote/src/main/java/com/bff/wespot/vote/viewmodel/VoteResultViewModel.kt index 57a6f7e4e..c02cb229b 100644 --- a/feature/vote/src/main/java/com/bff/wespot/vote/viewmodel/VoteResultViewModel.kt +++ b/feature/vote/src/main/java/com/bff/wespot/vote/viewmodel/VoteResultViewModel.kt @@ -65,7 +65,6 @@ class VoteResultViewModel @Inject constructor( dataStoreRepository.getBoolean(DataStoreKey.VOTE_ONBOARDING).collect { if (!it) { reduce { state.copy(onBoarding = !it) } - dataStoreRepository.saveBoolean(DataStoreKey.VOTE_ONBOARDING, true) } } } @@ -73,6 +72,9 @@ class VoteResultViewModel @Inject constructor( private fun setVoteOnBoarding() = intent { reduce { + viewModelScope.launch { + dataStoreRepository.saveBoolean(DataStoreKey.VOTE_ONBOARDING, true) + } state.copy( onBoarding = false, ) diff --git a/feature/vote/src/main/res/values/strings.xml b/feature/vote/src/main/res/values/strings.xml index 99926694e..79167fd8a 100644 --- a/feature/vote/src/main/res/values/strings.xml +++ b/feature/vote/src/main/res/values/strings.xml @@ -1,7 +1,7 @@ 위스팟에 친구 초대하기 - 다양한 친구들과 더 재미있게 사용해 보세요 + 친구들과 더 재미있게 사용해 보세요 지금 우리반 투표가 진행 중이에요\n반 친구들에 대해 알려주세요 투표 사진 투표하기