Conversation
There was a problem hiding this comment.
🤖 AI 코드 리뷰 - 종합(핵심) 관점
이번 PR은 약속 생성 기능을 추가하고, 기존 @objc 셀렉터 기반 액션을 UIAction 클로저 방식으로 일괄 전환하며, DatePickerSheetViewController 리네이밍 등 리팩토링을 포함한다. 약속 생성 실패 시 사용자에게 아무런 피드백이 없고, create()가 중복 호출될 수 있는 구조적 문제가 존재한다. SearchPlaceCardViewController에서 .onlyHeader 케이스가 .dimmed와 동일한 초기화 분기를 사용하지만 레이아웃 분기에서는 .plain과 묶여 처리되어 의도가 불명확하다.
snughnu
left a comment
There was a problem hiding this comment.
리뷰노트 확인했습니다 수고하셨어요 🙊
확인 카드로의 애니메이션도 좋은거 같습니다
There was a problem hiding this comment.
🤖 AI 코드 리뷰 - 종합(핵심) 관점
이번 PR은 약속 생성 화면(ViewController, ViewModel, UseCase, Repository)을 새로 추가하고, 기존 컴포넌트들의 버튼 액션 방식을 @objc+addTarget에서 UIAction+addAction으로 일괄 전환한 변경이다. 전반적으로 레이어 분리 구조는 유지되어 있으나, ViewModel의 스레드 안전성 문제, create() 중복 호출 방어 로직의 누락, DatePickerSheetViewController에서 initialDate 제거로 인한 동작 변경 등 버그성 이슈가 존재한다. UIAction 전환 시 FilterTagBox에서 action.sender 캐스팅을 사용하는 부분은 깨지기 쉬운 구조다.
JIRA
📝 작업 내용
📌 요약
🔍 상세
[1] 날짜 피커 재사용
경로 검색 화면에서 사용했던 날짜 피커를 재사용했습니다.
Presentation/Component/로 이동하고, 해당 시트의 타이틀을 입력 받을 수 있도록 수정했습니다.관련 커밋
[2] 약속 생성 후 확인 카드와 연결
약속 생성 버튼 탭 -> 서버에 신규 약속 등록 -> 성공 응답 -> 신규 약속 확인 카드 표시의 흐름을 만들었습니다.약속 확인 카드에 대해 별도의 view controller를 만들고 내비게이팅 할 필요 없이, 같은 view model과 view controller 안에서 진행해도 되겠다고 생각했습니다.
약속 생성 카드는 view model과 데이터 바인딩을 하지만, 약속 확인 카드는 생성 시에 정보를 넘겨받고 바인딩이 없습니다.
확인 카드로 넘어갈 때는 애니메이션 표현을 적용해봤습니다.
💬 리뷰 노트
액션 연결 방식 통일
버튼과 같은 컴포넌트에 액션을 연결하는 방식이 통일되지 않았던 상태였습니다.
약속 생성 화면의 서브 컴포넌트를 작업했을 때
addTarget을 사용했는데, 이는@objc메소드 설정이 필요한 방식입니다.더 간단하게 설정할 수 있는
addAction으로 통일했습니다.관련 커밋
장소 검색 결과 영역의 높이 설정
이전 PR에서 장소 검색 결과 영역의 높이를 300으로 하드코딩한 것이 문제 없다고 말씀드렸었습니다.
약속 생성 화면에서는 장소 검색 카드를 sheet(medium 크기)에 넣었는데, mini 기종에서 이 높이가 다른 영역을 침범해 UI가 깨지는 문제가 생겼습니다.
높이 300 제약조건은 유지하되, 이 제약조건의 우선순위를
.defaultLow로 낮춰 필요한 상황에서는 줄어들도록 수정했습니다.관련 커밋
장소 검색 결과 반영 흐름 수정
장소 검색을 요청하고 결과가 보이기 전 찰나에 검색 결과가 존재하지 않는다는 텍스트가 보이는 문제가 존재했습니다.
검색 시작 -> 결과 비어있음 -> 존재하지 않음 텍스트 표시 -> 결과 도착 -> 결과 표시의 흐름이 문제였습니다.isSearching이라는 플래그를 만들어 검색 중에는 해당 텍스트가 보이지 않도록 수정했습니다.관련 커밋
📸 영상 / 이미지
WORK22.promax.mov
WORK22.mini.mov