From 1c47c8bd12fdb0aa99364a32ca9ef04438c4504b Mon Sep 17 00:00:00 2001 From: Ju Yungyeom Date: Wed, 22 Oct 2025 16:27:26 +0900 Subject: [PATCH 1/2] #691 [feature] Add isMine flag to FolderScreen --- .../screen/folder/FolderScreen.kt | 97 +++++++++++-------- 1 file changed, 58 insertions(+), 39 deletions(-) diff --git a/presentation/src/main/java/daily/dayo/presentation/screen/folder/FolderScreen.kt b/presentation/src/main/java/daily/dayo/presentation/screen/folder/FolderScreen.kt index 1ae449bb..eeb3e142 100644 --- a/presentation/src/main/java/daily/dayo/presentation/screen/folder/FolderScreen.kt +++ b/presentation/src/main/java/daily/dayo/presentation/screen/folder/FolderScreen.kt @@ -82,6 +82,7 @@ import daily.dayo.presentation.view.TopNavigation import daily.dayo.presentation.view.dialog.ConfirmDialog import daily.dayo.presentation.viewmodel.FolderUiState import daily.dayo.presentation.viewmodel.FolderViewModel +import daily.dayo.presentation.viewmodel.ProfileViewModel import kotlinx.coroutines.flow.flowOf @Composable @@ -92,10 +93,12 @@ fun FolderScreen( onPostMoveClick: () -> Unit, onWritePostWithFolderClick: () -> Unit, onBackClick: () -> Unit, - folderViewModel: FolderViewModel = hiltViewModel() + folderViewModel: FolderViewModel = hiltViewModel(), + profileViewModel: ProfileViewModel = hiltViewModel() ) { val folderUiState by folderViewModel.uiState.collectAsStateWithLifecycle() val folderPosts = folderUiState.folderPosts.collectAsLazyPagingItems() + val isMine = folderUiState.folderInfo.memberId == profileViewModel.currentMemberId val context = LocalContext.current val lifecycleOwner = LocalLifecycleOwner.current @@ -155,6 +158,7 @@ fun FolderScreen( } FolderScreen( + isMine = isMine, folderUiState = folderUiState, folderPosts = folderPosts, optionMenu = optionMenu, @@ -197,6 +201,7 @@ fun FolderScreen( @Composable private fun FolderScreen( + isMine: Boolean, folderUiState: FolderUiState, folderPosts: LazyPagingItems, optionMenu: List, @@ -243,20 +248,22 @@ private fun FolderScreen( } }, rightIcon = { - IconButton( - onClick = { optionExpanded.value = optionExpanded.value.not() } - ) { - Icon( - painter = painterResource(id = R.drawable.ic_option_horizontal), - contentDescription = stringResource(id = R.string.folder_option), - tint = Dark + if (isMine) { + IconButton( + onClick = { optionExpanded.value = optionExpanded.value.not() } + ) { + Icon( + painter = painterResource(id = R.drawable.ic_option_horizontal), + contentDescription = stringResource(id = R.string.folder_option), + tint = Dark + ) + } + + FolderDropdownMenu( + menuItems = optionMenu, + expanded = optionExpanded ) } - - FolderDropdownMenu( - menuItems = optionMenu, - expanded = optionExpanded - ) } ) } @@ -297,7 +304,7 @@ private fun FolderScreen( ) { innerPadding -> Column(modifier = Modifier.padding(innerPadding)) { if (!isEditMode) { - FolderInformation(folderInfo, onWritePostWithFolderClick) + FolderInformation(isMine, folderInfo, onWritePostWithFolderClick) } FolderHeader( postCount = folderInfo.postCount, @@ -318,7 +325,11 @@ private fun FolderScreen( } @Composable -private fun FolderInformation(folderInfo: FolderInfo, onWritePostWithFolderClick: () -> Unit) { +private fun FolderInformation( + isMine: Boolean, + folderInfo: FolderInfo, + onWritePostWithFolderClick: () -> Unit +) { Column( modifier = Modifier .fillMaxWidth() @@ -357,32 +368,34 @@ private fun FolderInformation(folderInfo: FolderInfo, onWritePostWithFolderClick style = DayoTheme.typography.b6 ) - Spacer(modifier = Modifier.height(16.dp)) - - Button( - onClick = onWritePostWithFolderClick, - modifier = Modifier - .fillMaxWidth() - .height(40.dp), - shape = RoundedCornerShape(12.dp), - colors = ButtonDefaults.buttonColors( - containerColor = Gray6_F0F1F3, - contentColor = Gray2_767B83 - ), - contentPadding = PaddingValues(vertical = 9.5.dp) - ) { - Icon( - imageVector = Icons.Filled.Add, - contentDescription = stringResource(id = R.string.folder_post_add_icon_description) - ) + if (isMine) { + Spacer(modifier = Modifier.height(16.dp)) + + Button( + onClick = onWritePostWithFolderClick, + modifier = Modifier + .fillMaxWidth() + .height(40.dp), + shape = RoundedCornerShape(12.dp), + colors = ButtonDefaults.buttonColors( + containerColor = Gray6_F0F1F3, + contentColor = Gray2_767B83 + ), + contentPadding = PaddingValues(vertical = 9.5.dp) + ) { + Icon( + imageVector = Icons.Filled.Add, + contentDescription = stringResource(id = R.string.folder_post_add_icon_description) + ) - Spacer(modifier = Modifier.width(4.dp)) + Spacer(modifier = Modifier.width(4.dp)) - Text( - text = stringResource(id = R.string.folder_post_add), - color = Gray2_767B83, - style = DayoTheme.typography.b5 - ) + Text( + text = stringResource(id = R.string.folder_post_add), + color = Gray2_767B83, + style = DayoTheme.typography.b5 + ) + } } } } @@ -632,8 +645,11 @@ private fun PreviewFolderScreen() { selectedPosts = emptySet() ) + val isMine = false + DayoTheme { FolderScreen( + isMine = isMine, folderUiState = folderUiState, folderPosts = folderUiState.folderPosts.collectAsLazyPagingItems(), optionMenu = listOf(), @@ -672,8 +688,11 @@ private fun PreviewFolderScreenEditMode() { selectedPosts = emptySet() ) + val isMine = true + DayoTheme { FolderScreen( + isMine = isMine, folderUiState = folderUiState, folderPosts = folderUiState.folderPosts.collectAsLazyPagingItems(), optionMenu = listOf(), From 65532b17feab1962b78f1fb14066b3926a77a035 Mon Sep 17 00:00:00 2001 From: Ju Yungyeom Date: Wed, 22 Oct 2025 16:29:55 +0900 Subject: [PATCH 2/2] [layout] Add vertical alignment to FolderSortSelector --- .../java/daily/dayo/presentation/screen/folder/FolderScreen.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/presentation/src/main/java/daily/dayo/presentation/screen/folder/FolderScreen.kt b/presentation/src/main/java/daily/dayo/presentation/screen/folder/FolderScreen.kt index eeb3e142..ae737c46 100644 --- a/presentation/src/main/java/daily/dayo/presentation/screen/folder/FolderScreen.kt +++ b/presentation/src/main/java/daily/dayo/presentation/screen/folder/FolderScreen.kt @@ -490,7 +490,8 @@ private fun FolderSortSelector(folderOrder: FolderOrder, onClickSort: () -> Unit } Row( - modifier = Modifier.clickableSingle { onClickSort() } + modifier = Modifier.clickableSingle { onClickSort() }, + verticalAlignment = Alignment.CenterVertically ) { Icon( painter = painterResource(id = R.drawable.ic_sort),