Skip to content

Conversation

@clxxrlove
Copy link
Member

🔗 관련 이슈

📙 작업 내역

  • 디데이 등록 UI 구현
  • 이전 PR들에 대한 수정사항 포함

🎨 스크린샷 또는 시연 영상 (선택)

기능 미리보기 기능 미리보기 기능 미리보기
기능 설명 기능 설명 기능 설명

💬 추가 설명 or 리뷰 포인트 (선택)

  • 작업 내용이 너무 많아서 PR 하나하나 돌아다니면서 하는 거 보다 한 번에 해버렸으..
    • 2abce50 부터 이전 PR 수정사항 확인하면 됨
    • 6c66b57 여기서부터 3개는 디데이 등록

@coderabbitai
Copy link

coderabbitai bot commented Jan 30, 2026

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • 🔍 Trigger a full review
📝 Walkthrough

Walkthrough

온보딩 플로우(연결, 코드 입력, 프로필, 기념일)를 ComposableArchitecture로 완전 구현하고, 디자인 시스템을 확장(네비게이션 바, 토스트, 텍스트필드)한 후, 라우트 기반 네비게이션 패턴을 정의합니다.

Changes

Cohort / File(s) Summary
Onboarding Feature - Connect Reducer & View
Projects/Feature/Onboarding/Sources/Connect/OnboardingConnect(Reducer|View).swift, Projects/Feature/Onboarding/Sources/Connect/ShareSheet.swift
사용자가 파트너와 연결하는 화면을 구현. 직접 연결 또는 초대 링크 공유 옵션 제공. ShareSheet 래퍼로 네이티브 공유 기능 통합.
Onboarding Feature - CodeInput Reducer & View
Projects/Feature/Onboarding/Sources/CodeInput/OnboardingCodeInput(Reducer|View).swift
8자 초대 코드 입력 화면 구현. 코드 검증, 클립보드 복사, 포커스 관리, 완료 버튼 활성화 로직 포함.
Onboarding Feature - Profile Reducer & View
Projects/Feature/Onboarding/Sources/Profile/OnboardingProfile(Reducer|View).swift, Projects/Feature/Onboarding/Sources/Profile/ProfanityFilter.swift
닉네임 입력 화면 구현. 길이 검증(2-8자), 욕설 필터링, 실시간 유효성 피드백 제공.
Onboarding Feature - Dday Reducer & View
Projects/Feature/Onboarding/Sources/Dday/OnboardingDday(Reducer|View).swift
기념일 등록 화면 구현. 커스텀 캘린더 시트 통합, 날짜 선택 및 포맷팅.
Onboarding Feature - Coordinator & Navigation
Projects/Feature/Onboarding/Sources/OnboardingCoordinator.swift, Projects/Feature/Onboarding/Sources/OnboardingCoordinatorView.swift, Projects/Feature/Onboarding/Sources/OnboardingRoute.swift
온보딩 전체 플로우 조정. 라우트 기반 네비게이션(Route enum + 배열), 자식 reducer 스코핑, 화면 전환 로직.
Onboarding Feature - Setup
Projects/Feature/Onboarding/Sources/OnboardingApp.swift, Projects/Feature/Onboarding/Sources/Source.swift, Projects/Feature/Onboarding/Project.swift
온보딩 앱 엔트리 포인트 업데이트. ComposableArchitecture 및 DesignSystem 의존성 추가. 프로젝트 설정에 리소스, 인포 plist, 의존성 구성.
Design System - Navigation Bar
Projects/Shared/DesignSystem/Sources/Components/Bar/Navigation/TXNavigationBar.swift, Projects/Shared/DesignSystem/Sources/Components/Bar/Navigation/TXNavigationBar+Style.swift
noTitleiconOnly(IconStyle) 스타일로 변경. 뒤로 가기/닫기 아이콘 옵션 지원. 레이아웃 및 크기 계산 업데이트.
Design System - TextField
Projects/Shared/DesignSystem/Sources/Components/TextField/TXTextField.swift
FocusState 바인딩 지원 추가. 외부에서 포커스 상태 관리 가능하게 확장.
Design System - Toast
Projects/Shared/DesignSystem/Sources/Components/Toast/TXToast.swift, Projects/Shared/DesignSystem/Sources/Components/Toast/TXToastPresenter.swift
TXToastStyle 도입(fixed/fit). Fixed는 아이콘+메시지+버튼, Fit은 메시지만 텍스트 너비로 렌더링. 스타일별 레이아웃/패딩 분리.
Design System - Resources
Projects/Shared/DesignSystem/Sources/Resources/Color/ColorStyle.swift, Projects/Shared/DesignSystem/Sources/Resources/Image/Images.swift, Projects/Shared/DesignSystem/Sources/Resources/Typography/Typography.swift, Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Icons/.../*, Projects/Shared/DesignSystem/Resources/Image/ImageAssets.xcassets/Illustration/.../*
디자인 토큰 확장: ColorStyle에 disabled, Typography에 h3_22eb, Image에 arrow1LLeft/check/copy/calendar/connect 아이콘 및 일러스트레이션 추가.
Project & Scripts Configuration
Projects/App/Project.swift, Scripts/GenerateModule.swift
UIUserInterfaceStyle Light 설정 추가. 스크립트에 예제 타겟 infoPlist 구성 자동화.
Documentation & Guidelines
Rules.md, docs/Guides/NavigationStack.md, docs/Reference/NamingConventions.md
네비게이션 패턴 지침 정의(Route enum + 배열). StackState 대신 명시적 Optional 패턴 권고. Action 주석 구분 가이드 추가.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant OnboardingCoordinatorView as OnboardingCoordinator<br/>View
    participant OnboardingConnectView as Connect<br/>View
    participant OnboardingCodeInputView as CodeInput<br/>View
    participant OnboardingProfileView as Profile<br/>View
    participant OnboardingDdayView as Dday<br/>View
    participant OnboardingCoordinator as OnboardingCoordinator<br/>Reducer

    User->>OnboardingCoordinatorView: 온보딩 시작
    OnboardingCoordinatorView->>OnboardingCoordinator: 초기 상태 생성
    OnboardingCoordinator-->>OnboardingCoordinatorView: connect 화면 표시
    OnboardingCoordinatorView->>OnboardingConnectView: Store 제공

    rect rgba(100, 150, 255, 0.5)
        Note over User,OnboardingCoordinator: Connect 화면
        User->>OnboardingConnectView: 직접 연결 선택
        OnboardingConnectView->>OnboardingCoordinator: directConnectCardTapped
        OnboardingCoordinator->>OnboardingCoordinator: routes.append(.codeInput)<br/>codeInput 상태 생성
        OnboardingCoordinator-->>OnboardingCoordinatorView: 경로 업데이트
        OnboardingCoordinatorView->>OnboardingCodeInputView: navigationDestination로 표시
    end

    rect rgba(100, 200, 150, 0.5)
        Note over User,OnboardingCoordinator: CodeInput 화면
        User->>OnboardingCodeInputView: 코드 입력/복사
        OnboardingCodeInputView->>OnboardingCoordinator: codeInputChanged / copyMyCodeButtonTapped
        User->>OnboardingCodeInputView: 완료 버튼
        OnboardingCodeInputView->>OnboardingCoordinator: completeButtonTapped
        OnboardingCoordinator->>OnboardingCoordinator: routes.append(.profile)<br/>profile 상태 생성
        OnboardingCoordinator-->>OnboardingCoordinatorView: 경로 업데이트
        OnboardingCoordinatorView->>OnboardingProfileView: navigationDestination로 표시
    end

    rect rgba(150, 200, 100, 0.5)
        Note over User,OnboardingCoordinator: Profile 화면
        User->>OnboardingProfileView: 닉네임 입력
        OnboardingProfileView->>OnboardingCoordinator: binding / codeInputChanged
        OnboardingProfileView->>OnboardingCoordinator: 욕설 검증
        User->>OnboardingProfileView: 완료 버튼
        OnboardingProfileView->>OnboardingCoordinator: completeButtonTapped
        OnboardingCoordinator->>OnboardingCoordinator: routes.append(.dday)<br/>dday 상태 생성
        OnboardingCoordinator-->>OnboardingCoordinatorView: 경로 업데이트
        OnboardingCoordinatorView->>OnboardingDdayView: navigationDestination로 표시
    end

    rect rgba(200, 150, 100, 0.5)
        Note over User,OnboardingCoordinator: Dday 화면
        User->>OnboardingDdayView: 날짜 선택
        OnboardingDdayView->>OnboardingCoordinator: dateSelectorTapped / calendarCompleted
        User->>OnboardingDdayView: 완료 버튼
        OnboardingDdayView->>OnboardingCoordinator: completeButtonTapped
        OnboardingCoordinator->>OnboardingCoordinator: delegate(.onboardingCompleted)
        OnboardingCoordinator-->>User: 온보딩 완료
    end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/#84

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@clxxrlove
Copy link
Member Author

@coderabbitai summary

@coderabbitai
Copy link

coderabbitai bot commented Jan 30, 2026

The PR description images show three iPhone screens demonstrating a D-Day registration flow:

Image 1 displays an initial date input screen with the question "우리 커플의 기념일은?" (What is our couple's anniversary?), featuring a text field with placeholder "YYYY-MM-DD" and a calendar icon, plus a disabled button labeled "완료" (Complete) at the bottom.

Image 2 shows the same screen with an interactive calendar picker opened, displaying "2026.01" with the 6th day selected (highlighted in black), and the "완료" button now appears active (black background).

Image 3 displays the final state where the selected date "2026-01-06" is filled in the input field, with the active "완료" button ready for submission.

@clxxrlove, PR 요약을 생성하겠습니다.

✅ Actions performed

Summary regeneration triggered.

Copy link

@jihun32 jihun32 left a comment

Choose a reason for hiding this comment

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

고생해써 이전 pr들 다 승인 해놓을게 toast binding 부분만 확인해줘!

Comment on lines 50 to 55
get: { store.showToast },
set: { _ in store.send(.toastDismissed) }
set: { newValue in
if !newValue {
store.send(.toastDismissed)
}
}
Copy link

Choose a reason for hiding this comment

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

여기 isPresented: $store.showToast
이렇게 하면 안돼? BindingReducer 붙여서 될 거 같은데

Copy link
Member Author

Choose a reason for hiding this comment

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

이거 확인은 했던거 같은데 다시 한번 확인해볼게

Copy link
Member Author

Choose a reason for hiding this comment

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

ea7f22d 반영 완료

Copy link

Choose a reason for hiding this comment

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

굿굿 너무 좋다

@clxxrlove clxxrlove merged commit ed6e840 into feat/#80 Jan 31, 2026
2 checks passed
@clxxrlove clxxrlove deleted the feat/#84 branch January 31, 2026 04:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants