Skip to content

[FEATURE] 신고 API 연동 - #259

Merged
eum018 merged 14 commits into
developfrom
feature/#252-report-api-connection
Jun 16, 2026
Merged

[FEATURE] 신고 API 연동#259
eum018 merged 14 commits into
developfrom
feature/#252-report-api-connection

Conversation

@eum018

@eum018 eum018 commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

📌 개요

채팅, 커뮤니티, 유저별 신고 api를 연동을 목적으로 합니다.


🧩 작업 내용

  • ReportRemoteDatasource, ReportRepository 정의
  • ReportUseCase들 정의
  • 각 Controller와 연동

📎 참고 사항

eum018 and others added 5 commits June 15, 2026 12:59
기존 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>
@eum018
eum018 requested review from heoeunseo08 and ryusuye0n June 15, 2026 04:04
@eum018 eum018 self-assigned this Jun 15, 2026
@eum018 eum018 added the feature 새로운 기능 label Jun 15, 2026
@eum018 eum018 linked an issue Jun 15, 2026 that may be closed by this pull request
3 tasks

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread lib/core/design_system/components/custom_report_dialog.dart Outdated
Comment thread lib/core/design_system/components/custom_report_dialog.dart
Comment thread lib/core/design_system/components/custom_tag_card.dart Outdated
Comment thread lib/core/design_system/components/custom_report_dialog.dart
Comment thread lib/core/router/bindings/report_binding.dart Outdated
Comment thread lib/presentation/chat/controllers/chat_room_controller.dart
Comment thread lib/presentation/chat/screens/chat_room_screen.dart
Comment thread lib/presentation/post/controllers/post_view_controller.dart
Comment thread lib/presentation/post/screens/post_detail_screen.dart
eum018 and others added 9 commits June 15, 2026 13:55
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>

@heoeunseo08 heoeunseo08 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다.

@ryusuye0n ryusuye0n left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다

@eum018
eum018 merged commit 9f0112c into develop Jun 16, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature 새로운 기능

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE] 신고 API 연동

3 participants