diff --git a/build-logic/convention/src/main/kotlin/com/plottwist/tuk/Extension.kt b/build-logic/convention/src/main/kotlin/com/plottwist/tuk/Extension.kt index d91ae8e9..1fa05b0d 100644 --- a/build-logic/convention/src/main/kotlin/com/plottwist/tuk/Extension.kt +++ b/build-logic/convention/src/main/kotlin/com/plottwist/tuk/Extension.kt @@ -11,8 +11,8 @@ fun ApplicationExtension.configureDefaultConfig() { defaultConfig { applicationId = "com.plottwist.tuk" targetSdk = 36 - versionCode = 8 - versionName = "1.0.3" + versionCode = 10 + versionName = "1.0.4" vectorDrawables { useSupportLibrary = true diff --git a/core/data/src/main/java/com/plottwist/core/data/mapper/Gathering.kt b/core/data/src/main/java/com/plottwist/core/data/mapper/Gathering.kt index 0076902c..0be5bc6e 100644 --- a/core/data/src/main/java/com/plottwist/core/data/mapper/Gathering.kt +++ b/core/data/src/main/java/com/plottwist/core/data/mapper/Gathering.kt @@ -38,14 +38,17 @@ fun GatheringDetailData.toDomainModel() : GatheringDetail { gatheringIntervalDays = this.gatheringIntervalDays, sentProposalCount = this.sentProposalCount, receivedProposalCount = this.receivedProposalCount, - members = this.members.map { it.toDomainModel() } + members = this.members.map { it.toDomainModel() }, + isHost = this.isHost ) } fun GatheringMemberData.toDomainModel() : GatheringMember { return GatheringMember( memberId = this.memberId, - memberName = this.memberName + memberName = this.memberName, + isHost = this.isHost, + isMe = this.isMe ) } diff --git a/core/designsystem/src/main/res/drawable/image_double_quotation_marks_white.png b/core/designsystem/src/main/res/drawable/image_double_quotation_marks_white.png new file mode 100644 index 00000000..85187380 Binary files /dev/null and b/core/designsystem/src/main/res/drawable/image_double_quotation_marks_white.png differ diff --git a/core/designsystem/src/main/res/drawable/img_app_name.png b/core/designsystem/src/main/res/drawable/img_app_name.png new file mode 100644 index 00000000..7bd47e19 Binary files /dev/null and b/core/designsystem/src/main/res/drawable/img_app_name.png differ diff --git a/core/designsystem/src/main/res/drawable/img_login_cover.png b/core/designsystem/src/main/res/drawable/img_login_cover.png new file mode 100644 index 00000000..10be73f0 Binary files /dev/null and b/core/designsystem/src/main/res/drawable/img_login_cover.png differ diff --git a/core/designsystem/src/main/res/values/strings.xml b/core/designsystem/src/main/res/values/strings.xml index 996cbb7a..3c48d23c 100644 --- a/core/designsystem/src/main/res/values/strings.xml +++ b/core/designsystem/src/main/res/values/strings.xml @@ -6,7 +6,7 @@ 멈추기 모임을 생성하고\n넌지시 만남을 제안해 보세요 모임 생성하기 - 마지막 알람 + 마지막 연락 말이 안되는거 알지만\n\n\n우리, 어때 받은 초대장 diff --git a/core/domain/src/main/java/com/plottwist/core/domain/model/Gathering.kt b/core/domain/src/main/java/com/plottwist/core/domain/model/Gathering.kt index 1dbbee30..49f53827 100644 --- a/core/domain/src/main/java/com/plottwist/core/domain/model/Gathering.kt +++ b/core/domain/src/main/java/com/plottwist/core/domain/model/Gathering.kt @@ -18,12 +18,15 @@ data class GatheringDetail( val gatheringIntervalDays: Long = 0, val sentProposalCount: Int = 0, val receivedProposalCount: Int = 0, - val members: List = emptyList() + val members: List = emptyList(), + val isHost: Boolean = false ) data class GatheringMember( val memberId: Long = 0, - val memberName: String = "" + val memberName: String = "", + val isHost: Boolean = false, + val isMe: Boolean = false ) data class Purposes( diff --git a/core/network/src/main/java/com/plottwist/core/network/model/gathering/GatheringDetailResponse.kt b/core/network/src/main/java/com/plottwist/core/network/model/gathering/GatheringDetailResponse.kt index b4157c41..fa4e8c08 100644 --- a/core/network/src/main/java/com/plottwist/core/network/model/gathering/GatheringDetailResponse.kt +++ b/core/network/src/main/java/com/plottwist/core/network/model/gathering/GatheringDetailResponse.kt @@ -19,11 +19,14 @@ data class GatheringDetailData( val gatheringIntervalDays: Long, val sentProposalCount: Int, val receivedProposalCount: Int, - val members: List + val members: List, + val isHost: Boolean ) @Serializable data class GatheringMemberData( val memberId: Long, - val memberName: String + val memberName: String, + val isHost: Boolean, + val isMe: Boolean ) diff --git a/core/push/src/main/java/com/plottwist/core/push/TukFirebaseMessagingService.kt b/core/push/src/main/java/com/plottwist/core/push/TukFirebaseMessagingService.kt index 000827c8..34971d95 100644 --- a/core/push/src/main/java/com/plottwist/core/push/TukFirebaseMessagingService.kt +++ b/core/push/src/main/java/com/plottwist/core/push/TukFirebaseMessagingService.kt @@ -2,6 +2,7 @@ package com.plottwist.core.push import android.app.PendingIntent import android.content.Intent +import com.google.firebase.messaging.Constants import com.google.firebase.messaging.FirebaseMessagingService import com.google.firebase.messaging.RemoteMessage import com.plottwist.core.notification.TukNotificationManager @@ -15,20 +16,16 @@ class TukFirebaseMessagingService : FirebaseMessagingService() { @Inject lateinit var tukNotificationManager: TukNotificationManager - override fun onNewToken(token: String) { super.onNewToken(token) } override fun onMessageReceived(message: RemoteMessage) { super.onMessageReceived(message) - - message.notification?.let { notificationMessage -> - val title = notificationMessage.title ?: TukNotificationManager.DEFAULT_TITLE - val description = notificationMessage.body ?: TukNotificationManager.DEFAULT_DESCRIPTION - val deeplink = message.data.get("deepLink") ?: "" - sendNotification(title, description, deeplink) - } + val title = message.data.get("title") ?: "" + val description = message.data.get("body") ?: "" + val deeplink = message.data.get("deepLink") ?: "" + sendNotification(title, description, deeplink) } private fun sendNotification(title: String, description: String, deeplink: String) { @@ -52,4 +49,17 @@ class TukFirebaseMessagingService : FirebaseMessagingService() { ) ) } + + + override fun handleIntent(intent: Intent?) { + val newIntent = intent?.apply { + val newExtras = extras?.apply { + remove(Constants.MessageNotificationKeys.ENABLE_NOTIFICATION) + remove("gcm.notification.e") + } + replaceExtras(newExtras) + } + super.handleIntent(newIntent) + + } } diff --git a/feature/gathering-detail/src/main/java/com/plottwist/feature/gathering_detail/GatheringDetailScreen.kt b/feature/gathering-detail/src/main/java/com/plottwist/feature/gathering_detail/GatheringDetailScreen.kt index cbeb5e80..7809e026 100644 --- a/feature/gathering-detail/src/main/java/com/plottwist/feature/gathering_detail/GatheringDetailScreen.kt +++ b/feature/gathering-detail/src/main/java/com/plottwist/feature/gathering_detail/GatheringDetailScreen.kt @@ -6,8 +6,10 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn @@ -82,6 +84,7 @@ fun GatheringDetailScreen( lastAlarm = state.gatheringDetail.lastPushRelativeTime, sentProposalCount = state.gatheringDetail.sentProposalCount, receivedProposalCount = state.gatheringDetail.receivedProposalCount, + isHost = state.gatheringDetail.isHost, onAlarmSettingClick = { viewModel.handleAction(GatheringDetailAction.ClickAlarmSetting) }, @@ -110,6 +113,7 @@ private fun GatheringDetailScreen( lastAlarm: String, sentProposalCount: Int, receivedProposalCount: Int, + isHost: Boolean, onAlarmSettingClick: () -> Unit, onProposalClick: () -> Unit, onSentProposalClick: () -> Unit, @@ -138,10 +142,14 @@ private fun GatheringDetailScreen( } item(key = Items.ALARM_SETTING) { - GatheringAlarmSetting( - modifier = Modifier.padding(top = 24.dp), - onClick = onAlarmSettingClick - ) + if(isHost) { + GatheringAlarmSetting( + modifier = Modifier.padding(top = 24.dp), + onClick = onAlarmSettingClick + ) + } else { + Spacer(modifier = Modifier.fillMaxWidth().height(44.dp)) + } } item(key = Items.GATHERING_INFO) { @@ -243,6 +251,7 @@ private fun GatheringDetailScreenPreview() { lastAlarm = "3달 전", sentProposalCount = 99, receivedProposalCount = 99, + isHost = true, onAlarmSettingClick = {}, onProposalClick = {}, onSentProposalClick = {}, diff --git a/feature/gathering-detail/src/main/java/com/plottwist/feature/gathering_detail/component/GatheringMembers.kt b/feature/gathering-detail/src/main/java/com/plottwist/feature/gathering_detail/component/GatheringMembers.kt index 2f6b46bc..d81a034d 100644 --- a/feature/gathering-detail/src/main/java/com/plottwist/feature/gathering_detail/component/GatheringMembers.kt +++ b/feature/gathering-detail/src/main/java/com/plottwist/feature/gathering_detail/component/GatheringMembers.kt @@ -9,6 +9,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon @@ -22,7 +23,9 @@ import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.vectorResource import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp import com.plottwist.core.designsystem.R +import com.plottwist.core.designsystem.foundation.TukColorTokens.Gray300 import com.plottwist.core.designsystem.foundation.type.TukPretendardTypography import com.plottwist.core.designsystem.foundation.type.TukSerifTypography import com.plottwist.core.domain.model.GatheringMember @@ -59,15 +62,37 @@ fun GatheringMembers( ) members.forEach { member -> - Text( - text = member.memberName, - style = TukPretendardTypography.body16R, - color = Color(0xFF1f1f1f) - ) + Row( + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(5.dp) + ){ + Text( + text = member.memberName, + style = TukPretendardTypography.body16R, + color = Color(0xFF1f1f1f) + ) + if(member.isMe){ + MemberMarkAsMe() + } + } + } } } +@Composable +fun MemberMarkAsMe(modifier: Modifier = Modifier) { + Text( + modifier = modifier.background( + color = Gray300, + shape = CircleShape + ).padding(horizontal = 5.dp), + text = "나", + style = TukPretendardTypography.body12M.copy( + fontSize = 10.sp + ) + ) +} @Composable fun InvitationMemberText( diff --git a/feature/home/src/main/java/com/plottwist/feature/home/HomeScreen.kt b/feature/home/src/main/java/com/plottwist/feature/home/HomeScreen.kt index 08fe2ce5..82c324c8 100644 --- a/feature/home/src/main/java/com/plottwist/feature/home/HomeScreen.kt +++ b/feature/home/src/main/java/com/plottwist/feature/home/HomeScreen.kt @@ -317,27 +317,41 @@ private fun HomeScreen( HomeAppBar(onMyPageClick) Column( - modifier = Modifier.fillMaxSize().padding( - bottom = BOTTOM_SHEET_PEEK_HEIGHT.dp - ).verticalScroll(verticalScrollState) + modifier = Modifier + .fillMaxSize() + .padding( + bottom = BOTTOM_SHEET_PEEK_HEIGHT.dp + ) + .verticalScroll(verticalScrollState) ) { HomeTitle( modifier = Modifier.height(HOME_TITLE_HEIGHT.dp), name = if(userName is UiState.Success) userName.value else "" ) - - HomeContent( - modifier = Modifier - .padding( - top = homeContentTopPadding - HOME_TITLE_HEIGHT.dp - 40.dp, - bottom = 40.dp - ), - gatherings = if(gatherings is UiState.Success) gatherings.value else Gatherings(), + if(gatherings is UiState.Success && gatherings.value.gatheringOverviews.size >= 2) { + HomeContent( + modifier = Modifier + .padding(top = 80.dp, bottom = 80.dp), + gatherings = gatherings.value, onAddGatheringClick = onAddGatheringClick, onGatheringClick = onGatheringClick - ) + ) + } } } + if(gatherings !is UiState.Success || gatherings.value.gatheringOverviews.size < 2){ + HomeContent( + modifier = Modifier.align(Alignment.Center), + gatherings = if(gatherings is UiState.Success && gatherings.value.gatheringOverviews.size <= 1) { + gatherings.value + } else { + Gatherings() + }, + onAddGatheringClick = onAddGatheringClick, + onGatheringClick = onGatheringClick + ) + } + if(proposalTags is UiState.Success) { HomeBottomSheet( modifier = Modifier diff --git a/feature/home/src/main/java/com/plottwist/feature/home/component/GatheringsCard.kt b/feature/home/src/main/java/com/plottwist/feature/home/component/GatheringsCard.kt index cdc5eb10..73e36281 100644 --- a/feature/home/src/main/java/com/plottwist/feature/home/component/GatheringsCard.kt +++ b/feature/home/src/main/java/com/plottwist/feature/home/component/GatheringsCard.kt @@ -27,6 +27,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.plottwist.core.designsystem.R import com.plottwist.core.designsystem.foundation.TukColorTokens.Gray000 +import com.plottwist.core.designsystem.foundation.TukColorTokens.Gray800 +import com.plottwist.core.designsystem.foundation.TukColorTokens.Gray900 import com.plottwist.core.designsystem.foundation.type.TukPretendardTypography import com.plottwist.core.domain.model.Gatherings @@ -46,7 +48,7 @@ fun GatheringsCard( blur = 6.dp ) .background( - color = Color(0x35FFFFFF), + color = Color(0x88FFFFFF), shape = RoundedCornerShape(20.dp) ) .border( @@ -63,7 +65,7 @@ fun GatheringsCard( ) if(gatherings.gatheringOverviews.isNotEmpty()) { HorizontalDivider( - color = Color(0xFFEFEFEF) + color = Color(0xFFEAEAEA) ) gatherings.gatheringOverviews.forEach { gathering -> @@ -107,7 +109,7 @@ fun CreateGatheringText( Text( text = "모임 생성", style = TukPretendardTypography.body14R, - color = Color(0xFF1F1F1F) + color = Gray900 ) } } @@ -123,7 +125,7 @@ fun GatheringItem( modifier .fillMaxWidth() .clip(RoundedCornerShape(20.dp)) - .padding(vertical = 12.dp) + .padding(vertical = 6.dp) .clickable( interactionSource = null, indication = null @@ -142,7 +144,7 @@ fun GatheringItem( style = TukPretendardTypography.body14M, maxLines = 1, overflow = TextOverflow.Ellipsis, - color = Color(0xFF1f1f1f) + color = Gray900 ) Row ( @@ -150,14 +152,14 @@ fun GatheringItem( ) { Text( text = stringResource(R.string.home_last_alarm), - style = TukPretendardTypography.body14R, - color = Color(0xFF888888) + style = TukPretendardTypography.body12R, + color = Gray800 ) Text( text = lastAlarm, - style = TukPretendardTypography.body14R, - color = Color(0xFF888888) + style = TukPretendardTypography.body12R, + color = Gray800 ) } } diff --git a/feature/home/src/main/java/com/plottwist/feature/home/component/HomeBottomSheet.kt b/feature/home/src/main/java/com/plottwist/feature/home/component/HomeBottomSheet.kt index f5377383..f36740cf 100644 --- a/feature/home/src/main/java/com/plottwist/feature/home/component/HomeBottomSheet.kt +++ b/feature/home/src/main/java/com/plottwist/feature/home/component/HomeBottomSheet.kt @@ -40,6 +40,7 @@ import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp import com.plottwist.core.designsystem.R import com.plottwist.core.designsystem.foundation.TukColorTokens.Gray800 +import com.plottwist.core.designsystem.foundation.TukColorTokens.Gray900 import com.plottwist.core.designsystem.foundation.type.TukSerifTypography import com.plottwist.core.ui.extension.borderExceptBottom import com.plottwist.core.ui.extension.dropShadow @@ -264,7 +265,8 @@ fun DraggableBottomSheet( ) { Text( text = stringResource(R.string.home_bottom_sheet_nudging_text), - style = TukSerifTypography.body14R + style = TukSerifTypography.body14R, + color = Gray900 ) } } diff --git a/feature/login/src/main/java/com/plottwist/feature/login/LoginScreen.kt b/feature/login/src/main/java/com/plottwist/feature/login/LoginScreen.kt index 064c604a..6c6da345 100644 --- a/feature/login/src/main/java/com/plottwist/feature/login/LoginScreen.kt +++ b/feature/login/src/main/java/com/plottwist/feature/login/LoginScreen.kt @@ -1,7 +1,19 @@ package com.plottwist.feature.login +import android.annotation.SuppressLint import android.app.Activity +import androidx.compose.animation.core.EaseInCubic +import androidx.compose.animation.core.EaseInOut +import androidx.compose.animation.core.FastOutLinearInEasing +import androidx.compose.animation.core.FastOutSlowInEasing +import androidx.compose.animation.core.LinearEasing +import androidx.compose.animation.core.LinearOutSlowInEasing +import androidx.compose.animation.core.RepeatMode import androidx.compose.animation.core.animateDpAsState +import androidx.compose.animation.core.animateFloat +import androidx.compose.animation.core.infiniteRepeatable +import androidx.compose.animation.core.keyframes +import androidx.compose.animation.core.rememberInfiniteTransition import androidx.compose.animation.core.tween import androidx.compose.foundation.background import androidx.compose.foundation.border @@ -28,12 +40,16 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @@ -65,16 +81,24 @@ fun LoginScreen( ).googleAuthProvider() } - var postCardAnimated by remember { mutableStateOf(false) } - val postCardPadding by animateDpAsState( - targetValue = if(postCardAnimated) 56.dp else 0.dp, - animationSpec = tween(700) - ) + val infiniteTransition = rememberInfiniteTransition() + val postCardPadding by infiniteTransition.animateFloat( + initialValue = 40f, + targetValue = 40f, // 마지막 키프레임과 동일해야 함 + animationSpec = infiniteRepeatable( + animation = keyframes { + durationMillis = 1800 + delayMillis = 1000 - LaunchedEffect(Unit) { - delay(500) - postCardAnimated = true - } + 40f at 100 using LinearOutSlowInEasing + 380f at 420 using LinearOutSlowInEasing + 330f at 800 using FastOutLinearInEasing + 330f at 1200 using EaseInOut + }, + repeatMode = RepeatMode.Restart + ), + label = "piecewiseValue" + ) viewModel.collectSideEffect { sideEffect -> when (sideEffect) { @@ -114,7 +138,7 @@ fun LoginScreen( @Composable private fun LoginScreen( - postCardPadding : Dp, + postCardPadding: Float, onCloseClicked: () -> Unit, onGoogleLoginButtonClick: () -> Unit, modifier: Modifier = Modifier @@ -131,7 +155,7 @@ private fun LoginScreen( ) Text( - modifier = Modifier.padding(top = 48.dp, bottom = 20.dp), + modifier = Modifier.padding(top = 14.dp, bottom = 20.dp), text = "누군가 나를 떠올리며 \n" + "툭, 건넸어요", textAlign = TextAlign.Center, @@ -142,11 +166,8 @@ private fun LoginScreen( modifier = Modifier.weight(1f), contentAlignment = Alignment.Center ) { - StableImage( - modifier = Modifier - .fillMaxWidth(), - drawableResId = R.drawable.img_login_card, - contentScale = ContentScale.FillWidth + LoginContent( + postCardPadding = postCardPadding ) } @@ -175,31 +196,44 @@ fun LoginAppBar( ) } +@SuppressLint("ConfigurationScreenWidthHeight") @Composable fun LoginContent( - postCardPadding : Dp, + postCardPadding: Float, modifier: Modifier = Modifier ) { + val configuration = LocalConfiguration.current + val density = LocalDensity.current + Box( modifier = modifier, contentAlignment = Alignment.Center ) { - PostCard( - modifier = Modifier - .fillMaxWidth() - .padding(bottom = 18.dp + postCardPadding) - .padding(horizontal = 62.dp) - .aspectRatio(260f / 334f) - ) + with(density) { + PostCard( + modifier = Modifier + .fillMaxWidth() + .padding(bottom = postCardPadding.toDp() ) + .padding(horizontal = 180f.toDp()) + .aspectRatio(260f / 304f) + ) + + StableImage( + modifier = Modifier + .fillMaxWidth() + .padding(top = 4f.toDp()) + .aspectRatio(260f / 364f), + drawableResId = R.drawable.img_login_cover, + contentScale = ContentScale.FillWidth + ) + } + StableImage( - modifier = Modifier - .fillMaxWidth() - .padding(top = 62.dp) - .aspectRatio(260f / 364f), - drawableResId = R.drawable.image_post_cover, - contentScale = ContentScale.FillWidth + modifier = Modifier.align(Alignment.Center), + drawableResId = R.drawable.img_app_name, ) + } } @@ -208,7 +242,7 @@ private fun PostCard( modifier: Modifier = Modifier, shape: RoundedCornerShape = RoundedCornerShape(10.dp) ) { - Column ( + Column( modifier = modifier .clip(shape) .border( @@ -217,7 +251,12 @@ private fun PostCard( shape = shape ) .background( - color = Color(0xFFFAFAFA), + brush = Brush.verticalGradient( + listOf( + Color(0xFFFF3838), + Color(0xFFFFF9F9) + ) + ), shape = shape ) .padding(top = 25.dp, bottom = 12.dp), @@ -225,31 +264,9 @@ private fun PostCard( verticalArrangement = Arrangement.SpaceBetween ) { StableImage( - drawableResId = R.drawable.image_double_quotation_marks + modifier = Modifier.size(20.dp), + drawableResId = R.drawable.image_double_quotation_marks_white, ) - - Row( - modifier = Modifier - .fillMaxWidth() - .padding(horizontal = 24.dp), - horizontalArrangement = Arrangement.SpaceBetween - ) { - Text( - text = stringResource(R.string.post_card_bottom_description_start), - style = TukSerifTypography.body14R.copy( - fontSize = 12.sp - ), - color = Color(0xFF1F1F1F) - ) - - Text( - text = stringResource(R.string.post_card_bottom_description_end), - style = TukSerifTypography.body14R.copy( - fontSize = 12.sp - ), - color = Color(0xFF1F1F1F) - ) - } } } @@ -318,3 +335,13 @@ fun GoogleLoginButton( ) } } + +@Preview +@Composable +private fun LoginScreenPreview() { + LoginScreen( + postCardPadding = 0f, + onCloseClicked = {}, + onGoogleLoginButtonClick = {} + ) +} diff --git a/feature/main/src/main/java/com/plottwist/feature/main/ui/component/TukNavHost.kt b/feature/main/src/main/java/com/plottwist/feature/main/ui/component/TukNavHost.kt index 617f4c96..bbb29b42 100644 --- a/feature/main/src/main/java/com/plottwist/feature/main/ui/component/TukNavHost.kt +++ b/feature/main/src/main/java/com/plottwist/feature/main/ui/component/TukNavHost.kt @@ -255,7 +255,8 @@ fun TukNavHost( popUpTo(Route.Home) { inclusive = true } - launchSingleTop = true + launchSingleTop = false + restoreState = false } ) } diff --git a/feature/proposal-create/src/main/java/com/plottwist/feature/proposal_create/complete/CompleteProposeScreen.kt b/feature/proposal-create/src/main/java/com/plottwist/feature/proposal_create/complete/CompleteProposeScreen.kt index e763fa95..5b849d3c 100644 --- a/feature/proposal-create/src/main/java/com/plottwist/feature/proposal_create/complete/CompleteProposeScreen.kt +++ b/feature/proposal-create/src/main/java/com/plottwist/feature/proposal_create/complete/CompleteProposeScreen.kt @@ -2,6 +2,7 @@ package com.plottwist.feature.proposal_create.complete import android.content.Context import android.content.Intent +import androidx.activity.compose.BackHandler import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement @@ -39,6 +40,10 @@ fun CompleteProposeScreen( val state by viewModel.collectAsState() val context = LocalContext.current + BackHandler { + navigateToHome() + } + viewModel.collectSideEffect { when (it) { CompleteProposeSideEffect.NavigateToHome -> navigateToHome()