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()