-
Notifications
You must be signed in to change notification settings - Fork 2
feat: 마이페이지 공동 카테고리 초대 관리 #803 #867
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
DividerStyle에서 중간 구분선 스타일 Middle을 추가한다 - 높이 10dp - 색상 gray1
우선 xml로 구현 후 Compose로 마이그레이션 예정
- .editorconfig 파일 생성 - ktlint_function_naming_ignore_when_annotated_with=Composable 옵션 추가
- 중간 구분선 구현 - Preview 추가
activity_mypage.xml - 중간 구분선을 ComposeView로 변경 MyPageActivity.kt - dividerMypageMiddle을 MiddleDivider로 setContent
- PreviewParameterProvider 활용
- CenterAlignedTopAppBar, TopAppBar 활용
- menuId: 메뉴에 대한 색인 - title: 메뉴 이름 - iconResId: 메뉴 아이콘 리소스 ID - iconContentDescription: 아이콘 ContentDescription - 열거 아이템: 받은 초대, 보낸 초대
- Divider -> DefaultDivider - 기본 두께: 0.5dp -> 1dp로 변경 - modifier: fillMaxWidth() 제거
- component 패키지 분리 - MiddleDivider 파일 분리 - MenuButton 파일 분리 - 색상, 패딩 변수 private 설정 - PreviewParameterProvider 위치 수정(컨벤션)
- 파일명 TopBar -> DefaultNavigationTopBar 로 변경 - preview 메서드 private 설정
- icon_receive_box - icon_send
- ClickableWithoutRipple: 리플 애니메이션을 제거하는 Modifier 속성 - DefaultAsyncImage: 기본 이미지 비동기 로딩 Composable
- Manifest 수정: InvitationManagementActivity 추가, 일부 개행 수정
- Button에서 Box로 변경 - Modifier에 clickableWithoutRipple 속성 추가 - 텍스트 스타일, 색상 적용
- TopAppBarColors 설정 - Navigation 버튼을 IconButton에서 Icon으로 변경 - Modifier에 clickableWithoutRipple 속성 추가
- InvitationMenuItems -> InvitationSelectionMenuItems
- clickableWithoutRipple 활용
- PrimaryTabRow 활용
- CategoryTitle: 카테고리 제목 - NicknameText: 초대한 사람/초대 받은 사람 닉네임 - ProfileImage: 사용자 프로필 이미지
- ConstraintLayout 활용
- ConstraintLayout 활용
- 생명주기가 Started 이후일 때 마다 Notification 존재 여부를 가져옴 - MyPageMenuButton에 Badge 적용
- DefaultBasicDialogPreview, TopBarComponentsPreview, DisabledDefaultTextButtonPreview, MenuTapPreview
- DefaultBasicDialogPreview -> DefaultAlertDialogPreview - TopBarComponentsPreview -> DefaultNavigationTopBarPreview
불필요한 배경 제거 - ReceivedInvitationPreview - SentInvitationPreview 배경 색상 설정 - EmptyReceivedInvitationPreview : 흰색 배경 - EmptySentInvitationPreview : 흰색 배경 - DefaultEmptyViewPreview : 흰색 배경
불필요한 toLong() 제거
nullable에서 투명 테두리를 기본 인자 값으로 변경
- title을 nullable 처리 - 기본 인자 값: null - null이 아닌 경우 제목을 Compose - Preview 세분화 - 제목이 없는 경우 - 제목 중앙 정렬 - 제목 왼쪽 정렬 - 제목과 부제목 중앙 정렬 - 제목과 부제목 왼쪽 정렬
- InvitationSelectionMenuUiModel -> InvitationTabMenu
- getXXX -> fetchXXX
- 보낸 초대 탭 변경 시 깜빡거림 현상 제거
- ConstraintLayout에 padding 설정으로 Constrain의 margin 제거
- contentDescription 리소스화 - 다이얼로그 제목, 설명 문자열 리소스화
- 선택된 상태, 선택되지 않은 상태 분리
- 디자인 QA 피드백 반영: 초대 관리 화면의 메뉴 바의 내부 간격이 너무 넓다는 피드백
- 디자인 QA 피드백 반영 - 간격, 위치가 부자연스러운 아이콘 변경: 정 중앙에 위치하는 아이콘으로 교체 - 탭 메뉴 내부 여백을 미세하게 조정: 내부 여백 1dp 추가
- 다크모드 시에도 라이트모드와 동일한 UI를 보여주도록 변경 - 다크모드 대응 여부는 추후에 결정
- develop 브랜치와 병합
description을 nullable 처리
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
⭐️ Issue Number
🚩 Summary
주요 구현 내용
카테고리 초대 관리 버튼의 Notification
"카테고리 초대 관리" 버튼의 우측 상단에 Notification을 띄우는 기능을 추가했습니다.
BadgedBox와 Badge를 이용하여 구현했습니다.
MyPageMenuButton의 텍스트를 BadgedBox로 감싸고, Badge가
hasNotification
상태에 따라 설정되도록 하였습니다.Indicator를 나타내는 Badge는 사이즈를 설정하지 않으면 기본적으로 6dp의 크기를 갖습니다.

현재 피그마에 작성된 크기는 5dp*5dp이지만, 실 기기에서 조금 더 작게 보이기에 기본 크기를 적용하였습니다!
받은 초대 / 보낸 초대 선택 메뉴 : PrimaryTabRow, 커스텀 Tab
PrimaryTabRow 와 직접 작성한 MenuTab을 활용하여 초대 관리 화면의 메뉴를 구성했습니다.
기존 PrimaryTabRow 와 Tabs

PrimaryTabRow와 MenuTab을 이용해 만든 메뉴 화면

TabRow와 함께 사용 가능한 Tab을 사용하고자 했으나, indicator의 커스텀이 어렵고 Ripple 애니메이션을 제거할 수 없다는 단점이 있어, 별도의 MenuTab을 만들었습니다.
받은 초대, 보낸 초대 Item : ConstraintLayout
너무 많은 컴포저블의 중첩으로 인한 장풍 현상을 줄이고자, ConstraintLayout을 이용해 Item을 만들었습니다.
또한 카테고리 제목이 너무 긴 경우를 처리하기 위해, Ellipse 설정과 Constraint 설정을 추가했습니다.
overflow = Ellipse
설정Dimension.fillConstraints
Dimension.prefferedWrapContent
Dimension.preferredWrapContent
를 사용했습니다.초대 거절, 취소 시 사용자에게 경고 다이얼로그 출력
초대를 거절하거나 취소할 경우, 사용자가 바로 한번 더 확인할 수 있도록 다이얼로그를 띄웁니다.
초대 수락, 서버 에러 및 예외 발생 시 Toast 출력
초대를 수락하거나 서버 에러 발생, 예외 발생 시 Toast를 출력합니다.
단, 초대 수락과 예외 발생의 경우 StringResource를 사용하고, 서버 에러 문구는 문자열을 사용합니다.
이를 뷰모델에서 하나의 이벤트로 관리하고 UI 로직에서 편리하게 분기할 수 있도록 ToastMessage를 작성했습니다.
InvitationManagementScreen에서 LaunchedEffect로 collect하여 Toast를 띄웁니다.
기본 컴포넌트 작성
공용으로 사용할 수 있는 컴포넌트를 작성했습니다.
🙂 To Reviewer
코드 양이 좀 많은 관계로, 아래 사항들을 위주로 리뷰해주시면 감사하겠습니다🙂
카테고리 초대 관리 기능이 잘 동작하는지 확인해주세요!
작성한 기본 컴포넌트가 사용에 편리할지, 개선할 부분이 있을지 확인해주세요!
@hxeyexn
@s6m1n
📋 To Do