⚠ This page is served via a proxy. Original site: https://github.com
This service does not collect credentials or authentication data.
Skip to content

Conversation

@easyhooon
Copy link
Contributor

@easyhooon easyhooon commented Dec 17, 2025

🔗 관련 이슈

📙 작업 설명

  • 구글 로그인 기능 구현
  • 구글 로그인 버튼 추가
  • 로그인 화면내 디자인 변경 사항 반영

🧪 테스트 내역 (선택)

  • 주요 기능 정상 동작 확인
  • 브라우저/기기에서 동작 확인
  • 엣지 케이스 테스트 완료
  • 기존 기능 영향 없음

📸 스크린샷 또는 시연 영상 (선택)

💬 추가 설명 or 리뷰 포인트 (선택)

  • 현재 서버 API상 id 토큰을 전달하는 방식이 아닌, accessToken 전달하는 방식으로 구현되어있는 것으로 추측되어 API 수정 후 정상 동작하는지 확인해보도록 하겠습니다.
  • local.properties에 각 debug/release google web clientId 추가해두었는데, 디스코드/노션에 공유 해두겠습니다.

reference)
Credential Manager로 로그인이 안돼요. 이유는 몰라요

Summary by CodeRabbit

릴리스 노트

  • New Features

    • Google 계정으로 로그인 지원 추가
    • 로그인 화면에 Google 로그인 버튼 및 관련 텍스트/아이콘 추가
  • Refactor

    • 로그인 흐름 확장(여러 인증 제공자 지원) 및 관련 이벤트/사이드이펙트 정비
  • Style

    • 버튼 스타일/색상 업데이트(Google 버튼 스타일 추가, Kakao 색상 조정)

✏️ Tip: You can customize this high-level summary in your review settings.

구글로 부터 idToken을 받아와 서버에 전달하는 로직
회원가입 없이 둘러보기 텍스트 버튼 contentColor 변경 및 padding 변경사항 반영
client 패키지내에서 google/kakao LoginClient 관리
@coderabbitai
Copy link

coderabbitai bot commented Dec 17, 2025

Walkthrough

구글 로그인 기능이 추가되고, AuthRepository의 로그인 메서드 시그니처가 login(providerType: String, token: String)로 변경되었습니다. UI, 프레젠터, 사이드이펙트, 클라이언트, 디자인 시스템, 리소스 및 빌드 의존성이 연동되어 업데이트되었습니다.

Changes

코호트 / 파일(들) 요약
인증 API 및 구현
core/data/api/src/main/kotlin/.../AuthRepository.kt, core/data/impl/src/main/kotlin/.../DefaultAuthRepository.kt
login(accessToken: String)login(providerType: String, token: String) 시그니처 변경 및 로그인 요청에서 providerType/oauthToken 전달로 수정
디자인 시스템
core/designsystem/src/main/kotlin/.../component/button/ButtonColorStyle.kt, core/designsystem/src/main/kotlin/.../theme/Color.kt
버튼 색상 스타일에 GOOGLE 추가, 컨테이너/콘텐츠/테두리 처리 확장. Kakao 색상값 변경(0xFFFBD300 → 0xFFFFEB00)
로그인 UI/리소스
feature/login/src/main/kotlin/.../LoginUi.kt, feature/login/src/main/res/drawable/ic_google.xml, feature/login/src/main/res/values/strings.xml
구글 로그인 버튼 UI 추가, 구글 아이콘 벡터 및 google_login 문자열 추가, 레이아웃 간격 일부 조정
프레젠터 및 사이드이펙트 처리
feature/login/src/main/kotlin/.../LoginPresenter.kt, feature/login/src/main/kotlin/.../HandleLoginSideEffects.kt, feature/login/src/main/kotlin/.../LoginUiState.kt
OnGoogleLoginButtonClick 이벤트/GoogleLogin 사이드이펙트 추가. 이벤트 모델 변경: Login(accessToken)Login(providerType, token). 프레젠터와 사이드이펙트에서 Google 흐름 연동 및 AuthRepository 호출 방식 변경
로그인 클라이언트
feature/login/src/main/kotlin/.../client/GoogleLoginClient.kt, feature/login/src/main/kotlin/.../client/KakaoLoginClient.kt
신규 GoogleLoginClient 추가( CredentialManager 기반 ID 토큰 요청/처리 ). KakaoLoginClient의 리소스 참조 경로(designRR) 정리
빌드 및 의존성
feature/login/build.gradle.kts, gradle/libs.versions.toml
androidx-credentials, credentials-play-services-auth, googleid 의존성 추가 및 버전 정의
Companion 객체 이름 변경
core/common/.../BookStatus.kt, core/datastore/impl/.../DefaultNotificationDataSource.kt, core/datastore/impl/.../DefaultTokenDataSource.kt, feature/detail/.../BookDetailUiState.kt, feature/library/.../LibraryUiState.kt
여러 파일에서 companion object Companion → 익명 companion object로 변경 (접근 경로가 ClassName.func()로 변경되는 영향 가능)

Sequence Diagram(s)

sequenceDiagram
    actor User
    participant LoginUI as "Login UI"
    participant Presenter as "LoginPresenter"
    participant SideEffect as "HandleLoginSideEffects"
    participant GoogleClient as "GoogleLoginClient"
    participant CredentialMgr as "CredentialManager"
    participant AuthRepo as "AuthRepository"

    User->>LoginUI: 구글 로그인 버튼 클릭
    LoginUI->>Presenter: OnGoogleLoginButtonClick
    Presenter->>Presenter: isLoading = true
    Presenter->>SideEffect: GoogleLogin 사이드이펙트 발행
    SideEffect->>GoogleClient: loginWithGoogle(context, webClientId)
    GoogleClient->>CredentialMgr: ID 토큰 요청
    CredentialMgr-->>GoogleClient: GetCredentialResponse
    GoogleClient->>GoogleClient: ID 토큰 추출/검증
    alt 토큰 추출 성공
        GoogleClient-->>SideEffect: idToken 콜백
        SideEffect->>AuthRepo: login(providerType="GOOGLE", token=idToken)
        AuthRepo-->>SideEffect: Result<Unit>
        SideEffect->>LoginUI: LoginUiEvent.Login(providerType, token)
    else 실패/오류
        GoogleClient-->>SideEffect: 에러 콜백
        SideEffect->>LoginUI: LoginUiEvent.LoginFailure(message)
    end
Loading

Estimated code review effort

🎯 3 (보통) | ⏱️ ~35 분

Poem

🐰 구글 버튼 반짝이며 눌러봐,
토큰은 달려와 인증의 길,
공급자 이름 실어 보내면,
로그인 문이 살포시 열리고,
당근 대신 축하당! 🎉

🚥 Pre-merge checks | ✅ 3 | ❌ 2
❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning 일부 변경사항이 PR 범위를 벗어났습니다. 여러 companion object 이름 제거(BookStatus, DefaultNotificationDataSource, DefaultTokenDataSource, RecordSort, LibraryFilterOption)는 Google 로그인 구현과 무관한 변경사항입니다. companion object 이름 제거 관련 변경사항들을 별도의 PR로 분리하거나, Google 로그인 구현 범위 내에서만 필요한 변경사항인지 재평가하시기 바랍니다.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목 '구글 로그인 구현'은 pull request의 주요 변경 사항인 Google 로그인 기능 구현을 명확하고 간결하게 설명합니다.
Linked Issues check ✅ Passed 모든 코딩 요구사항을 충족합니다. Google 로그인 버튼 추가와 Google 로그인 기능 구현이 완료되었으며, 필요한 모든 코드 변경사항이 포함되어 있습니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

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 and usage tips.

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: 3

🧹 Nitpick comments (5)
feature/login/build.gradle.kts (1)

39-41: getApiKey 함수가 여러 빌드 파일에서 중복되고 있습니다.

app/build.gradle.ktscore/ocr/build.gradle.kts에도 동일한 함수가 정의되어 있습니다. 또한 getProperty()가 키를 찾지 못하면 null을 반환하여 빌드 실패를 유발할 수 있습니다.

중복 제거와 null 처리를 위해 다음과 같이 개선할 수 있습니다:

 fun getApiKey(propertyKey: String): String {
-    return gradleLocalProperties(rootDir, providers).getProperty(propertyKey)
+    return gradleLocalProperties(rootDir, providers).getProperty(propertyKey)
+        ?: throw GradleException("Missing property: $propertyKey in local.properties")
 }

장기적으로는 buildSrc 또는 convention plugin으로 추출하여 모든 모듈에서 재사용하는 것을 권장합니다.

feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/client/KakaoLoginClient.kt (1)

26-29: .Companion. 호출이 불필요합니다.

Kotlin에서 companion object의 멤버는 직접 접근할 수 있으므로 UserApiClient.Companion.instance 대신 UserApiClient.instance로 충분합니다.

-        if (UserApiClient.Companion.instance.isKakaoTalkLoginAvailable(context)) {
-            UserApiClient.Companion.instance.loginWithKakaoTalk(context, callback = kakaoCallback)
+        if (UserApiClient.instance.isKakaoTalkLoginAvailable(context)) {
+            UserApiClient.instance.loginWithKakaoTalk(context, callback = kakaoCallback)
         } else {
-            UserApiClient.Companion.instance.loginWithKakaoAccount(context, callback = kakaoCallback)
+            UserApiClient.instance.loginWithKakaoAccount(context, callback = kakaoCallback)
         }
-        UserApiClient.Companion.instance.me { user, _ ->
+        UserApiClient.instance.me { user, _ ->

Also applies to: 57-57

feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/client/GoogleLoginClient.kt (2)

25-25: .Companion. 호출이 불필요합니다.

KakaoLoginClient와 마찬가지로 Companion object 멤버는 직접 접근할 수 있습니다.

-        val credentialManager = CredentialManager.Companion.create(context)
+        val credentialManager = CredentialManager.create(context)
-        if (credential is CustomCredential &&
-            credential.type == GoogleIdTokenCredential.Companion.TYPE_GOOGLE_ID_TOKEN_CREDENTIAL) {
+        if (credential is CustomCredential &&
+            credential.type == GoogleIdTokenCredential.TYPE_GOOGLE_ID_TOKEN_CREDENTIAL) {
             try {
-                val googleIdTokenCredential = GoogleIdTokenCredential.Companion.createFrom(credential.data)
+                val googleIdTokenCredential = GoogleIdTokenCredential.createFrom(credential.data)

Also applies to: 67-67, 69-69


43-55: 취소와 오류를 구분하는 사용자 메시지 제공을 고려해 주세요.

현재 모든 예외에서 동일한 unknown_error_message를 표시합니다. 사용자가 로그인을 취소한 경우(GetCredentialCancellationException)에는 오류 메시지를 표시하지 않거나, 더 명확한 메시지를 제공하는 것이 UX에 좋습니다.

         } catch (e: GetCredentialCancellationException) {
             Logger.e("Google 로그인 취소됨, ${e.message}")
-            onFailure(context.getString(R.string.unknown_error_message))
+            // 사용자가 취소한 경우 에러 메시지 표시 생략 또는 별도 처리
         } catch (e: NoCredentialException) {
             Logger.e("Google 계정을 찾을 수 없음, ${e.message}")
-            onFailure(context.getString(R.string.unknown_error_message))
+            onFailure(context.getString(R.string.no_google_account_message)) // 별도 문자열 리소스 추가 권장
feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/LoginUiState.kt (1)

37-40: 상수를 사용한 좋은 접근 방식입니다.

제공자 타입을 companion object의 상수로 정의하여 문자열 오타를 방지하고 일관성을 보장합니다.

선택적 개선 사항: 더 강력한 타입 안전성을 위해 enum을 고려할 수 있습니다:

enum class ProviderType(val value: String) {
    KAKAO("KAKAO"),
    GOOGLE("GOOGLE")
}

하지만 백엔드 API가 문자열을 기대한다면 현재의 접근 방식이 더 간단하고 실용적입니다.

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 67fd699 and f8a88c1.

📒 Files selected for processing (15)
  • app/build.gradle.kts (2 hunks)
  • core/data/api/src/main/kotlin/com/ninecraft/booket/core/data/api/repository/AuthRepository.kt (1 hunks)
  • core/data/impl/src/main/kotlin/com/ninecraft/booket/core/data/impl/repository/DefaultAuthRepository.kt (1 hunks)
  • core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/button/ButtonColorStyle.kt (3 hunks)
  • core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/theme/Color.kt (1 hunks)
  • feature/login/build.gradle.kts (2 hunks)
  • feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/HandleLoginSideEffects.kt (1 hunks)
  • feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/LoginPresenter.kt (2 hunks)
  • feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/LoginUi.kt (1 hunks)
  • feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/LoginUiState.kt (2 hunks)
  • feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/client/GoogleLoginClient.kt (1 hunks)
  • feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/client/KakaoLoginClient.kt (4 hunks)
  • feature/login/src/main/res/drawable/ic_google.xml (1 hunks)
  • feature/login/src/main/res/values/strings.xml (1 hunks)
  • gradle/libs.versions.toml (2 hunks)
🧰 Additional context used
🧠 Learnings (4)
📚 Learning: 2025-07-08T12:33:01.863Z
Learnt from: seoyoon513
Repo: YAPP-Github/Reed-Android PR: 32
File: core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/button/ButtonColorStyle.kt:10-16
Timestamp: 2025-07-08T12:33:01.863Z
Learning: Reed Android 프로젝트에서 KAKAO 버튼 스타일은 디자이너가 pressed 상태 색상을 별도로 정의하지 않았기 때문에 pressed 상태에서도 동일한 Kakao 색상을 사용한다.

Applied to files:

  • core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/theme/Color.kt
  • core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/button/ButtonColorStyle.kt
📚 Learning: 2025-07-20T12:34:23.786Z
Learnt from: easyhooon
Repo: YAPP-Github/Reed-Android PR: 61
File: feature/webview/build.gradle.kts:17-21
Timestamp: 2025-07-20T12:34:23.786Z
Learning: Reed-Android 프로젝트에서는 `booket.android.feature` convention plugin을 사용하여 feature 모듈들의 공통 의존성을 관리한다. 이 plugin은 Circuit, Compose, 그리고 core 모듈들의 의존성을 자동으로 포함하므로, 각 feature 모듈의 build.gradle.kts에서는 특별한 의존성(예: libs.logger, libs.kakao.auth)만 별도로 선언하면 된다.

Applied to files:

  • feature/login/build.gradle.kts
  • gradle/libs.versions.toml
📚 Learning: 2025-08-28T12:25:54.058Z
Learnt from: easyhooon
Repo: YAPP-Github/Reed-Android PR: 174
File: feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/book/BookSearchPresenter.kt:128-133
Timestamp: 2025-08-28T12:25:54.058Z
Learning: In BookSearchPresenter.kt, when a guest user tries to register a book and is redirected to login, the bottom sheet (isBookRegisterBottomSheetVisible) and selection state (selectedBookIsbn, selectedBookStatus) are intentionally kept open/preserved so that when the user returns from login, they can continue from where they left off without losing context.

Applied to files:

  • feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/LoginUi.kt
  • feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/LoginPresenter.kt
  • feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/client/KakaoLoginClient.kt
📚 Learning: 2025-07-17T23:41:33.929Z
Learnt from: easyhooon
Repo: YAPP-Github/Reed-Android PR: 55
File: core/designsystem/src/main/res/drawable/ic_x_circle.xml:6-11
Timestamp: 2025-07-17T23:41:33.929Z
Learning: Reed Android 프로젝트에서는 SVG에서 vector drawable로 변환시 색상 매핑 대신 모드별 별도 아이콘 파일을 사용하는 방식을 선호한다. Figma에서 SVG export한 형태를 그대로 사용하며, 다크모드 대응이 필요할 경우 drawable-night 폴더에 별도 아이콘을 배치하는 방식을 사용한다.

Applied to files:

  • feature/login/src/main/res/drawable/ic_google.xml
🧬 Code graph analysis (4)
feature/login/build.gradle.kts (2)
app/build.gradle.kts (1)
  • getApiKey (115-117)
core/ocr/build.gradle.kts (1)
  • getApiKey (34-36)
feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/LoginUi.kt (1)
core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/button/ReedButton.kt (1)
  • ReedButton (34-114)
core/data/impl/src/main/kotlin/com/ninecraft/booket/core/data/impl/repository/DefaultAuthRepository.kt (1)
core/common/src/main/kotlin/com/ninecraft/booket/core/common/utils/RunSuspendCatching.kt (1)
  • runSuspendCatching (16-30)
app/build.gradle.kts (2)
feature/login/build.gradle.kts (1)
  • getApiKey (39-41)
core/ocr/build.gradle.kts (1)
  • getApiKey (34-36)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Compose Stability Check
  • GitHub Check: ci-build
🔇 Additional comments (15)
core/data/api/src/main/kotlin/com/ninecraft/booket/core/data/api/repository/AuthRepository.kt (1)

8-11: LGTM! 다중 제공자 지원을 위한 API 변경이 적절합니다.

providerTypetoken을 분리하여 KAKAO와 GOOGLE 로그인을 모두 지원할 수 있게 되었습니다. 타입 안전성을 높이려면 providerType을 enum이나 sealed class로 변경하는 것도 고려해 볼 수 있지만, 현재 String 타입도 백엔드 통합 시 유연성을 제공합니다.

core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/button/ButtonColorStyle.kt (2)

11-11: LGTM! GOOGLE 버튼 스타일이 적절하게 추가되었습니다.

흰색 배경(basePrimary), 검정 텍스트(contentPrimary), 회색 테두리(borderPrimary) 조합이 Google 로그인 버튼 브랜드 가이드라인에 부합합니다.

Also applies to: 21-21, 32-32, 47-47


30-30: TEXT 스타일 변경이 Google 로그인과 관련이 있는지 확인 필요.

TEXT 버튼의 contentColorborderBrand에서 contentTertiary로 변경되었습니다. 의도된 디자인 변경인지 확인해 주세요.

core/data/impl/src/main/kotlin/com/ninecraft/booket/core/data/impl/repository/DefaultAuthRepository.kt (1)

21-32: LGTM! 구현이 올바르게 업데이트되었습니다.

providerTypetokenLoginRequest에 적절히 전달하고 있으며, runSuspendCatching을 통한 에러 처리가 잘 적용되어 있습니다.

app/build.gradle.kts (1)

35-35: GOOGLE_WEB_CLIENT_ID가 app 모듈과 feature/login 모듈 모두에 정의되어 있습니다.

두 모듈에서 동일한 BuildConfig 필드를 정의하고 있습니다. GoogleLoginClient가 feature/login 모듈에 있으므로, feature/login의 BuildConfig만 사용하고 app 모듈에서는 제거하는 것이 좋을 수 있습니다.

app 모듈에서도 이 값이 필요한지 확인해 주세요. 필요하지 않다면 중복을 제거하는 것이 유지보수에 유리합니다.

Also applies to: 46-46

feature/login/src/main/res/values/strings.xml (1)

5-5: LGTM!

기존 kakao_login 문자열 패턴("XXX로 시작하기")과 일관성 있게 잘 추가되었습니다.

feature/login/src/main/res/drawable/ic_google.xml (1)

1-26: LGTM!

Google 브랜드 색상(빨강, 노랑, 파랑, 초록)이 올바르게 적용된 벡터 드로어블입니다. 24x24 뷰포트와 evenOdd 채우기 규칙이 적절히 사용되었습니다.

feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/LoginUi.kt (1)

116-137: LGTM!

Google 로그인 버튼이 Kakao 버튼과 동일한 패턴(leadingIcon, fullWidth, 수평 패딩)으로 일관성 있게 구현되었습니다. Color.Unspecified를 사용하여 다중 색상 아이콘이 올바르게 렌더링됩니다.

feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/LoginPresenter.kt (2)

88-91: LGTM!

Kakao 로그인 핸들러(lines 83-86)와 동일한 패턴으로 Google 로그인 이벤트 핸들링이 구현되었습니다. isLoading 상태 관리와 사이드 이펙트 트리거가 일관성 있게 적용되었습니다.


99-119: LGTM!

authRepository.login(providerType, token) 호출이 provider 기반 인증 흐름에 맞게 업데이트되었습니다. finally 블록에서 isLoading 상태가 올바르게 리셋됩니다.

feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/HandleLoginSideEffects.kt (2)

42-60: idToken vs accessToken 확인 필요

Google Credential Manager에서 반환하는 idToken이 서버 API 요구사항과 일치하는지 확인이 필요합니다. PR 설명에서 "현재 서버 API가 idToken 대신 accessToken을 기대할 수 있다"고 언급되어 있습니다.

Google ID Token은 사용자 인증 정보를 포함하는 JWT이고, Access Token은 Google API 호출용 토큰입니다. 서버 측에서 어떤 토큰을 기대하는지 API 명세를 확인해 주세요.


29-34: LGTM!

Kakao 로그인 콜백이 providerTypetoken을 포함하는 새로운 Login 이벤트 형식으로 올바르게 업데이트되었습니다.

feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/LoginUiState.kt (3)

19-19: LGTM: GoogleLogin 사이드 이펙트가 기존 패턴을 잘 따르고 있습니다.

GoogleLoginKakaoLogin과 동일한 패턴을 사용하여 일관성이 유지됩니다. UUID를 사용한 private key는 각 사이드 이펙트 인스턴스의 고유성을 보장하여 올바른 접근입니다.


28-28: LGTM: 구글 로그인 버튼 클릭 이벤트가 올바르게 정의되었습니다.

기존 OnKakaoLoginButtonClick과 동일한 패턴을 사용하여 일관성이 유지됩니다.


29-32: Login 이벤트 시그니처 변경 완료 확인됨

Login 이벤트가 accessToken: String에서 providerType: Stringtoken: String으로 변경되어 여러 소셜 로그인 제공자를 지원할 수 있게 되었습니다. 코드베이스 전체를 검색한 결과, HandleLoginSideEffects.kt의 모든 Login 이벤트 인스턴스화가 새로운 시그니처로 올바르게 업데이트되었습니다. Kakao 로그인(providerType = PROVIDER_TYPE_KAKAO)과 Google 로그인(providerType = PROVIDER_TYPE_GOOGLE) 모두 새로운 구조를 올바르게 사용하고 있으며, 기존 시그니처는 더 이상 코드베이스에 없습니다.

val Blue900 = Color(0xFF1F47CD)

val Kakao = Color(0xFFFBD300)
val Kakao = Color(0xFFFFEB00)
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

카카오 색상이 공식 브랜드 가이드라인과 맞지 않음

업데이트된 색상 0xFFFFEB00이 공식 카카오 브랜드 색상과 일치하지 않습니다. 공식 카카오 브랜드 색상은 #FEE102이며, 카카오톡 로고 색상은 #ffe812입니다. 이 값들을 기반으로 올바른 색상값을 확인하고 적용해 주세요.

🤖 Prompt for AI Agents
In
core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/theme/Color.kt
around line 66, the Kakao color is set to 0xFFFFEB00 which does not match the
official brand values; update the value to the official Kakao brand hex
0xFFFEE102 (or use 0xFFFFE812 where the KakaoTalk logo color is required) by
replacing the current literal with the correct 0xFFFEE102 constant for the
primary Kakao color.

Comment on lines +54 to +56
## Google Credential Manager
androidx-credentials = "1.6.0-beta03"
googleid = "1.1.1"
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

안정적인 버전 1.5.0 사용을 권고합니다.

1.6.0-beta03은 최신 버전이지만, 안정적인 1.5.0 버전이 이미 출시되었습니다. 프로덕션 환경에서는 안정적인 버전 사용을 권장합니다. 새로운 기능이 필요한 경우가 아니라면 androidx-credentials = "1.5.0"으로 변경해 주세요.

🤖 Prompt for AI Agents
In gradle/libs.versions.toml around lines 54-56, the androidx-credentials entry
uses the beta version "1.6.0-beta03"; update that entry to the stable version
"1.5.0" by replacing androidx-credentials = "1.6.0-beta03" with
androidx-credentials = "1.5.0" and leave the surrounding lines unchanged.

@easyhooon easyhooon marked this pull request as draft December 24, 2025 07:27
@easyhooon easyhooon marked this pull request as ready for review January 26, 2026 16:22


# Conflicts:
#	app/build.gradle.kts
#	core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/theme/Color.kt
#	feature/login/build.gradle.kts
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.

[BOOK-474/feat] Google Login 구현

2 participants