Skip to content

[Refactor] LoginView 디자인 변경 및 컴포넌트 분리#38

Merged
ddodle merged 4 commits into
mainfrom
refactor/login-view
Jul 2, 2026
Merged

[Refactor] LoginView 디자인 변경 및 컴포넌트 분리#38
ddodle merged 4 commits into
mainfrom
refactor/login-view

Conversation

@ddodle

@ddodle ddodle commented Jul 2, 2026

Copy link
Copy Markdown
Collaborator

✨ PR 유형

어떤 변경 사항이 있나요??

  • 새로운 기능 추가
  • 버그 수정
  • 사용자 UI 디자인 변경 및 추가
  • 코드에 영향을 주지 않는 변경사항(오타 수정, 탭 사이즈 변경, 변수명 변경)
  • 코드 리팩토링
  • 주석 추가 및 수정
  • 문서 수정
  • 테스트 추가, 테스트 리팩토링
  • 빌드 부분 혹은 패키지 매니저 수정
  • 파일 혹은 폴더명 수정
  • 파일 혹은 폴더 삭제

🛠️ 작업내용

[ 작업한 내용을 작성해주세요 ( UI 구현이라면 사진도 같이 올려주시면 좋아요! ) ]

  • LoginView 디자인 변경
  • .alert에 존재하던 .constant binding 안티패턴 확인 및 수정
  • mock 주입을 통해 시뮬레이터 상에서 진입점 변경
  • 불필요한 이미지 및 컬러 에셋 삭제

📋 추후 진행 상황

[ 다음에 진행할 작업에 대해 작성해주세요!! ]

[ 현재 커밋 후 풀리퀘 다음으로 작업 내용을 적어주면 됩니다! ]

📌 리뷰 포인트

[ 어떤 부분을 잘 체크해야하는지 작성해주세요 ]

✅ Checklist

PR이 다음 요구 사항을 충족하는지 확인해주세요!!!

closed #36

Summary by CodeRabbit

  • New Features

    • 로그인 화면에 새로운 입력 필드와 주요 CTA 버튼이 추가되어, 이메일/비밀번호 입력과 로딩 상태가 더 명확해졌습니다.
    • 로그인 화면 레이아웃과 안내 문구가 개선되어 전체 흐름이 더 간결해졌습니다.
  • Bug Fixes

    • 앱 시작 시 로그인 상태에 따라 올바른 화면이 표시되도록 전환 로직이 통일되었습니다.
    • 로그인 관련 오류 표시가 더 일관되게 동작하도록 개선되었습니다.
  • Chores

    • 일부 색상과 이미지 리소스가 정리되고 앱 전반의 색감이 업데이트되었습니다.

@ddodle ddodle self-assigned this Jul 2, 2026
@coderabbitai

coderabbitai Bot commented Jul 2, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

카카오 로그인 관련 API 경로/인증 분기가 제거되고, LoginView가 새로운 LoginTextField/CTAButton 컴포넌트 기반으로 재구성되었습니다. LoginViewModel에 오류 표시 상태가 추가되고, ContentView의 로그인 분기 로직이 단순화되었습니다. HelpView/TrashView가 삭제되고, 여러 컬러셋 값과 일부 이미지셋 메타데이터가 변경되었습니다.

Changes

로그인 플로우 리팩토링

Layer / File(s) Summary
카카오 로그인 API 및 인증 정책 제거
Rephoto_iOS/Features/User/Data/Targets/UserAPITarget.swift, Rephoto_iOS/Core/NetworkAdapter/NetworkClient/DefaultAuthenticationPolicy.swift
kakaologin enum 케이스 및 관련 path/method/task/authorization 분기가 제거되고, "/kakao/login"이 공개 경로 목록에서 삭제됩니다.
로그인 텍스트 필드 및 CTA 버튼 신규 컴포넌트
Rephoto_iOS/Features/User/Presentation/Components/LoginTextField.swift, Rephoto_iOS/Resource/Components/CTAButton.swift
보안/일반 입력을 지원하는 LoginTextField와 로딩 상태를 표시하는 CTAButton 뷰가 신규 추가됩니다.
LoginViewModel 오류 표시 상태 및 Mock 로그인 로직
Rephoto_iOS/Features/User/Presentation/ViewModels/LoginViewModel.swift, Rephoto_iOS/Features/User/Presentation/Preview/MockUserUseCaseProvider.swift
isShowingError 계산 프로퍼티가 추가되고, MockLoginUseCase가 자격 증명 검증 후 MockLoginError를 throw하도록 변경됩니다.
LoginView 레이아웃 재구성
Rephoto_iOS/Features/User/Presentation/Views/LoginView.swift
ZStack/VStack 구조, header 도입, LoginTextField/CTAButton 적용, isShowingError 기반 alert, 회원가입 링크 비활성화가 반영됩니다.
ContentView 로그인 분기 통일
Rephoto_iOS/App/ContentView.swift
DEBUG 강제 표시 분기가 제거되고 loginVM.isLoggedIn 값만으로 화면이 결정됩니다.

설정 화면 정리

Layer / File(s) Summary
HelpView/TrashView 삭제
Rephoto_iOS/Features/Settings/Presentation/Views/HelpView.swift, Rephoto_iOS/Features/Settings/Presentation/Views/TrashView.swift
HelpView 및 TrashView 구현과 #Preview가 전체 삭제됩니다.

컬러 및 이미지 에셋 변경

Layer / File(s) Summary
기존 컬러셋 RGB 값 변경
Rephoto_iOS/Resource/Colors/Colors.xcassets/baseColor.../Contents.json, .../deepGreen.../Contents.json, .../lightGreen.../Contents.json, .../mainGreen.../Contents.json
여러 colorset의 universal/dark srgb 컴포넌트 값이 새 RGB 값으로 교체됩니다.
신규 컬러셋 추가
Rephoto_iOS/Resource/Colors/Colors.xcassets/mainRed.../Contents.json, .../subGreen.../Contents.json
mainRed, subGreen colorset이 신규로 정의됩니다.
이미지셋 메타데이터 제거
Rephoto_iOS/Resource/Images/Assets.xcassets/kakao.imageset/Contents.json, home.imageset/Contents.json, map.imageset/Contents.json, warning.imageset/Contents.json
kakao 등 여러 imageset의 Contents.json 내용이 제거됩니다.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Possibly related PRs

Poem

카카오는 안녕, 이제 훨훨 날아가고
새 텍스트필드에 토끼 발자국 콩콩
CTA버튼 반짝반짝 로딩춤을 추네
색색깔 에셋들도 새 옷을 입었어요
🐇✨ 폴짝폴짝, 리팩토링 완성!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed LoginView 디자인 변경과 컴포넌트 분리를 핵심적으로 드러내는 간결한 제목입니다.
Description check ✅ Passed 작업내용과 변경 유형이 대부분 채워져 있고, 템플릿의 핵심 섹션을 충족합니다.
Linked Issues check ✅ Passed LoginView 수정, KakaoLogin 제거, 디자인 변경이 #36의 요구와 일치합니다.
Out of Scope Changes check ✅ Passed 추가 변경들도 로그인 리팩토링을 지원하는 작업으로 보여, 명백한 무관 변경은 없습니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch refactor/login-view

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
Rephoto_iOS/Features/User/Presentation/Views/LoginView.swift (2)

32-34: 📐 Maintainability & Code Quality | 🔵 Trivial

주석과 프로퍼티명 불일치.

// MARK: - Title 주석이 title이 아닌 header 프로퍼티를 가리킵니다.

✏️ 제안
-    // MARK: - Title
+    // MARK: - Header
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Rephoto_iOS/Features/User/Presentation/Views/LoginView.swift` around lines 32
- 34, The MARK comment is mislabeled: `// MARK: - Title` points to the `header`
view rather than a `title` property. Update the section label to match the
actual `header` computed property in `LoginView` so the comment accurately
describes the symbol it groups, or rename the property if `title` is the
intended name.

80-87: 🎯 Functional Correctness | 🔵 Trivial | 💤 Low value

비활성화된 NavigationLinkNavigationStack 밖에 위치.

LoginView는 더 이상 NavigationStack으로 감싸여 있지 않고(ZStack/VStack으로 변경됨), ContentView.swift에서도 LoginView(loginVM: loginVM)NavigationStack 없이 직접 표시됩니다. 현재는 .disabled(true)로 인해 문제가 드러나지 않지만, 추후 회원가입 기능 활성화 시 이 NavigationLink는 네비게이션 컨텍스트가 없어 동작하지 않을 수 있습니다.

회원가입 기능을 활성화할 계획이 있다면, 상위 뷰에 NavigationStack을 추가하거나 현재는 플레이스홀더용 Text/Button으로 대체하는 것을 고려해 주세요.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Rephoto_iOS/Features/User/Presentation/Views/LoginView.swift` around lines 80
- 87, The "회원가입" NavigationLink in LoginView is currently outside any
NavigationStack, so it will not have a valid navigation context when re-enabled.
Update LoginView or its parent presentation in ContentView to wrap the screen in
a NavigationStack, or replace the placeholder NavigationLink in LoginView with a
non-navigating Text/Button until the signup flow is ready. Use the LoginView and
ContentView integration points to locate and adjust the navigation setup.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@Rephoto_iOS/Features/User/Presentation/Views/LoginView.swift`:
- Around line 32-34: The MARK comment is mislabeled: `// MARK: - Title` points
to the `header` view rather than a `title` property. Update the section label to
match the actual `header` computed property in `LoginView` so the comment
accurately describes the symbol it groups, or rename the property if `title` is
the intended name.
- Around line 80-87: The "회원가입" NavigationLink in LoginView is currently outside
any NavigationStack, so it will not have a valid navigation context when
re-enabled. Update LoginView or its parent presentation in ContentView to wrap
the screen in a NavigationStack, or replace the placeholder NavigationLink in
LoginView with a non-navigating Text/Button until the signup flow is ready. Use
the LoginView and ContentView integration points to locate and adjust the
navigation setup.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 1cd9e8d9-ea90-429e-b470-0ee5b89c3985

📥 Commits

Reviewing files that changed from the base of the PR and between f71697f and e33b2c9.

⛔ Files ignored due to path filters (4)
  • Rephoto_iOS/Resource/Images/Assets.xcassets/home.imageset/home.pdf is excluded by !**/*.pdf
  • Rephoto_iOS/Resource/Images/Assets.xcassets/kakao.imageset/kakao.pdf is excluded by !**/*.pdf
  • Rephoto_iOS/Resource/Images/Assets.xcassets/map.imageset/map.pdf is excluded by !**/*.pdf
  • Rephoto_iOS/Resource/Images/Assets.xcassets/warning.imageset/warning.pdf is excluded by !**/*.pdf
📒 Files selected for processing (22)
  • Rephoto_iOS/App/ContentView.swift
  • Rephoto_iOS/Core/NetworkAdapter/NetworkClient/DefaultAuthenticationPolicy.swift
  • Rephoto_iOS/Features/Settings/Presentation/Views/HelpView.swift
  • Rephoto_iOS/Features/Settings/Presentation/Views/TrashView.swift
  • Rephoto_iOS/Features/User/Data/Targets/UserAPITarget.swift
  • Rephoto_iOS/Features/User/Presentation/Components/LoginTextField.swift
  • Rephoto_iOS/Features/User/Presentation/Preview/MockUserUseCaseProvider.swift
  • Rephoto_iOS/Features/User/Presentation/ViewModels/LoginViewModel.swift
  • Rephoto_iOS/Features/User/Presentation/Views/LoginView.swift
  • Rephoto_iOS/Resource/Colors/Colors.xcassets/Color5.colorset/Contents.json
  • Rephoto_iOS/Resource/Colors/Colors.xcassets/Color6.colorset/Contents.json
  • Rephoto_iOS/Resource/Colors/Colors.xcassets/baseColor.colorset/Contents.json
  • Rephoto_iOS/Resource/Colors/Colors.xcassets/deepGreen.colorset/Contents.json
  • Rephoto_iOS/Resource/Colors/Colors.xcassets/lightGreen.colorset/Contents.json
  • Rephoto_iOS/Resource/Colors/Colors.xcassets/mainGreen.colorset/Contents.json
  • Rephoto_iOS/Resource/Colors/Colors.xcassets/mainRed.colorset/Contents.json
  • Rephoto_iOS/Resource/Colors/Colors.xcassets/subGreen.colorset/Contents.json
  • Rephoto_iOS/Resource/Components/CTAButton.swift
  • Rephoto_iOS/Resource/Images/Assets.xcassets/home.imageset/Contents.json
  • Rephoto_iOS/Resource/Images/Assets.xcassets/kakao.imageset/Contents.json
  • Rephoto_iOS/Resource/Images/Assets.xcassets/map.imageset/Contents.json
  • Rephoto_iOS/Resource/Images/Assets.xcassets/warning.imageset/Contents.json
💤 Files with no reviewable changes (9)
  • Rephoto_iOS/Resource/Images/Assets.xcassets/home.imageset/Contents.json
  • Rephoto_iOS/App/ContentView.swift
  • Rephoto_iOS/Resource/Images/Assets.xcassets/map.imageset/Contents.json
  • Rephoto_iOS/Resource/Images/Assets.xcassets/kakao.imageset/Contents.json
  • Rephoto_iOS/Resource/Images/Assets.xcassets/warning.imageset/Contents.json
  • Rephoto_iOS/Features/Settings/Presentation/Views/HelpView.swift
  • Rephoto_iOS/Resource/Colors/Colors.xcassets/Color5.colorset/Contents.json
  • Rephoto_iOS/Features/Settings/Presentation/Views/TrashView.swift
  • Rephoto_iOS/Resource/Colors/Colors.xcassets/Color6.colorset/Contents.json

@ddodle ddodle merged commit 8647a9c into main Jul 2, 2026
2 checks passed
@ddodle ddodle deleted the refactor/login-view branch July 2, 2026 09:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

♻️ Refactor: LoginView 수정

1 participant