fix: 기록 수정 화면에서의 로직 개선#252
Conversation
WalkthroughNoteEdit 플로우의 감정 및 텍스트 필드 변경사항을 실시간 추적하도록 리팩토링하고, 초기값 대비 차이 감지 시에만 저장/편집 버튼을 활성화하는 기능을 구현했습니다. 이벤트 기반 아키텍처로 통합하여 상태 변화를 ViewModel에 전달합니다. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant NoteEditView
participant NoteEditViewController
participant NoteEditViewModel
participant EmotionEditViewController
User->>NoteEditView: 텍스트 입력 (page/sentence/appreciation)
NoteEditView->>NoteEditViewController: pageDidChange/sentenceDidChange/appreciationDidChange 이벤트 발행
NoteEditViewController->>NoteEditViewModel: 해당 액션 전달
NoteEditViewModel->>NoteEditViewModel: currentFormData 업데이트<br/>checkForDiff() 호출<br/>isDiff 계산
NoteEditViewModel-->>NoteEditViewController: statePublisher.isDiff 업데이트
NoteEditViewController->>NoteEditView: setSaveButtonEnabled(isDiff)
NoteEditView->>User: 저장 버튼 활성화/비활성화
User->>NoteEditView: 감정 편집 버튼 터치
NoteEditView->>NoteEditViewController: emotionEditViewEvent (.editButtonTapped)
NoteEditViewController->>EmotionEditViewController: 감정 선택 화면 표시
User->>EmotionEditViewController: 감정 선택 변경
EmotionEditViewController->>NoteEditViewController: emotionDidChange 이벤트 (선택된 감정)
NoteEditViewController->>NoteEditViewModel: emotionSelected 액션
NoteEditViewModel->>NoteEditViewModel: initialSelectedEmotion과 비교<br/>checkForDiff() 호출<br/>isDiff 계산
NoteEditViewModel-->>NoteEditViewController: statePublisher.isDiff 업데이트
NoteEditViewController->>NoteEditView: setSaveButtonEnabled(isDiff)
NoteEditView->>User: 저장 버튼 활성화/비활성화
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 분 주의가 필요한 부분:
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro 📒 Files selected for processing (5)
🧰 Additional context used🧠 Learnings (3)📓 Common learnings📚 Learning: 2025-08-26T07:08:40.739ZApplied to files:
📚 Learning: 2025-07-28T10:44:32.256ZApplied to files:
🧬 Code graph analysis (5)src/Projects/BKPresentation/Sources/MainFlow/NoteEdit/View/NoteEditViewController.swift (2)
src/Projects/BKPresentation/Sources/MainFlow/NoteEdit/View/NoteEditView.swift (1)
src/Projects/BKPresentation/Sources/MainFlow/NoteEdit/View/EmotionEditViewController.swift (1)
src/Projects/BKPresentation/Sources/MainFlow/NoteEdit/View/EmotionEditView.swift (1)
src/Projects/BKPresentation/Sources/MainFlow/NoteEdit/ViewModel/NoteEditViewModel.swift (1)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
🔇 Additional comments (17)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
🔗 관련 이슈
📘 작업 유형
📙 작업 내역
🧪 테스트 내역
🎨 스크린샷 또는 시연 영상 (선택)
Simulator.Screen.Recording.-.ReedDefaultSize.-.2025-11-07.at.08.24.27.mp4
✅ PR 체크리스트
💬 추가 설명 or 리뷰 포인트 (선택)
@Published를 사용하였습니다. 그리고 ViewEvent 구조로 개편하였습니다.Summary by CodeRabbit
출시 노트
새 기능
버그 수정
리팩터