Skip to content

[GMSS-169] 구성 변경 시 Google Credential 로그인 요청 유지 및 login api 첫 방문 여부 응답값 추가 - #23

Open
seunghee17 wants to merge 8 commits into
developfrom
refactor/login
Open

[GMSS-169] 구성 변경 시 Google Credential 로그인 요청 유지 및 login api 첫 방문 여부 응답값 추가#23
seunghee17 wants to merge 8 commits into
developfrom
refactor/login

Conversation

@seunghee17

Copy link
Copy Markdown
Collaborator

작업 개요

Google Credential 요청 중 구성 변경이 발생하면 로그인 요청이 취소·유실되는 문제를 개선했습니다.

작업 유형

  • feat: 새 기능
  • fix: 버그 수정
  • refactor: 리팩토링 (동작 변경 없음)
  • build: 빌드/의존성 설정
  • chore: 기타 (문서, 설정 등)
  • test: 테스트 추가/수정

변경 사항

  • Google Credential 요청 상태 관리
    • 로그인 버튼 클릭 시 ViewModel에 Credential 요청 의도를 저장하도록 변경

    • googleSignInRequestId가 유지되는 동안 LoginScreenLaunchedEffect에서 Credential 요청 실행

    • 성공·취소·실패 시 pending 요청 상태를 명시적으로 초기화

    • 구성 변경으로 화면이 재생성되어도 ViewModel에 남아 있는 요청을 다시 실행하도록 처리

    • Google Credential Launcher 책임 정리

      • 내부 CoroutineScope와 callback 기반 API 제거
      • launch()를 suspend 함수로 변경
      • 성공·취소·실패 결과를 GoogleCredentialResult로 반환
      • 화면에서는 Credential 결과를 ViewModel 이벤트로 전달하도록 단순화
    • 로그인 결과 모델 확장

      • 서버의 isFirstLogin 응답을 LoginResult로 domain 계층까지 전달
      • 추후 첫 로그인 사용자의 온보딩 분기를 연결할 수 있도록 기반 구성
    • 인증 패키지 구조 정리

      • data의 AuthRepositoryImpldata.auth 패키지로 이동
      • domain의 인증 Repository, UseCase, Session 모델을 domain.auth 패키지로 통합
      • 패키지 변경에 맞춰 DI, ViewModel, 테스트 참조 경로 정리
    • 기존 토큰 재발급 구조 유지

      • TokenAuthenticator의 동기 재발급 및 동시 401 단일 재발급 구조 유지
      • 재발급 후 원 요청이 다시 401을 반환하면 추가 재시도 없이 종료하는 기존 정책 유지

관련 이슈

관련 작업 (Notion)

스크린샷 / 동작 화면

체크리스트

  • base 브랜치가 develop으로 설정되어 있다
  • 로컬 빌드 및 실행을 확인했다
  • 커밋 메시지가 컨벤션(feat:, fix: 등)을 따른다
  • 불필요한 로그/주석/디버그 코드를 제거했다
  • 리뷰어가 이해할 수 있도록 설명을 작성했다

리뷰 요청 사항

  • 구성 변경 시 기존 Credential 요청이 취소된 후, ViewModel에 유지된 요청 상태를 기준으로 새 LoginScreen에서 정상적으로 다시 실행되는지 확인 부탁드립니다.
  • Credential 성공·취소·실패 경로에서 googleSignInRequestId가 모두 초기화되는지 확인 부탁드립니다.
  • 인증 관련 data/domain 타입을 auth 패키지로 이동한 범위와 참조 경로가 적절한지 확인 부탁드립니다.
  • isFirstLogin은 현재 domain까지 전달하며, 실제 온보딩 화면 이동은 후속 작업으로 남겨두었습니다.

- Google Credential 요청 구성변경시 취소 이슈 해결
- data, domain 모듈의 인증관련 파일 기능별 분류 위한 디렉토리 이동

# Conflicts:
#	data/src/main/java/com/gamss/android/data/di/RepositoryModule.kt
#	domain/src/main/kotlin/com/gamss/android/domain/usecase/SecessionUseCase.kt
@seunghee17
seunghee17 marked this pull request as ready for review August 10, 2026 13:03
@SerialName("refreshToken")
val refreshToken: String,
@SerialName("isFirstLogin")
val isFirstLogin: Boolean

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

토큰 재발급엔 얘가 없어서 missingField 날 수도 있을 것 같아요. 공유하는 모델이니 def 값을 넣어 두는 것이 좋을 것 같습니다.

@@ -1,13 +1,14 @@
package com.gamss.android.data.repository

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

테스트만 디렉토리가 옮겨지지 않은 것으로 보입니다. 👀

@@ -1,9 +1,9 @@
package com.gamss.android.data.repository

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

흠.. 이친구는 어디 두는게 좋을까요?

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.

로그인 및 인증 리팩토링

3 participants