Skip to content

[Release] 1.2.0 업데이트#85

Merged
mark77234 merged 3 commits intomainfrom
dev
May 9, 2026
Merged

[Release] 1.2.0 업데이트#85
mark77234 merged 3 commits intomainfrom
dev

Conversation

@mark77234
Copy link
Copy Markdown
Collaborator

업데이트 내용

  • 설정 페이지 리뉴얼
  • 유저 차단 기능 추가

mark77234 added 3 commits May 3, 2026 23:11
* feat(FCM): FCM Token 발급 및 등록/삭제 API 연동

* fix(FCM): 기존 컨벤션 적용

* fix(fcm): 테스트버전 체크
* feat(Google): 구글로그인 추가

* feat(1.1.10): 버전 업데이트
* fix(ProfileCard): Tag, StatItem FixedSize Added

* feat(Settings): 프로필 설정 섹션 -> 프로필 페이지로 마이그레이션

* feat(Setting): 디자인 업데이트

* feat(Setting): NameEdit, TagEdit UI Update and SettingsView Space Added

* feat(Block): Block Api Settings

* feat(Blocklist): 차단 목록 추가 및 차단 해제 API 추가 및 연동 및 페이지 추가

* feat: 다이얼로그, 바텀시트 디자인 업데이트

* feat(AppInfo,Account): 앱 정보 섹션 및 계정 섹션 추가

* feat(Settings): 카드 크기 동일하게 구현

* feat(Survey): 문의 카드 추가

* feat(Survey): 문의 카드 디자인 개선

* feat(Notification): 알림설정 추가

* feat(Settings): 차단리스트, 이름설정, 프로필이미지, 태그설정 페이지 헤더 크기 줄이기

* feat(Noti): 알림카드 세로여백 조정
Copilot AI review requested due to automatic review settings May 9, 2026 14:07
@mark77234 mark77234 merged commit 3bca1ff into main May 9, 2026
2 checks passed
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Release 1.2.0에 맞춰 설정 화면을 리뉴얼하고(프로필 수정/알림/피드백/약관/웹사이트/계정/차단관리), 소셜 피드에서 유저 차단 및 차단 목록/해제 플로우를 추가했으며, Google 로그인과 FCM 연동(토큰 등록/삭제, 수신 처리)까지 포함한 업데이트입니다.

Changes:

  • 설정 화면 전면 리뉴얼(프로필 수정 서브페이지, 알림 토글, 피드백 전송, 약관/개인정보처리방침, 차단 목록 등) 및 기존 프로필 설정 화면 제거
  • 유저 차단/차단목록 조회/차단해제 API 및 UI 연동(피드 메뉴에서 차단, 설정에서 차단목록 관리)
  • Google 로그인 추가 및 Firebase Messaging 기반 FCM 토큰 등록/삭제/알림 수신 처리 추가

Reviewed changes

Copilot reviewed 50 out of 54 changed files in this pull request and generated 12 comments.

Show a summary per file
File Description
KillingPartTests/InitialSetupFlowTests.swift UserServicing 프로토콜 확장에 맞춰 테스트 Mock 업데이트
KillingPart/Views/Screens/Setup/components/PolicyDocumentView.swift 약관/개인정보 전문 표시 뷰를 재사용 가능 컴포넌트로 분리
KillingPart/Views/Screens/Setup/components/PolicyDocumentContent.swift 약관/방침 텍스트 일부(부칙/시행일) 제거 및 정리
KillingPart/Views/Screens/Setup/components/PolicyAgreementScreen.swift 약관 전문 시트를 신규 PolicyDocumentView로 교체
KillingPart/Views/Screens/Main/Social/FeedSection/FeedSectionView.swift 피드 상태 변화 시 인덱스 리셋/보정 및 차단 액션 연결
KillingPart/Views/Screens/Main/Social/FeedSection/Components/SocialFeedPageCardView.swift 피드 메뉴에 “차단하기” 액션 추가
KillingPart/Views/Screens/Main/Randoms/RandomSearchView.swift 랜덤 피드 탐색 화면 신규 추가
KillingPart/Views/Screens/Main/My/MyCollection/Settings/SettingsView.swift 설정 메인 UI(프로필/차단관리/알림/앱정보/계정/피드백/로그아웃/탈퇴) 신규 구현
KillingPart/Views/Screens/Main/My/MyCollection/Settings/ServiceTermView.swift 설정에서 약관 화면 진입용 래퍼 뷰 추가
KillingPart/Views/Screens/Main/My/MyCollection/Settings/ProfileSettings/TagEdit.swift 태그 변경 서브페이지 신규 추가
KillingPart/Views/Screens/Main/My/MyCollection/Settings/ProfileSettings/ProfileImageEdit.swift 프로필 이미지 변경/삭제 서브페이지 신규 추가
KillingPart/Views/Screens/Main/My/MyCollection/Settings/ProfileSettings/NameEdit.swift 이름 변경 서브페이지 및 공용 헤더 컴포넌트 추가
KillingPart/Views/Screens/Main/My/MyCollection/Settings/PrivacyPolicyView.swift 설정에서 개인정보처리방침 화면 진입용 래퍼 뷰 추가
KillingPart/Views/Screens/Main/My/MyCollection/Settings/BlocklistView.swift 차단 목록 조회/검색/페이지네이션/차단해제 UI 신규 추가
KillingPart/Views/Screens/Main/My/MyCollection/ProfileSetting/ProfileSettingSection.swift 기존 프로필 설정 섹션 제거(설정 화면으로 대체)
KillingPart/Views/Screens/Main/My/MyCollection/ProfileSetting/components/MyCollectionProfileTagSectionView.swift 기존 프로필 설정 하위 컴포넌트 제거
KillingPart/Views/Screens/Main/My/MyCollection/ProfileSetting/components/MyCollectionProfileTagEditActionRowView.swift 기존 프로필 설정 하위 컴포넌트 제거
KillingPart/Views/Screens/Main/My/MyCollection/ProfileSetting/components/MyCollectionProfileSettingsInfoRowView.swift 기존 프로필 설정 하위 컴포넌트 제거
KillingPart/Views/Screens/Main/My/MyCollection/ProfileSetting/components/MyCollectionProfileSettingsInfoCardView.swift 기존 프로필 설정 하위 컴포넌트 제거
KillingPart/Views/Screens/Main/My/MyCollection/ProfileSetting/components/MyCollectionProfileSettingsHeaderView.swift 기존 프로필 설정 하위 컴포넌트 제거
KillingPart/Views/Screens/Main/My/MyCollection/ProfileSetting/components/MyCollectionProfileSettingPageContainerView.swift 기존 프로필 설정 하위 컴포넌트 제거
KillingPart/Views/Screens/Main/My/MyCollection/ProfileSetting/components/MyCollectionProfileImageColumnView.swift 기존 프로필 설정 하위 컴포넌트 제거
KillingPart/Views/Screens/Main/My/MyCollection/ProfileSetting/components/MyCollectionAccountActionButton.swift 기존 프로필 설정 하위 컴포넌트 제거
KillingPart/Views/Screens/Main/My/MyCollection/MyCollectionView.swift 설정 화면으로 네비게이션 전환(기존 screenMode/transition 제거)
KillingPart/Views/Screens/Main/My/MyCollection/Components/ProfileCard/MyCollectionProfileStatItemView.swift 프로필 통계 텍스트 레이아웃 안정화(lineLimit/fixedSize)
KillingPart/Views/Screens/Main/My/MyCollection/Components/ProfileCard/MyCollectionProfileCard.swift 태그 영역 레이아웃 조정 및 버튼 영역 fixedSize 적용
KillingPart/Views/Screens/Main/My/MyCollection/Components/ProfileCard/MyCollectionEditProfileButton.swift 프로필 편집 버튼을 “설정” 버튼으로 변경
KillingPart/Views/Screens/Auth/LoginView.swift Google 로그인 버튼 추가 및 Demo 로그인 UI 주석 처리
KillingPart/Views/Screens/Auth/Components/GoogleLoginButton.swift Google 로그인 버튼 컴포넌트 신규 추가
KillingPart/ViewModels/Social/FeedViewModel.swift 차단 요청 상태/의존성 추가 및 blockUser 로직 구현
KillingPart/ViewModels/My/MyCollection/Settings/SettingsViewModel.swift 피드백 전송/알림 설정 조회·변경 뷰모델 신규 추가
KillingPart/ViewModels/My/MyCollection/Settings/ProfileSettings/ProfileSettingViewModel.swift 이름 드래프트/변경 로직 추가 및 태그/이름 정규화·검증 로직 정리
KillingPart/ViewModels/My/MyCollection/Settings/BlocklistViewModel.swift 차단 목록 조회/검색/페이지네이션/해제 로직 신규 추가
KillingPart/ViewModels/LoginViewModel.swift Google 로그인 플로우 추가
KillingPart/ViewModels/AppViewModel.swift 로그인 성공 시 FCM 토큰 등록 트리거 추가
KillingPart/Services/UserService.swift 차단/차단목록 조회/차단해제 API 추가
KillingPart/Services/SurveyService.swift 피드백(설문) 전송 API 신규 추가
KillingPart/Services/NotificationService.swift 알림 설정 조회/변경 API 신규 추가
KillingPart/Services/FCMService.swift FCM 토큰 등록/삭제 API 신규 추가
KillingPart/Services/FCMManager.swift FCM 토큰 수신/보류 토큰 등록/알림 탭 처리 매니저 신규 추가
KillingPart/Services/AuthService.swift GoogleSignIn 기반 구글 로그인 구현 추가
KillingPart/Services/AuthenticationService.swift 서버 Google OAuth 로그인 엔드포인트 및 로그아웃 시 FCM 토큰 삭제 추가
KillingPart/Services/AppDelegate.swift Firebase 초기화/알림 권한 요청/APNs·FCM delegate 처리 신규 추가
KillingPart/Models/AuthModel.swift Google 로그인 요청 모델 추가
KillingPart/KillingPartApp.swift AppDelegate 연결 및 GoogleSignIn URL 핸들링 추가
KillingPart/KillingPart.entitlements Push entitlement 추가/변경
KillingPart/Info.plist Firebase/GoogleSignIn/remote-notification 설정 추가 및 URL scheme 업데이트
KillingPart/GoogleService-Info.plist Firebase 설정 plist 신규 추가
KillingPart/Assets.xcassets/ic_google.imageset/Contents.json Google 아이콘 에셋 추가
KillingPart.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved Firebase/GoogleSignIn SPM 의존성 추가
KillingPart.xcodeproj/project.pbxproj 버전 업데이트(1.2.0) 및 SPM 의존성/빌드 설정 반영

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +6 to +12
<string>development</string>
<key>com.apple.developer.applesignin</key>
<array>
<string>Default</string>
</array>
<key>com.apple.developer.aps-environment</key>
<string>development</string>
Comment thread KillingPart/Info.plist
<key>CFBundleURLSchemes</key>
<array>
<string>kakao$(KAKAO_NATIVE_APP_KEY)</string>
<string>com.googleusercontent.apps.619615909665-c9j3gs1vqmvi64rhb9i9ikg6dnpdghc0</string>
Comment thread KillingPart/Info.plist
Comment on lines +47 to +52
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>
<key>GIDClientID</key>
<string>619615909665-c9j3gs1vqmvi64rhb9i9ikg6dnpdghc0.apps.googleusercontent.com</string>
<key>GIDServerClientID</key>
<string>619615909665-o6l3i6de7i7l1msfjrvl9qu43scp08bj.apps.googleusercontent.com</string>
didReceiveRemoteNotification userInfo: [AnyHashable: Any],
fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void
) {
print("[FCM][Background] 원격 알림 수신 — payload: \(userInfo)")
print("[FCM][4] ⚠️ APNs 토큰 nil")
}

print("[FCM][4] FCM 토큰: \(token)")
Comment on lines +221 to +224
Text("\(user.displayName)님을 차단 해제 할까요?")
.font(AppFont.paperlogy6SemiBold(size: 18))
.foregroundStyle(.white)
.multilineTextAlignment(.center)
Comment on lines +57 to +63
Text("2~16자, 한글/영문/숫자 사용 가능")
.font(AppFont.paperlogy4Regular(size: 12))
.foregroundStyle(.white.opacity(0.55))

if let validation = viewModel.validateName(viewModel.nameDraft), !viewModel.nameDraft.isEmpty {
Text(validation)
.font(AppFont.paperlogy4Regular(size: 12))
Comment on lines +353 to +365
Toggle(
"",
isOn: Binding(
get: { settingsViewModel.isNotificationEnabled },
set: { newValue in
Task {
await settingsViewModel.updateNotificationSetting(newValue)
}
}
)
)
.labelsHidden()
.tint(Color.kpPrimary)
Comment on lines +70 to +97
// Button(action: viewModel.loginWithTester) {
// ZStack {
// Text("체험하기(Demo)")
// .font(AppFont.paperlogy5Medium(size: 14))
// .opacity(
// viewModel.isLoading
// && viewModel.activeSocialLoginProvider == .tester ? 0 : 1
// )
//
// if viewModel.isLoading
// && viewModel.activeSocialLoginProvider == .tester {
// ProgressView()
// .tint(.white)
// }
// }
// .foregroundStyle(.white)
// .padding(.horizontal, AppSpacing.l)
// .padding(.vertical, AppSpacing.s)
// .background(Color.white.opacity(0.16))
// .clipShape(RoundedRectangle(cornerRadius: 14, style: .continuous))
// .overlay {
// RoundedRectangle(cornerRadius: 14, style: .continuous)
// .stroke(Color.white.opacity(0.28), lineWidth: 1)
// }
// }
// .buttonStyle(.plain)
// .disabled(viewModel.isLoading)
// .accessibilityLabel("체험하기")
Comment on lines 3 to 15
struct MyCollectionEditProfileButton: View {
let action: () -> Void

var body: some View {
Button(action: action) {
HStack(alignment:.center,spacing: 6) {
Image(systemName: "square.and.pencil")
Image(systemName: "gearshape")
.font(.system(size: 14, weight: .semibold))
.foregroundStyle(Color.kpPrimary)

Text("프로필 편집")
Text("설정")
.font(AppFont.paperlogy5Medium(size: 14))
.foregroundStyle(Color.kpPrimary)
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.

2 participants