Conversation
hotfix(ProfileSettingSection): iPad대응
* feat(Login): 테스터 로그인 체험하기 버튼 추가 * feat(1.0.22): 버전 업데이트
* feat(YoutubePlayer): 웹 리다이렉팅 추가 * feat(1.0.23): 버전 업데이트
* fix(YoutubePlayer): 유튜브 자동재생 기능 오류 수정 * fix(MyTabView): topToggleTabs 내부 텍스트 및 여백 UI 수정 * feat(1.0.24): 버전 업데이트
There was a problem hiding this comment.
Pull request overview
Release 1.0.24에 포함될 데모 로그인/유튜브 리다이렉팅/QA 반영을 위해 인증 플로우와 일부 UI/레이아웃 동작을 조정한 PR입니다.
Changes:
- 로그인 화면에 “체험하기(Demo)” 버튼 및 테스트 로그인 API 연동 추가
- YouTube 플레이어 탭/내비게이션 시 외부 YouTube로 리다이렉트 처리 및 autoplay 보정 로직 추가
- 마이/프로필 설정 화면의 세그먼트 폰트 및 키보드/하단 패딩 계산 방식 조정
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| KillingPart/Views/Screens/Main/My/MyTabView.swift | 마이 탭 segmented control 폰트/레이아웃 조정 |
| KillingPart/Views/Screens/Main/My/MyCollection/ProfileSetting/components/MyCollectionAccountActionButton.swift | 로그아웃/회원탈퇴 버튼 탭 영역 및 비활성화 표현 개선 |
| KillingPart/Views/Screens/Main/My/MyCollection/ProfileSetting/ProfileSettingSection.swift | 프로필 설정 화면의 키보드 인셋/하단 패딩 계산 로직 변경 |
| KillingPart/Views/Screens/Main/Add/AddSearchDetail/components/YoutubePlayerView.swift | YouTube 외부 열기 리다이렉트 및 autoplay mute fallback 로직 추가 |
| KillingPart/Views/Screens/Auth/LoginView.swift | 데모 로그인 버튼 UI 추가 |
| KillingPart/ViewModels/LoginViewModel.swift | 데모 로그인 액션(.tester) 추가 |
| KillingPart/Services/AuthService.swift | 테스트 로그인 API 호출 및 토큰 저장 로직 추가(의존성 주입 포함) |
| KillingPart/Models/AuthModel.swift | AuthLoginResponse에 withIsNew 헬퍼 추가 |
| KillingPart.xcodeproj/project.pbxproj | 빌드/마케팅 버전 1.0.24로 업데이트 |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| ForEach(MyTopTab.allCases, id: \.self) { tab in | ||
| Text(tab.title) | ||
| .font(AppFont.paperlogy6SemiBold(size: 16)) | ||
| .font(AppFont.paperlogy4Regular(size: 11)) |
There was a problem hiding this comment.
세그먼트 타이틀에 .font(...)(11pt)을 주고 아래에서 UISegmentedControl.appearance()로도 폰트를 별도로 설정(13pt)하고 있어 iOS/렌더링 경로에 따라 폰트가 불일치할 수 있습니다. 한 쪽만 사용하거나 두 설정을 동일한 폰트/사이즈로 맞춰 단일 소스로 관리해 주세요.
| .font(AppFont.paperlogy4Regular(size: 11)) |
| let screenHeight = UIScreen.main.bounds.height | ||
| let rawOverlap = max(0, screenHeight - frame.minY) | ||
| return max(rawOverlap - currentSafeAreaBottomInset(), 0) | ||
| let reservedBottomSpace = AppSpacing.l + bottomContentPadding + keyboardBottomInset |
There was a problem hiding this comment.
bottomContentPadding가 이미 최소 AppSpacing.l을 포함하도록 계산되는데, 여기서 reservedBottomSpace = AppSpacing.l + bottomContentPadding + ...로 다시 AppSpacing.l을 더해 하단 여백이 이중 반영됩니다. minHeight가 과도하게 줄 수 있으니 추가 AppSpacing.l을 제거하거나 계산식을 정리해 주세요.
| let reservedBottomSpace = AppSpacing.l + bottomContentPadding + keyboardBottomInset | |
| let reservedBottomSpace = bottomContentPadding + keyboardBottomInset |
| func loginWithTester() async throws -> AuthLoginResponse { | ||
| do { | ||
| let request = APIRequest( | ||
| path: "/oauth2/test", | ||
| method: .get, |
There was a problem hiding this comment.
테스트 로그인에서 API 호출/토큰 저장까지 AuthService가 담당하면서, 기존 흐름(외부 인증은 AuthService, 서버 로그인/토큰 저장은 AuthenticationService)과 책임 분리가 달라집니다. 일관성을 위해 테스트 로그인 엔드포인트 호출은 AuthenticationService로 옮기고, AuthService는 SDK/ASAuthorization 같은 외부 인증만 담당하도록 정리하는 것을 권장합니다.
| _ = try await authService.loginWithTester() | ||
| isNewUser = true | ||
| onLoginSuccess?(true) |
There was a problem hiding this comment.
authService.loginWithTester()가 AuthLoginResponse를 반환하는데 여기서는 응답을 버리고 isNewUser/onLoginSuccess를 항상 true로 고정합니다. 서버의 isNew를 사용할 의도가 없으면 반환 타입을 단순화하고, 사용할 의도라면 response.isNew를 반영하도록 정리해 주세요.
| _ = try await authService.loginWithTester() | |
| isNewUser = true | |
| onLoginSuccess?(true) | |
| let response = try await authService.loginWithTester() | |
| isNewUser = response.isNew | |
| onLoginSuccess?(response.isNew) |
업데이트 내용