-
Notifications
You must be signed in to change notification settings - Fork 0
feat: 초대 코드 연결 UI 구현 #90
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the
📝 WalkthroughWalkthrough온보딩 흐름 전체를 구현합니다. 커플 연결 화면(Connect)과 코드 입력 화면(CodeInput)을 포함한 NavigationStack 기반 코디네이터, 해당 상태 관리 Reducer, 그리고 관련 SwiftUI 뷰들을 추가합니다. 디자인 시스템에 새로운 아이콘, 일러스트레이션, 네비게이션 바 스타일을 확장하고, 앱 설정을 업데이트합니다. Changes
Sequence Diagram(s)sequenceDiagram
participant User as 사용자
participant CoordinatorView as OnboardingCoordinatorView
participant Coordinator as OnboardingCoordinator<br/>(Reducer)
participant ConnectView as OnboardingConnectView
participant ConnectReducer as OnboardingConnectReducer
participant CodeInputView as OnboardingCodeInputView
participant CodeInputReducer as OnboardingCodeInputReducer
User->>CoordinatorView: 앱 진입
CoordinatorView->>Coordinator: 초기화 (myInviteCode, shareContent)
Coordinator-->>CoordinatorView: State (path: [], connect)
CoordinatorView->>ConnectView: 렌더링
User->>ConnectView: directConnectCardTapped 또는 sendInvitationButtonTapped
ConnectView->>ConnectReducer: Action 전달
ConnectReducer->>Coordinator: delegate(navigateToCodeInput)
Coordinator->>Coordinator: path 스택에 .codeInput 추가
Coordinator-->>CoordinatorView: 업데이트 (path: [.codeInput])
CoordinatorView->>CodeInputView: 렌더링
User->>CodeInputView: 코드 입력 또는 백 버튼
alt 코드 완성
CodeInputView->>CodeInputReducer: completeButtonTapped
CodeInputReducer->>Coordinator: delegate(coupleConnected)
Coordinator-->>Coordinator: onboardingCompleted 전달
else 백 버튼
CodeInputView->>CodeInputReducer: backButtonTapped
CodeInputReducer->>Coordinator: delegate(navigateBack)
Coordinator->>Coordinator: path 스택에서 .codeInput 제거
Coordinator-->>CoordinatorView: 업데이트 (path: [])
CoordinatorView->>ConnectView: 재렌더링
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~50 minutes 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 |
|
@coderabbitai summary |
|
✅ Actions performedSummary regeneration triggered. |
jihun32
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
굿굿 고생했어 궁금한것들 코멘트 남겨놨고 확인해줘~~
| case codeFieldTapped | ||
| case delegate(Delegate) | ||
|
|
||
| @CasePathable |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
여기도 그런데 일단 UI 작업 한거고, 아직 Interface랑 Sources로 나눠서 구현 안한 거 같으니까 그 때 Action 주석, CasePathable 관련 코멘트 적용 해도 될듯?
| var focusedIndex: Int? = nil | ||
|
|
||
| /// 초대 코드 총 자릿수 | ||
| static let codeLength = 7 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
여기 왜 static let으로 한거야?
| private extension OnboardingCodeInputView { | ||
| enum Constants { | ||
| static let horizontalPadding: CGFloat = 48 | ||
| static let titleBodySpacing: CGFloat = 92 | ||
| static let sectionSpacing: CGFloat = 52 | ||
| static let cellWidth: CGFloat = 38 | ||
| static let cellHeight: CGFloat = 58 | ||
| } | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
나는 상수처리하는거 View에서 하면 subView가 여러개라 굳이라는 느낌이 있긴한데 통일성을 맞추려면 내가 정의할까? 어떻게 생각해?
그리고 특정 상수만 정의한 거 같은데 이유가 있어?
| @Reducer(state: .equatable) | ||
| public enum Path { | ||
| case codeInput(OnboardingCodeInputReducer) | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아직 interface 분리를 안해서 이렇게 해도 되는 거 같은데 interface 분리하면 이렇게 navigation 관리 못하더라구..(내 이전 PR관련 내용)
근데 Onboarding에서 다른 Feature모듈에 의존 안하면 interface를 의존할 필요 없으니까 이렇게 해도 될 거 같긴한데 난 통일성 지키기 위해서 내가 했던대로 하는게 좋을 거 같은데 어떻게 생각해?
| public struct OnboardingCoordinatorView: View { | ||
| @Bindable var store: StoreOf<OnboardingCoordinator> | ||
|
|
||
| public init(store: StoreOf<OnboardingCoordinator>) { | ||
| self.store = store | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
나는 Root라고 네이밍했는데 Coordinator가 더 직관적이려나 내가 다음 PR에서 Coordinator로 바꿀게
🔗 관련 이슈
📙 작업 내역
🎨 스크린샷 또는 시연 영상 (선택)
💬 추가 설명 or 리뷰 포인트 (선택)