그룹 관리#18
Conversation
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! 이 Pull Request는 그룹 관리 기능을 대폭 강화하고, 백엔드 API 명세 변경에 맞춰 프론트엔드 로직을 최신화합니다. 사용자 경험을 개선하기 위해 그룹 멤버 관리, 가입 신청 처리, 그룹 정보 수정 및 삭제 기능을 추가했으며, React Query 훅을 재구성하여 데이터 관리의 효율성과 코드의 모듈성을 높였습니다. 또한, 전반적인 에러 처리 방식을 개선하여 사용자에게 더욱 명확한 피드백을 제공합니다. Highlights
Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
이번 PR은 그룹 관리 기능을 대폭 개선하고 관련 코드 구조를 체계적으로 리팩터링하는 중요한 변경사항을 담고 있습니다. API 명세 최신화, 멤버 관리 기능 구현, 쿼리 구조 분리 등 전반적인 코드 품질과 유지보수성을 크게 향상시킨 점이 인상적입니다. 특히, useGroupMemberManageAction과 같은 커스텀 훅을 통해 복잡한 로직을 캡슐화하고, showErrorToast 유틸리티를 도입하여 에러 처리를 일관되게 만든 점이 돋보입니다. 또한, GroupGenerateForm을 재사용 가능하도록 리팩터링하여 그룹 수정 기능을 효율적으로 구현한 것도 좋은 접근 방식입니다. 몇 가지 사소한 수정 제안(파일 인코딩, 문서 오타)을 드렸지만, 전반적으로 매우 완성도 높은 PR이라고 생각합니다.
| ### 2.3 lint 규칙 | ||
|
|
||
| - 코드의 마지막엔 항상 세미콜론을 붙힌다. | ||
| - api 예외 처리시 shared/lib/api/error-toast.tsdml showErrorToast 함수를 사용한다. 기본적인 예외 toast 문구는 shared/constants/toast.ts에서 도메인별로 관리한다. |
There was a problem hiding this comment.
error-toast.tsdml 파일 확장자에 오타가 있는 것 같습니다. .ts가 정확한 확장자로 보입니다.
| - api 예외 처리시 shared/lib/api/error-toast.tsdml showErrorToast 함수를 사용한다. 기본적인 예외 toast 문구는 shared/constants/toast.ts에서 도메인별로 관리한다. | |
| - api 예외 처리시 shared/lib/api/error-toast.ts showErrorToast 함수를 사용한다. 기본적인 예외 toast 문구는 shared/constants/toast.ts에서 도메인별로 관리한다. |
| @@ -1,16 +1,18 @@ | |||
| "use client"; | |||
| "use client"; | |||
#️⃣연관된 이슈
#14
📝작업 내용
1) API 최신화 (
e2254e9)REQUEST_PATHS.GROUPS.MEMBERS,KICK_MEMBER,TRANSFER_OWNER를 추가/정비했습니다.OAuthLoginResponse)과 세션 체크(hasUserSession) 기준 상태코드를 최신 규격으로 반영했습니다.keyword/cursor/size파라미터를 기준으로 정리했습니다.presignedUrlResponses,presignedUrlResponseDtos)를 모두 대응하도록 보완했습니다.2) 멤버 목록/관리 기능 구현 (
71d7722)/group/[id]/members페이지에서 멤버 목록 조회를 구현했습니다.role=OWNER)일 때만 멤버 카드에그룹장 양도,추방액션을 노출하도록 분기했습니다.processingMemberId), 성공/실패 토스트를 표시합니다.detail/menu/members쿼리를 함께 무효화해서 화면 상태를 즉시 동기화합니다.3) 그룹 쿼리 구조 분리 (
0bd495c)group.queries.ts에 몰려 있던 쿼리를 페이지/목적 단위 훅으로 분리했습니다.group.query-keys.ts,group.query-utils.ts를 추가했습니다.useGroupDetailQuery,useGroupMenuQuery,useGroupMembersQuery,usePublicGroupsInfiniteQuery로 역할을 분리했습니다.문제 해결
id(string) 사용으로 생길 수 있는 파싱/유효성 문제를 공통 유틸로 방어했습니다.showErrorToast+ 도메인별TOAST_MESSAGES로 일원화했습니다.유의사항
transferGroupOwner,logout요청은 빈 바디여도application/x-www-form-urlencoded헤더를 유지해야 합니다.routeGroupId가 유효하지 않으면 쿼리를 실행하지 않도록(enabled) 방어 로직을 유지해야 합니다.GROUP_QUERY_KEYS기준 invalidate 범위를 함께 설계해야 회귀를 줄일 수 있습니다.주요 변경 파일
shared/constants/paths.tsentities/group/model/api/types.tsentities/group/model/api/getGroupMembers.tsentities/group/model/api/kickGroupMember.tsentities/group/model/api/transferGroupOwner.tsfeatures/group/members/model/useGroupMemberManageAction.tsapp/group/[id]/members/page.tsxentities/group/queries/group.query-keys.tsentities/group/queries/group.query-utils.tsentities/group/queries/useGroupDetailQuery.tsentities/group/queries/useGroupMembersQuery.tsentities/group/queries/useGroupMenuQuery.tsentities/group/queries/usePublicGroupsInfiniteQuery.ts검증/리스크
feat/manage-group) 기준으로 정리했습니다.스크린샷 (선택)
그룹장일시
