diff --git a/core/designsystem/src/main/java/com/sseotdabwa/buyornot/core/designsystem/components/ActionPopup.kt b/core/designsystem/src/main/java/com/sseotdabwa/buyornot/core/designsystem/components/ActionPopup.kt index 402a88a..22b5a53 100644 --- a/core/designsystem/src/main/java/com/sseotdabwa/buyornot/core/designsystem/components/ActionPopup.kt +++ b/core/designsystem/src/main/java/com/sseotdabwa/buyornot/core/designsystem/components/ActionPopup.kt @@ -132,7 +132,11 @@ fun ActionPopupContent( ) { val pressedColor = BuyOrNotTheme.colors.gray200 Column( - modifier = Modifier.padding(6.dp), + modifier = + Modifier.padding( + horizontal = 6.dp, + vertical = 10.dp, + ), verticalArrangement = Arrangement.spacedBy(4.dp), ) { items.forEach { (label, onClick) -> diff --git a/core/designsystem/src/main/java/com/sseotdabwa/buyornot/core/designsystem/components/ActionSheet.kt b/core/designsystem/src/main/java/com/sseotdabwa/buyornot/core/designsystem/components/ActionSheet.kt index 52fe55f..79c1a34 100644 --- a/core/designsystem/src/main/java/com/sseotdabwa/buyornot/core/designsystem/components/ActionSheet.kt +++ b/core/designsystem/src/main/java/com/sseotdabwa/buyornot/core/designsystem/components/ActionSheet.kt @@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer 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.layout.width @@ -64,7 +63,11 @@ fun ActionSheet( LazyColumn( modifier = Modifier.fillMaxWidth(), verticalArrangement = Arrangement.spacedBy(18.dp), - contentPadding = PaddingValues(vertical = 16.dp), + contentPadding = + PaddingValues( + top = 26.dp, + bottom = 30.dp, + ), ) { items( count = actions.size, @@ -92,9 +95,11 @@ private fun ActionItemRow( modifier = Modifier .fillMaxWidth() - .height(30.dp) .clickable(onClick = onClick) - .padding(horizontal = 24.dp), + .padding( + horizontal = 24.dp, + vertical = 6.dp, + ), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Start, ) { diff --git a/core/designsystem/src/main/java/com/sseotdabwa/buyornot/core/designsystem/components/FeedCard.kt b/core/designsystem/src/main/java/com/sseotdabwa/buyornot/core/designsystem/components/FeedCard.kt index c304b4e..946d299 100644 --- a/core/designsystem/src/main/java/com/sseotdabwa/buyornot/core/designsystem/components/FeedCard.kt +++ b/core/designsystem/src/main/java/com/sseotdabwa/buyornot/core/designsystem/components/FeedCard.kt @@ -86,6 +86,7 @@ fun FeedCard( productLink: String? = null, onLinkClick: (url: String) -> Unit = {}, showProductLinkTooltip: Boolean = false, + onTooltipDismiss: () -> Unit = {}, onImageClick: (imageUrls: List, page: Int) -> Unit = { _, _ -> }, ) { val hasVoted = userVotedOptionIndex != null @@ -140,7 +141,10 @@ fun FeedCard( price = price, productLink = productLink, showTooltip = tooltipVisible, - onTooltipDismiss = { tooltipVisible = false }, + onTooltipDismiss = { + tooltipVisible = false + onTooltipDismiss() + }, onFullscreenClick = { page -> onImageClick(productImageUrls, page) }, onLinkClick = onLinkClick, ) diff --git a/feature/home/src/main/java/com/sseotdabwa/buyornot/feature/home/ui/HomeContract.kt b/feature/home/src/main/java/com/sseotdabwa/buyornot/feature/home/ui/HomeContract.kt index 0e83ef9..cb08b08 100644 --- a/feature/home/src/main/java/com/sseotdabwa/buyornot/feature/home/ui/HomeContract.kt +++ b/feature/home/src/main/java/com/sseotdabwa/buyornot/feature/home/ui/HomeContract.kt @@ -83,6 +83,7 @@ data class HomeUiState( val blockingNickname: String? = null, val blockingUserId: Long? = null, val showSortSheet: Boolean = false, + val isTooltipDismissed: Boolean = false, ) /** @@ -141,6 +142,8 @@ sealed interface HomeIntent { data object ShowSortSheet : HomeIntent data object DismissSortSheet : HomeIntent + + data object DismissTooltip : HomeIntent } /** diff --git a/feature/home/src/main/java/com/sseotdabwa/buyornot/feature/home/ui/HomeScreen.kt b/feature/home/src/main/java/com/sseotdabwa/buyornot/feature/home/ui/HomeScreen.kt index a88532d..85316d4 100644 --- a/feature/home/src/main/java/com/sseotdabwa/buyornot/feature/home/ui/HomeScreen.kt +++ b/feature/home/src/main/java/com/sseotdabwa/buyornot/feature/home/ui/HomeScreen.kt @@ -369,7 +369,6 @@ private fun HomeFeedList( derivedStateOf { listState.firstVisibleItemIndex == 0 && listState.firstVisibleItemScrollOffset == 0 } } - var showLinkTooltip by remember { mutableStateOf(true) } val tooltipTargetIndex = remember(filteredFeeds) { filteredFeeds.indexOfFirst { it.productLink != null } @@ -454,12 +453,13 @@ private fun HomeFeedList( voterProfileImageUrl = uiState.voterProfileImageUrl, isGuest = uiState.userType == UserType.GUEST, modifier = Modifier.animateItem(), - showProductLinkTooltip = showLinkTooltip && index == tooltipTargetIndex, + showProductLinkTooltip = !uiState.isTooltipDismissed && index == tooltipTargetIndex, onVote = { id, opt -> onIntent(HomeIntent.OnVoteClicked(id, opt)) }, onDelete = { id -> onIntent(HomeIntent.ShowDeleteDialog(id)) }, onReport = { id -> onIntent(HomeIntent.OnReportClicked(id)) }, onBlock = { id -> onIntent(HomeIntent.ShowBlockDialog(id)) }, onLinkClick = onLinkClick, + onTooltipDismissed = { onIntent(HomeIntent.DismissTooltip) }, onImageClick = onImageClick, ) } @@ -507,14 +507,14 @@ private fun HomeFeedList( item { if (uiState.selectedTab == HomeTab.MY_FEED) { HomeFeedEmptyView( - modifier = Modifier.padding(top = 140.dp), + modifier = Modifier.padding(top = 120.dp), title = "아직 올린 투표가 없어요", description = "고민되는 상품의 투표를 올려보세요!", onUploadClick = onUploadClick, ) } else { HomeFeedEmptyView( - modifier = Modifier.padding(top = 120.dp), + modifier = Modifier.padding(top = 100.dp), title = "첫번째 투표를 올려보세요!", onUploadClick = onUploadClick, ) @@ -569,7 +569,6 @@ private fun HomeFeedList( selectedCategories = uiState.selectedCategories, onAllCategorySelected = { onIntent(HomeIntent.OnAllCategorySelected) }, onCategoryToggled = { onIntent(HomeIntent.OnCategoryToggled(it)) }, - selectedFilter = uiState.selectedFilter, onShowSortSheet = { onIntent(HomeIntent.ShowSortSheet) }, ) Spacer(modifier = Modifier.height(10.dp)) @@ -604,7 +603,6 @@ private fun FilterChipRow( selectedCategories: Set, onAllCategorySelected: () -> Unit, onCategoryToggled: (FeedCategory) -> Unit, - selectedFilter: FilterChip, onShowSortSheet: () -> Unit, ) { val listState = rememberLazyListState() @@ -676,8 +674,12 @@ private fun FilterChipRow( ) } }, - contentPadding = PaddingValues(horizontal = 8.dp), - horizontalArrangement = Arrangement.spacedBy(8.dp), + contentPadding = + PaddingValues( + start = 6.dp, + end = 20.dp, + ), + horizontalArrangement = Arrangement.spacedBy(6.dp), verticalAlignment = Alignment.CenterVertically, ) { item { @@ -724,6 +726,7 @@ private fun FeedItemCard( onReport: (String) -> Unit, onBlock: (String) -> Unit, onLinkClick: (url: String) -> Unit, + onTooltipDismissed: () -> Unit = {}, onImageClick: (imageUrls: List, page: Int) -> Unit = { _, _ -> }, ) { Column { @@ -755,6 +758,7 @@ private fun FeedItemCard( productLink = feed.productLink, onLinkClick = onLinkClick, showProductLinkTooltip = showProductLinkTooltip, + onTooltipDismiss = onTooltipDismissed, onImageClick = onImageClick, ) diff --git a/feature/home/src/main/java/com/sseotdabwa/buyornot/feature/home/ui/HomeViewModel.kt b/feature/home/src/main/java/com/sseotdabwa/buyornot/feature/home/ui/HomeViewModel.kt index cdc74f4..3ff2d52 100644 --- a/feature/home/src/main/java/com/sseotdabwa/buyornot/feature/home/ui/HomeViewModel.kt +++ b/feature/home/src/main/java/com/sseotdabwa/buyornot/feature/home/ui/HomeViewModel.kt @@ -132,6 +132,7 @@ class HomeViewModel @Inject constructor( } is HomeIntent.ShowSortSheet -> updateState { it.copy(showSortSheet = true) } is HomeIntent.DismissSortSheet -> updateState { it.copy(showSortSheet = false) } + is HomeIntent.DismissTooltip -> updateState { it.copy(isTooltipDismissed = true) } } } diff --git a/feature/notification/src/main/java/com/sseotdabwa/buyornot/feature/notification/ui/NotificationScreen.kt b/feature/notification/src/main/java/com/sseotdabwa/buyornot/feature/notification/ui/NotificationScreen.kt index 91b9a79..156669e 100644 --- a/feature/notification/src/main/java/com/sseotdabwa/buyornot/feature/notification/ui/NotificationScreen.kt +++ b/feature/notification/src/main/java/com/sseotdabwa/buyornot/feature/notification/ui/NotificationScreen.kt @@ -286,7 +286,7 @@ private fun NotificationFilterRow( LazyRow( modifier = Modifier.fillMaxWidth(), contentPadding = PaddingValues(horizontal = 20.dp), - horizontalArrangement = Arrangement.spacedBy(8.dp), + horizontalArrangement = Arrangement.spacedBy(6.dp), ) { items(filters) { filter -> val filterText = diff --git a/feature/upload/src/main/java/com/sseotdabwa/buyornot/feature/upload/ui/UploadScreen.kt b/feature/upload/src/main/java/com/sseotdabwa/buyornot/feature/upload/ui/UploadScreen.kt index 4848def..9200513 100644 --- a/feature/upload/src/main/java/com/sseotdabwa/buyornot/feature/upload/ui/UploadScreen.kt +++ b/feature/upload/src/main/java/com/sseotdabwa/buyornot/feature/upload/ui/UploadScreen.kt @@ -11,6 +11,7 @@ import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.PickVisualMediaRequest import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.foundation.background +import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -706,7 +707,12 @@ private fun SelectedImagePreview( modifier = Modifier .size(68.dp) - .clip(RoundedCornerShape(12.dp)), + .clip(RoundedCornerShape(12.dp)) + .border( + width = 1.dp, + color = BuyOrNotTheme.colors.gray300, + shape = RoundedCornerShape(12.dp), + ), contentAlignment = Alignment.TopEnd, ) { AsyncImage(