[FEATURE] 신고 API 연동 - #259
Conversation
기존 tag/color 파라미터를 label로 통일하고, 내부 선택 상태를 컴포넌트가 직접 관리하도록 정리하여 채팅/커뮤니티/검색 화면에서 동일한 디자인의 태그 카드를 일관되게 재사용할 수 있도록 했다. Resolve: #252 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ReportType/ReportReason enum, ReportRequestModel, ReportRemoteDatasource, ReportRepository/ReportRepositoryImpl, ReportUseCase 추가. ApiConstants에 report 엔드포인트 추가. Resolve: #252 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
stausCode 오타를 statusCode로 수정하고 호출부(PostRemoteDatasource)도 함께 정정. Resolve: #252 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
PostReportDialog/UserReportPopup을 ReportType 기반 CustomReportDialog로 통합하고 ReportBinding을 전역 등록하여 게시물/유저/채팅방 신고에서 공용으로 사용하도록 적용. ChatRoomController에 report() 추가 및 채팅방 메뉴 신고 기능 연동. ChatRoomController 메서드명 정리 (sendChat→sendMessage, backChatRoom→back, quitChat→quit). 중복 다이얼로그(PostReportDialog, UserReportPopup, ReportReasonChip) 제거. Resolve: #252 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ChatRoomController의 메서드명 변경(sendChat→sendMessage)에 맞춰 호출부를 정리. Resolve: #252 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Code Review
This pull request introduces a unified reporting system, replacing specific report dialogs with a reusable CustomReportDialog and implementing the necessary backend data sources, repositories, and use cases. Feedback focuses on refactoring CustomTagCard back to a controlled StatelessWidget to prevent state loss, correcting the validation logic in CustomReportDialog to allow submitting reports with either tags or details, and adhering to GetX best practices by using Get.dialog instead of passing BuildContext to controllers.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
Gemini 코드 리뷰 반영하여 CustomTagCard의 내부 상태(isFocus)를 제거하고 isSelected/onTap 기반 controlled 컴포넌트로 전환. 각 사용처는 부모 컨트롤러의 RxSet 상태(selectTagList, reviewTags, _selectedReasons)를 단일 진실 소스로 사용하도록 정리. 아울러 ListView.separated의 itemBuilder는 lazy하게 호출되어 Obx가 의존성을 추적하지 못하는 문제가 있어, Obx를 개별 아이템 단위로 감싸도록 수정 (Community 화면에서 발생한 GetX "improper use of Obx" 런타임 오류 수정). Resolve: #252 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
material.dart가 이미 re-export하는 cupertino.dart, widgets.dart import를 제거하여 flutter analyze의 unnecessary_import 경고를 해소. Resolve: #252 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
AppDateUtils.tryParseUtc는 timezone 정보가 없는 서버 타임스탬프를 UTC로 간주하여 .toLocal()로 변환하는데, 기존 테스트는 변환 없이 로컬 시간으로 해석한 값을 기대해 KST 환경에서 실패함. 구현체와 동일하게 UTC로 파싱 후 .toLocal()한 값을 기대값으로 수정. Resolve: #252 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Get.lazyPut/Get.find 시 ReportRepositoryImpl 구현체 타입 대신 ReportRepository 인터페이스 타입을 사용하도록 수정하여 의존성 역전 원칙을 준수. Resolve: #252 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… 변경" 댓글 생성 API 응답에 생성된 댓글 데이터가 포함되지 않아, CommentModel 대신 success 여부만 반환하도록 정리 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…을 bool로 변경" data 레이어 변경에 맞춰 인터페이스 및 유스케이스 시그니처를 success 여부(bool) 기준으로 정리 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
PostCommentCard에서 댓글을 길게 누르면 신고 메뉴가 뜨고, 선택 시 CustomReportDialog로 댓글 신고 가능 PostViewController에 reportComment 추가 댓글 삭제 시 fetchComments() 대신 로컬 목록에서 바로 제거하도록 변경 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ChatList를 화면 가로 패딩으로 감싸 다른 화면과 여백 통일 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
📌 개요
채팅, 커뮤니티, 유저별 신고 api를 연동을 목적으로 합니다.
🧩 작업 내용
📎 참고 사항