Skip to content
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

[WEAV-73] 프로필 입력 - 성별선택 뷰 구현 #23

Merged
merged 2 commits into from
Oct 1, 2024

Conversation

jisu15-kim
Copy link
Member

@jisu15-kim jisu15-kim commented Oct 1, 2024

구현사항

  • 프로필 입력 뷰 - 성별선택 UI 구현
  • 프로필 입력 뷰 view wrapper 구현

스크린샷(선택)

성별선택

Summary by CodeRabbit

  • 새로운 기능

    • 회원가입 흐름에 대한 새로운 화면 추가: 인사말 및 성별 선택 화면.
    • 성별 선택을 위한 이미지 리소스 추가.
    • 내비게이션 바에서 왼쪽 뒤로 가기 버튼의 표시 여부 조정 기능 추가.
  • 버그 수정

    • 알림 대신 직접 내비게이션으로 회원가입 진행 흐름 개선.
  • 문서화

    • 새로운 구조체 및 열거형에 대한 문서화 추가.
  • 스타일

    • 새로운 화면에 대한 애니메이션 및 스타일 적용.

@jisu15-kim jisu15-kim self-assigned this Oct 1, 2024
Copy link

coderabbitai bot commented Oct 1, 2024

Walkthrough

이번 변경 사항은 사용자 가입 흐름을 개선하기 위해 PathType 열거형에 새로운 경우를 추가하고, 관련된 SwiftUI 뷰를 도입하는 내용을 포함합니다. AuthGreetingViewAuthProfileGenderInputView가 새로 생성되어 성별 선택 및 환영 메시지를 표시합니다. 또한, 네비게이션 바의 버튼 표시 여부를 조정할 수 있는 새로운 매개변수가 추가되었습니다. 이미지 자산도 성별 관련 아이콘을 포함하여 업데이트되었습니다.

Changes

파일 경로 변경 요약
Projects/App/Sources/Navigation/NavigationStack.swift PathType 열거형에 .authGreeting.authProfileGender 추가.
Projects/Core/CommonKit/Sources/Path/PathTypes.swift SignUpSubViewType 열거형에 authGreeting, authProfileGender 추가 및 name 속성 업데이트.
Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/*.imageset/Contents.json 성별 관련 아이콘을 위한 새로운 JSON 파일 추가 (여성 선택, 여성 미선택, 남성 선택, 남성 미선택).
Projects/DesignSystem/DesignCore/Sources/NavigationBar.swift NavigationBarViewModifiershowLeftBackButton 매개변수 추가.
Projects/Features/SignUp/Sources/AuthAgreement/AuthAgreementView.swift 알림 처리 제거 및 버튼 클릭 시 직접 네비게이션으로 변경.
Projects/Features/SignUp/Sources/ProfileInput/AuthGreeting/AuthGreetingView.swift AuthGreetingView 구조체 추가, 환영 메시지 및 성별 선택으로의 네비게이션 포함.
Projects/Features/SignUp/Sources/ProfileInput/AuthProfileGenderInput/AuthProfileGenderInputView.swift 성별 선택을 위한 AuthProfileGenderInputView 구조체 추가, 성별 이미지 및 선택 상태 관리.
Projects/Features/SignUp/Sources/ProfileInput/ProfileInputTemplatedView.swift 프로필 입력 인터페이스를 위한 ProfileInputTemplatedView 구조체 추가.

Possibly related PRs

Poem

🐇
가입의 길이 열렸네,
환영의 메시지와 함께,
성별 선택의 기회,
새로운 뷰가 반짝여,
버튼 하나로 이어지는 길,
모두 함께 나아가자,
행복한 가입의 여정! 🌟


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between c3fcf67 and 03d1d52.

📒 Files selected for processing (1)
  • Projects/Features/SignUp/Sources/ProfileInput/AuthProfileGenderInput/AuthProfileGenderInputView.swift (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • Projects/Features/SignUp/Sources/ProfileInput/AuthProfileGenderInput/AuthProfileGenderInputView.swift

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Outside diff range and nitpick comments (12)
Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/female_selected.imageset/Contents.json (1)

2-18: 이미지 정의가 잘 구성되었습니다.

1x, 2x, 3x 세 가지 스케일의 이미지를 정의하여 다양한 기기 해상도에서 최적의 표시를 보장합니다. "universal" idiom을 사용하여 모든 iOS 기기에서 사용 가능하도록 한 점도 좋습니다.

개선 제안: 접근성을 높이기 위해 각 이미지에 대한 설명을 추가하는 것을 고려해 보세요. 예를 들어, 각 이미지 객체에 "accessibility" : { "label" : "선택된 여성 아이콘" } 필드를 추가할 수 있습니다.

Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/male_unselected.imageset/Contents.json (1)

3-17: 이미지 명명 규칙과 스케일이 적절합니다.

"male_unselected" 이미지에 대해 1x, 2x, 3x 스케일이 모두 제공되어 있으며, 명명 규칙도 iOS 표준(@2x, @3x)을 잘 따르고 있습니다.

다크 모드 지원이 필요한 경우, 다크 모드용 이미지 변형도 추가하는 것을 고려해 보세요.

Projects/App/Sources/Navigation/NavigationStack.swift (1)

Line range hint 1-34: 전체적인 구현이 잘 되었습니다.

새로운 뷰 케이스들이 기존 코드 구조에 잘 통합되었습니다. 이 변경사항들은 앱의 회원가입 플로우를 확장하고 있으며, SwiftUI의 관행을 잘 따르고 있습니다. 코드는 간결하고 이해하기 쉽게 작성되었습니다.

앞으로 더 많은 회원가입 단계가 추가될 것으로 예상됩니다. 현재의 구조가 확장성이 있어 보이지만, 향후 회원가입 플로우가 복잡해질 경우 별도의 네비게이션 코디네이터를 만드는 것을 고려해 보시기 바랍니다.

Projects/Core/CommonKit/Sources/Path/PathTypes.swift (2)

33-35: LGTM! 새로운 케이스가 잘 추가되었습니다.

새로운 authGreetingauthProfileGender 케이스가 적절히 추가되었습니다. 이는 PR의 목적인 성별 선택 UI 구현과 일치합니다.

가독성을 위해 각 케이스 사이에 빈 줄을 추가하는 것이 어떨까요? 예를 들면:

case .authAgreement: return "이용 약관"

case .authGreeting: return "가입 후 환영"

case .authProfileGender: return "성별 입력"

45-47: 새로운 케이스가 잘 추가되었습니다.

authGreetingauthProfileGender 케이스가 SignUpSubViewType 열거형에 적절히 추가되었습니다. 이는 PathType 열거형의 변경사항과 일치하며, PR의 목적을 잘 반영하고 있습니다.

일관성을 위해 각 케이스 사이에 빈 줄을 추가하는 것이 어떨까요? 예를 들면:

case authAgreement

case authGreeting

case authProfileGender
Projects/DesignSystem/DesignCore/Sources/NavigationBar.swift (2)

21-28: LGTM: 조건부 백 버튼 렌더링 구현

showLeftBackButton 값에 따라 백 버튼을 조건부로 렌더링하는 구현이 잘 되었습니다. DesignCore.Images.leftArrow.image를 사용하여 디자인 일관성을 유지한 것도 좋습니다.

작은 개선 제안:

가독성을 높이기 위해 버튼의 label 클로저를 간소화할 수 있습니다:

Button(action: handler) {
    DesignCore.Images.leftArrow.image
}

이렇게 하면 코드가 더 간결해지고 SwiftUI의 선언적 구문과 더 잘 어울립니다.


36-45: LGTM: setNavigation 함수 업데이트

setNavigation 함수에 showLeftBackButton 매개변수를 추가한 것은 적절합니다. 이 변경으로 NavigationBarViewModifier의 새로운 기능을 사용할 수 있게 되었습니다.

작은 개선 제안:

Swift의 일반적인 코딩 스타일에 맞추어, 함수 호출 시 첫 번째 인자가 새 줄에 있을 때는 나머지 인자들도 각각 새 줄에 배치하는 것이 좋습니다. 다음과 같이 수정하는 것을 고려해보세요:

return modifier(
    NavigationBarViewModifier(
        showLeftBackButton: showLeftBackButton,
        handler: handler
    )
)

이렇게 하면 코드의 일관성과 가독성이 향상됩니다.

Projects/Features/SignUp/Sources/ProfileInput/AuthGreeting/AuthGreetingView.swift (2)

13-49: 구현이 잘 되어 있습니다. 지역화 고려 필요.

SwiftUI의 모범 사례를 잘 따르고 있으며, 애니메이션과 레이아웃이 효과적으로 구현되어 있습니다. DesignCore를 사용하여 일관된 디자인을 유지하고 있습니다.

다만, 한 가지 제안사항이 있습니다:

텍스트를 하드코딩하는 대신 지역화를 위해 LocalizedStringKey를 사용하는 것이 좋습니다. 예를 들어:

Text(LocalizedStringKey("auth_greeting_message"))

그리고 CTAButton의 제목도 마찬가지로 처리해주세요.


51-53: 프리뷰 기능 개선 제안

현재 프리뷰는 기본적인 기능을 제공하고 있지만, 다음과 같은 개선사항을 고려해보시는 것은 어떨까요?

  1. 다크 모드 프리뷰 추가
  2. 다양한 기기 크기에 대한 프리뷰 추가
  3. 애니메이션 전후 상태 프리뷰

예시:

#Preview {
    Group {
        AuthGreetingView()
            .previewDisplayName("Light Mode")
        
        AuthGreetingView()
            .preferredColorScheme(.dark)
            .previewDisplayName("Dark Mode")
        
        AuthGreetingView()
            .previewDevice("iPhone SE (3rd generation)")
            .previewDisplayName("iPhone SE")
    }
}

이렇게 하면 다양한 환경에서 뷰의 모습을 쉽게 확인할 수 있습니다.

Projects/Features/SignUp/Sources/ProfileInput/ProfileInputTemplatedView.swift (2)

20-50: body 구현이 잘 되었습니다. 작은 개선 제안이 있습니다.

레이아웃 구조가 명확하고 잘 정리되어 있습니다. DesignCore를 사용하여 색상과 타이포그래피를 일관되게 적용한 점이 좋습니다. LeftAlignText와 같은 커스텀 컴포넌트 사용으로 재사용성을 높였습니다.

다만, 반복되는 패딩 값(26)을 상수로 정의하여 사용하면 유지보수성이 향상될 것 같습니다. 다음과 같이 변경을 고려해보세요:

private let horizontalPadding: CGFloat = 26

var body: some View {
    VStack(alignment: .leading, spacing: 20) {
        // ... existing code ...
    }
    .padding(.horizontal, horizontalPadding)
}

그리고 내부 뷰들의 .padding(.horizontal, 26) 부분을 제거하면 코드가 더 깔끔해질 것 같습니다.


1-51: 문서화 및 접근성 개선을 위한 제안

전반적으로 구현이 잘 되었습니다. 다음 사항들을 고려해보시면 좋을 것 같습니다:

  1. 문서화 개선: 구조체와 주요 속성에 대한 문서 주석을 추가하면 다른 개발자들이 이 뷰를 사용하는 데 도움이 될 것입니다.

  2. 접근성 고려: VoiceOver와 같은 접근성 기능을 위해 주요 요소들에 대한 접근성 레이블을 추가하는 것이 좋습니다.

다음과 같은 개선을 제안합니다:

/// 프로필 입력을 위한 템플릿 뷰
/// - Parameters:
///   - currentPage: 현재 페이지 번호
///   - maxPage: 전체 페이지 수
///   - subMessage: 부제목 메시지
///   - mainMessage: 주 메시지
///   - contentView: 커스텀 콘텐츠 뷰를 생성하는 클로저
struct ProfileInputTemplatedView<ContentView: View>: View {
    // ... existing properties ...

    var body: some View {
        VStack(alignment: .leading, spacing: 20) {
            HStack(spacing: 0) {
                Text("\(currentPage)")
                    // ... existing modifiers ...
            }
            .accessibilityLabel("현재 페이지 \(currentPage) / 전체 \(maxPage) 페이지")

            // ... rest of the body ...
        }
    }
}

이러한 변경으로 코드의 가독성과 접근성이 향상될 것입니다.

Projects/Features/SignUp/Sources/ProfileInput/AuthProfileGenderInput/AuthProfileGenderInputView.swift (1)

31-81: 전체적인 구조가 잘 구성되어 있습니다. 접근성 개선을 위한 제안이 있습니다.

AuthProfileGenderInputView의 구조가 잘 정리되어 있고 SwiftUI 모범 사례를 따르고 있습니다. ProfileInputTemplatedView의 사용은 좋은 모듈화를 보여줍니다.

접근성을 개선하기 위해 성별 선택 이미지에 accessibilityLabel을 추가하는 것이 좋겠습니다. 다음과 같이 수정해보세요:

ForEach(GenderType.allCases, id: \.self) {  type in
    if selectedGender == type {
        type.selectedImage
            .resizable()
            .frame(width: 130, height: 130)
+           .accessibilityLabel(type == .male ? "남성 선택됨" : "여성 선택됨")
    } else {
        type.unselectedImage
            .resizable()
            .frame(width: 130, height: 130)
+           .accessibilityLabel(type == .male ? "남성" : "여성")
            .onTapGesture {
                withAnimation {
                    selectedGender = type
                }
            }
    }
}

이렇게 하면 시각 장애가 있는 사용자들도 성별 선택 옵션을 쉽게 이해하고 사용할 수 있을 것입니다.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 4c2f234 and c3fcf67.

⛔ Files ignored due to path filters (12)
  • Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/female_selected.imageset/female_selected.png is excluded by !**/*.png
  • Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/female_selected.imageset/[email protected] is excluded by !**/*.png
  • Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/female_selected.imageset/[email protected] is excluded by !**/*.png
  • Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/female_unselected.imageset/female_unselected.png is excluded by !**/*.png
  • Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/female_unselected.imageset/[email protected] is excluded by !**/*.png
  • Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/female_unselected.imageset/[email protected] is excluded by !**/*.png
  • Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/male_selected.imageset/male_selected.png is excluded by !**/*.png
  • Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/male_selected.imageset/[email protected] is excluded by !**/*.png
  • Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/male_selected.imageset/[email protected] is excluded by !**/*.png
  • Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/male_unselected.imageset/male_unselected.png is excluded by !**/*.png
  • Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/male_unselected.imageset/[email protected] is excluded by !**/*.png
  • Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/male_unselected.imageset/[email protected] is excluded by !**/*.png
📒 Files selected for processing (12)
  • Projects/App/Sources/Navigation/NavigationStack.swift (1 hunks)
  • Projects/Core/CommonKit/Sources/Path/PathTypes.swift (2 hunks)
  • Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/Contents.json (1 hunks)
  • Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/female_selected.imageset/Contents.json (1 hunks)
  • Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/female_unselected.imageset/Contents.json (1 hunks)
  • Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/male_selected.imageset/Contents.json (1 hunks)
  • Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/male_unselected.imageset/Contents.json (1 hunks)
  • Projects/DesignSystem/DesignCore/Sources/NavigationBar.swift (2 hunks)
  • Projects/Features/SignUp/Sources/AuthAgreement/AuthAgreementView.swift (1 hunks)
  • Projects/Features/SignUp/Sources/ProfileInput/AuthGreeting/AuthGreetingView.swift (1 hunks)
  • Projects/Features/SignUp/Sources/ProfileInput/AuthProfileGenderInput/AuthProfileGenderInputView.swift (1 hunks)
  • Projects/Features/SignUp/Sources/ProfileInput/ProfileInputTemplatedView.swift (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/Contents.json
🔇 Additional comments (21)
Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/male_selected.imageset/Contents.json (4)

1-23: JSON 구조가 올바르게 구성되었습니다.

전체적인 JSON 파일의 구조가 Xcode 이미지 에셋에 대한 표준 형식을 잘 따르고 있습니다. "images" 배열과 "info" 객체가 올바르게 포함되어 있습니다.


3-17: 이미지 명명 규칙과 스케일이 적절합니다.

이미지 파일의 명명 규칙과 스케일 처리가 iOS 이미지 에셋의 모범 사례를 잘 따르고 있습니다:

  • 기본 이미지 이름 "male_selected.png"가 명확합니다.
  • 2x와 3x 이미지에 "@2x", "@3x" 접미사를 올바르게 사용했습니다.
  • 1x, 2x, 3x 세 가지 스케일 변형이 모두 제공되어 있습니다.
  • 모든 이미지에 대해 "idiom"이 "universal"로 설정되어 있어 다양한 기기에서 사용 가능합니다.

19-22: info 객체가 올바르게 설정되었습니다.

"info" 객체의 내용이 Xcode에서 생성된 에셋 카탈로그의 표준 값을 따르고 있습니다:

  • "author"가 "xcode"로 설정되어 있습니다.
  • "version"이 1로 설정되어 있습니다.

이는 에셋이 Xcode에서 올바르게 생성되었음을 나타냅니다.


1-23: 전반적으로 잘 구성된 이미지 에셋 파일입니다.

이 JSON 파일은 iOS 앱의 이미지 에셋을 위한 모범 사례를 잘 따르고 있습니다:

  1. JSON 구조가 올바릅니다.
  2. 이미지 명명 규칙과 스케일 처리가 적절합니다.
  3. info 객체가 올바르게 설정되었습니다.

성별 선택 UI에서 사용될 남성 아이콘(선택된 상태)에 대한 에셋이 잘 구성되어 있어, 다양한 화면 해상도에서 올바르게 표시될 것으로 예상됩니다.

Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/female_selected.imageset/Contents.json (3)

1-23: JSON 구조가 올바르게 구성되었습니다.

전체적인 JSON 파일의 구조가 Xcode 이미지 에셋 JSON 파일의 표준 형식을 따르고 있습니다. "images"와 "info" 두 개의 주요 키를 포함하고 있어 적절합니다.


19-22: 메타데이터가 올바르게 설정되었습니다.

"info" 섹션의 "author"와 "version" 필드가 Xcode에서 생성된 에셋 카탈로그의 표준 형식을 따르고 있습니다. 이는 향후 에셋 관리와 버전 관리에 도움이 될 것입니다.


1-23: PR 목표에 부합하는 적절한 에셋 추가

이 JSON 파일은 성별 선택 UI 구현이라는 PR의 목표에 잘 부합합니다. 여성 성별 아이콘에 대한 다양한 해상도의 이미지를 정의하여, 프로필 입력 뷰에서 성별 선택 기능을 시각적으로 지원할 것으로 보입니다. 다양한 기기에서의 최적화된 표시를 고려한 점이 돋보입니다.

Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/male_unselected.imageset/Contents.json (3)

1-23: JSON 구조가 올바르게 구성되었습니다.

전체적인 JSON 파일의 구조가 Xcode 이미지 에셋에 대한 표준 형식을 잘 따르고 있습니다. "images" 배열과 "info" 객체가 적절히 포함되어 있습니다.


19-22: info 섹션이 올바르게 설정되었습니다.

"author"가 "xcode"로, "version"이 1로 설정되어 있어 Xcode에서 생성한 표준 값을 사용하고 있습니다.


1-23: 관련 에셋의 존재 여부를 확인하세요.

현재 파일은 선택되지 않은 남성 아이콘에 대한 것입니다. 성별 선택 UI의 완전한 구현을 위해 다음 에셋들도 존재하는지 확인해 주세요:

  1. 선택된 남성 아이콘
  2. 선택된/선택되지 않은 여성 아이콘
  3. 필요한 경우, 기타 성별 옵션에 대한 아이콘

이를 통해 UI 구현의 일관성과 완전성을 보장할 수 있습니다.

✅ Verification successful

관련 에셋이 모두 존재함을 확인했습니다.

해당 디렉토리 내에 선택된 및 선택되지 않은 남성 및 여성 아이콘이 모두 정상적으로 존재합니다. 이로써 성별 선택 UI의 완전성이 확보되었습니다.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the existence of related gender selection assets

# Test: Check for the existence of other gender-related image assets
fd -e json -p "Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender" | xargs cat

Length of output: 1775

Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/female_unselected.imageset/Contents.json (2)

1-23: 전체적인 구조와 내용이 적절합니다.

이 JSON 파일의 구조는 Xcode 에셋 카탈로그의 표준 형식을 잘 따르고 있습니다. 1x, 2x, 3x 스케일의 이미지를 모두 포함하고 있어 다양한 해상도의 iOS 기기에서 선명하게 표시될 수 있을 것입니다. 또한 universal idiom을 사용하여 모든 기기 유형에 대한 호환성을 보장하고 있습니다.


4-4: 참조된 이미지 파일의 존재 여부를 확인하세요.

JSON 파일에서 참조하고 있는 이미지 파일들이 실제로 프로젝트에 포함되어 있는지 확인해 주세요:

이 파일들이 올바른 위치에 있는지 확인하는 것이 중요합니다.

Also applies to: 9-9, 14-14

✅ Verification successful

참조된 이미지 파일들이 프로젝트에 모두 존재하는 것을 확인했습니다.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the existence of referenced image files

# Test: Check if the image files exist
for file in "female_unselected.png" "[email protected]" "[email protected]"; do
  if fd -p "Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/Gender/female_unselected.imageset/$file" > /dev/null; then
    echo "File $file exists."
  else
    echo "File $file is missing!"
  fi
done

Length of output: 920

Projects/App/Sources/Navigation/NavigationStack.swift (1)

30-34: 새로운 뷰 케이스가 추가되었습니다.

새로운 .authGreeting.authProfileGender 케이스가 signUp 케이스에 추가되었습니다. 이는 PR 목표와 일치하며 성별 선택 UI와 프로필 입력 뷰 래퍼를 구현하는 데 기여할 것으로 보입니다.

다음 스크립트를 실행하여 새로 추가된 뷰들이 실제로 구현되었는지 확인해 주세요:

✅ Verification successful

새로운 뷰 구현이 확인되었습니다.

  • AuthGreetingViewProjects/Features/SignUp/Sources/ProfileInput/AuthGreeting/AuthGreetingView.swift에 구현되어 있습니다.
  • AuthProfileGenderInputViewProjects/Features/SignUp/Sources/ProfileInput/AuthProfileGenderInput/AuthProfileGenderInputView.swift에 구현되어 있습니다.
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the implementation of new views

# Test: Search for AuthGreetingView implementation
echo "Searching for AuthGreetingView implementation:"
rg --type swift "struct AuthGreetingView\s*:\s*View" -A 5

echo "\nSearching for AuthProfileGenderInputView implementation:"
rg --type swift "struct AuthProfileGenderInputView\s*:\s*View" -A 5

Length of output: 1756

Projects/Features/SignUp/Sources/AuthAgreement/AuthAgreementView.swift (1)

31-33: 네비게이션 로직이 개선되었습니다.

네비게이션 흐름이 단순화되어 사용자 경험이 향상될 것 같습니다. 다음과 같은 사항들을 확인해 주시면 좋겠습니다:

  1. 이전에 있었던 알림(alert)을 의도적으로 제거한 것이 맞나요? 이 변경이 사용자 플로우에 어떤 영향을 미칠지 고려해 보셨나요?
  2. PR 목표에서 언급된 성별 선택 UI 구현과 이 변경 사항이 어떤 관련이 있는지 설명해 주실 수 있나요?

다음 스크립트를 실행하여 제거된 알림 관련 코드를 확인해 보겠습니다:

Projects/Core/CommonKit/Sources/Path/PathTypes.swift (1)

Line range hint 1-47: 전체적으로 변경사항이 PR 목적과 잘 일치합니다.

이 PR에서 구현된 변경사항들은 성별 선택 UI를 위한 프로필 입력 뷰를 구현하는 PR의 목적과 잘 일치합니다. PathTypeSignUpSubViewType 열거형에 새로운 케이스를 추가함으로써, 성별 선택 기능을 위한 기반을 마련했습니다.

몇 가지 작은 개선 사항을 제안했지만, 전반적으로 코드는 잘 구조화되어 있고 기존 코드 스타일과 일관성을 유지하고 있습니다.

Projects/DesignSystem/DesignCore/Sources/NavigationBar.swift (2)

12-12: LGTM: showLeftBackButton 매개변수 추가

showLeftBackButton 매개변수를 추가한 것은 좋은 개선입니다. 이를 통해 네비게이션 바의 모양을 더 유연하게 제어할 수 있게 되었습니다. 기본값을 true로 설정한 것도 기존 코드와의 호환성을 유지하는 데 도움이 됩니다.


Line range hint 1-45: 전체적인 변경 사항에 대한 검토 의견

이 PR의 변경 사항들은 잘 구현되었으며, 프로필 입력 UI의 유연성을 향상시키는 PR의 목표를 잘 달성하고 있습니다. showLeftBackButton 매개변수를 추가하여 네비게이션 바의 백 버튼 표시 여부를 제어할 수 있게 된 것은 좋은 개선입니다.

코드는 전반적으로 잘 작성되었으며, 기존 코드와의 호환성도 유지하고 있습니다. 제안된 작은 개선 사항들(버튼 레이블 간소화, 함수 호출 스타일 일관성)을 적용하면 코드의 가독성과 일관성이 더욱 향상될 것입니다.

이 변경 사항들은 승인될 준비가 되어 있으며, 제안된 작은 개선 사항들을 고려해 보시기 바랍니다.

Projects/Features/SignUp/Sources/ProfileInput/AuthGreeting/AuthGreetingView.swift (2)

1-12: 파일 구조와 import 문이 적절합니다.

파일 구조가 잘 정리되어 있고, 필요한 모듈들이 올바르게 import 되어 있습니다. SwiftUI를 사용하는 뷰 파일로서 적절한 구성입니다.


1-53: 전반적으로 우수한 구현

AuthGreetingView의 전체적인 구현이 매우 훌륭합니다. SwiftUI의 모범 사례를 잘 따르고 있으며, 코드가 깔끔하고 가독성이 좋습니다. 애니메이션과 레이아웃이 효과적으로 구현되어 있어 사용자 경험이 좋을 것으로 예상됩니다.

개선을 위한 제안사항:

  1. 텍스트의 지역화
  2. 프리뷰 기능 강화

이러한 minor한 개선사항들을 적용하면 더욱 완성도 높은 코드가 될 것 같습니다. 전반적으로 PR의 목적을 잘 달성한 구현이라고 생각합니다.

Projects/Features/SignUp/Sources/ProfileInput/ProfileInputTemplatedView.swift (1)

12-19: 구조체 선언과 속성이 잘 정의되었습니다.

제네릭 ContentView를 사용하여 유연성을 제공하고, @ViewBuilder를 활용하여 콘텐츠 뷰를 정의한 것은 좋은 접근 방식입니다. 현재 페이지, 최대 페이지, 메시지 등의 속성들도 템플릿 뷰에 적합해 보입니다.

Projects/Features/SignUp/Sources/ProfileInput/AuthProfileGenderInput/AuthProfileGenderInputView.swift (1)

83-87: 프리뷰가 잘 구현되어 있습니다.

AuthProfileGenderInputView의 프리뷰가 적절하게 구현되어 있습니다. NavigationView 내에서 뷰를 보여주는 것은 실제 사용 맥락을 시뮬레이션하는 데 도움이 됩니다.

이 프리뷰는 개발 과정에서 UI를 빠르게 확인하고 테스트하는 데 유용할 것입니다.

@jisu15-kim jisu15-kim merged commit 4ec2d71 into feature/WEAV-72 Oct 1, 2024
2 checks passed
@jisu15-kim jisu15-kim deleted the working/WEAV-73 branch October 1, 2024 15:23
jisu15-kim added a commit that referenced this pull request Oct 3, 2024
* [WEAV-73] 프로필 입력 - 성별선택 뷰 구현 (#23)

* [WEAV-73] 프로필 입력 - 성별선택 뷰 구현
* [WEAV-73] 오타수정

* [WEAV-78] 나이 입력 뷰 구현 (#24)

* [WEAV-79] 이름 입력 뷰 구현 (#25)
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.

1 participant