From ee5a3244702a9a7f323db0551826029340eab737 Mon Sep 17 00:00:00 2001 From: Yu Jin Date: Mon, 29 Dec 2025 14:50:08 +0900 Subject: [PATCH 1/4] =?UTF-8?q?refactor:=20DeviceType=EC=9D=84=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=ED=95=9C=20login=20v2=20api=EB=A1=9C=20=EA=B5=90?= =?UTF-8?q?=EC=B2=B4=20=EB=B0=8F=20=EA=B0=81=20=EB=A0=88=EC=9D=B4=EC=96=B4?= =?UTF-8?q?=20=EC=9C=84=EB=B0=98=EC=82=AC=ED=95=AD=EC=9D=84=20=EB=A6=AC?= =?UTF-8?q?=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../remote/dto/request/LoginWithKakaoRequest.kt | 4 ++++ .../data/remote/repository/OauthRepositoryImpl.kt | 15 +++++++++++++-- .../android/data/remote/service/OauthService.kt | 5 ++++- .../android/domain/repository/OauthRepository.kt | 8 ++++++-- .../android/domain/usecase/auth/LoginUseCase.kt | 10 +++++++--- .../android/presentation/login/LoginViewModel.kt | 4 ++-- .../java/com/eatssu/common/enums/DeviceType.kt | 5 +++++ 7 files changed, 41 insertions(+), 10 deletions(-) create mode 100644 core/common/src/main/java/com/eatssu/common/enums/DeviceType.kt diff --git a/app/src/main/java/com/eatssu/android/data/remote/dto/request/LoginWithKakaoRequest.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/request/LoginWithKakaoRequest.kt index 7ef17d21..aced74ac 100644 --- a/app/src/main/java/com/eatssu/android/data/remote/dto/request/LoginWithKakaoRequest.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/request/LoginWithKakaoRequest.kt @@ -1,5 +1,6 @@ package com.eatssu.android.data.remote.dto.request +import com.eatssu.common.enums.DeviceType import com.google.gson.annotations.SerializedName data class LoginWithKakaoRequest( @@ -8,4 +9,7 @@ data class LoginWithKakaoRequest( @SerializedName("providerId") val providerId: String, + + @SerializedName("deviceType") + val deviceType: DeviceType, ) \ No newline at end of file diff --git a/app/src/main/java/com/eatssu/android/data/remote/repository/OauthRepositoryImpl.kt b/app/src/main/java/com/eatssu/android/data/remote/repository/OauthRepositoryImpl.kt index 87ff4f21..764012fb 100644 --- a/app/src/main/java/com/eatssu/android/data/remote/repository/OauthRepositoryImpl.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/repository/OauthRepositoryImpl.kt @@ -9,6 +9,7 @@ import com.eatssu.android.data.remote.dto.response.toDomain import com.eatssu.android.data.remote.service.OauthService import com.eatssu.android.domain.model.Token import com.eatssu.android.domain.repository.OauthRepository +import com.eatssu.common.enums.DeviceType import javax.inject.Inject class OauthRepositoryImpl @Inject constructor(private val oauthService: OauthService) : @@ -16,8 +17,18 @@ class OauthRepositoryImpl @Inject constructor(private val oauthService: OauthSer override suspend fun reissueToken(refreshToken: String): Token? = oauthService.getNewToken(refreshToken).map { it.toDomain() }.orNull() - override suspend fun login(body: LoginWithKakaoRequest): Token? = - oauthService.loginWithKakao(body).map { it.toDomain() }.orNull() + override suspend fun login( + email: String, + providerId: String, + deviceType: DeviceType, + ): Token? = + oauthService.loginWithKakao( + LoginWithKakaoRequest( + email = email, + providerId = providerId, + deviceType = deviceType, + ) + ).map { it.toDomain() }.orNull() override suspend fun checkValidToken(body: CheckValidTokenRequest): Boolean = oauthService.checkValidToken(body).orElse(false) diff --git a/app/src/main/java/com/eatssu/android/data/remote/service/OauthService.kt b/app/src/main/java/com/eatssu/android/data/remote/service/OauthService.kt index df68de88..fed004ff 100644 --- a/app/src/main/java/com/eatssu/android/data/remote/service/OauthService.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/service/OauthService.kt @@ -15,7 +15,10 @@ interface OauthService { //여기는 토큰이 없는 레트로핏을 끼웁니 ) //얘는 SP에 있는거 헤더에 넣어주면 됩니다. : ApiResult - @POST("oauths/kakao") + /** + * 카카오 회원가입, 로그인 V2 [인증 토큰 필요 X] + */ + @POST("oauths/v2/kakao") suspend fun loginWithKakao( @Body request: LoginWithKakaoRequest, ): ApiResult diff --git a/app/src/main/java/com/eatssu/android/domain/repository/OauthRepository.kt b/app/src/main/java/com/eatssu/android/domain/repository/OauthRepository.kt index 70aef7f1..ab887b7e 100644 --- a/app/src/main/java/com/eatssu/android/domain/repository/OauthRepository.kt +++ b/app/src/main/java/com/eatssu/android/domain/repository/OauthRepository.kt @@ -1,15 +1,19 @@ package com.eatssu.android.domain.repository import com.eatssu.android.data.remote.dto.request.CheckValidTokenRequest -import com.eatssu.android.data.remote.dto.request.LoginWithKakaoRequest import com.eatssu.android.domain.model.Token +import com.eatssu.common.enums.DeviceType interface OauthRepository { suspend fun reissueToken( refreshToken: String, ): Token? - suspend fun login(body: LoginWithKakaoRequest): Token? + suspend fun login( + email: String, + providerId: String, + deviceType: DeviceType, + ): Token? suspend fun checkValidToken(body: CheckValidTokenRequest): Boolean } diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/auth/LoginUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/auth/LoginUseCase.kt index 24199432..f16b6157 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/auth/LoginUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/auth/LoginUseCase.kt @@ -1,13 +1,17 @@ package com.eatssu.android.domain.usecase.auth -import com.eatssu.android.data.remote.dto.request.LoginWithKakaoRequest import com.eatssu.android.domain.model.Token import com.eatssu.android.domain.repository.OauthRepository +import com.eatssu.common.enums.DeviceType import javax.inject.Inject class LoginUseCase @Inject constructor( private val oauthRepository: OauthRepository, ) { - suspend operator fun invoke(body: LoginWithKakaoRequest): Token? = - oauthRepository.login(body) + suspend operator fun invoke( + email: String, + providerId: String, + deviceType: DeviceType, + ): Token? = + oauthRepository.login(email, providerId, deviceType) } \ No newline at end of file diff --git a/app/src/main/java/com/eatssu/android/presentation/login/LoginViewModel.kt b/app/src/main/java/com/eatssu/android/presentation/login/LoginViewModel.kt index 662be558..825b18ee 100644 --- a/app/src/main/java/com/eatssu/android/presentation/login/LoginViewModel.kt +++ b/app/src/main/java/com/eatssu/android/presentation/login/LoginViewModel.kt @@ -4,7 +4,6 @@ import android.content.Context import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.eatssu.android.R -import com.eatssu.android.data.remote.dto.request.LoginWithKakaoRequest import com.eatssu.android.domain.model.TokenStateManager import com.eatssu.android.domain.usecase.auth.LoginUseCase import com.eatssu.android.domain.usecase.auth.SetAccessTokenUseCase @@ -12,6 +11,7 @@ import com.eatssu.android.domain.usecase.auth.SetRefreshTokenUseCase import com.eatssu.android.domain.usecase.user.SetUserEmailUseCase import com.eatssu.common.UiEvent import com.eatssu.common.UiState +import com.eatssu.common.enums.DeviceType import com.eatssu.common.enums.ToastType import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.qualifiers.ApplicationContext @@ -44,7 +44,7 @@ class LoginViewModel @Inject constructor( viewModelScope.launch(Dispatchers.IO) { _uiState.value = UiState.Loading - val token = loginUseCase(LoginWithKakaoRequest(email, providerID)) ?: run { + val token = loginUseCase(email, providerID, DeviceType.ANDROID) ?: run { _uiState.value = UiState.Error _uiEvent.emit( UiEvent.ShowToast( diff --git a/core/common/src/main/java/com/eatssu/common/enums/DeviceType.kt b/core/common/src/main/java/com/eatssu/common/enums/DeviceType.kt new file mode 100644 index 00000000..36d4b3f6 --- /dev/null +++ b/core/common/src/main/java/com/eatssu/common/enums/DeviceType.kt @@ -0,0 +1,5 @@ +package com.eatssu.common.enums + +enum class DeviceType { + IOS, ANDROID +} \ No newline at end of file From 9eed94b18c6e8ef73300644f4af0ad04afbf63b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A0=EC=A7=84?= Date: Mon, 29 Dec 2025 15:11:27 +0900 Subject: [PATCH 2/4] Update app/src/main/java/com/eatssu/android/data/remote/dto/request/LoginWithKakaoRequest.kt Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- .../android/data/remote/dto/request/LoginWithKakaoRequest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/eatssu/android/data/remote/dto/request/LoginWithKakaoRequest.kt b/app/src/main/java/com/eatssu/android/data/remote/dto/request/LoginWithKakaoRequest.kt index aced74ac..27a0dbd0 100644 --- a/app/src/main/java/com/eatssu/android/data/remote/dto/request/LoginWithKakaoRequest.kt +++ b/app/src/main/java/com/eatssu/android/data/remote/dto/request/LoginWithKakaoRequest.kt @@ -12,4 +12,4 @@ data class LoginWithKakaoRequest( @SerializedName("deviceType") val deviceType: DeviceType, -) \ No newline at end of file +) From 2534363e104a6ba4eab8e44329487d3e1125c304 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A0=EC=A7=84?= Date: Mon, 29 Dec 2025 15:11:35 +0900 Subject: [PATCH 3/4] Update app/src/main/java/com/eatssu/android/domain/usecase/auth/LoginUseCase.kt Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- .../java/com/eatssu/android/domain/usecase/auth/LoginUseCase.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/eatssu/android/domain/usecase/auth/LoginUseCase.kt b/app/src/main/java/com/eatssu/android/domain/usecase/auth/LoginUseCase.kt index f16b6157..903b6595 100644 --- a/app/src/main/java/com/eatssu/android/domain/usecase/auth/LoginUseCase.kt +++ b/app/src/main/java/com/eatssu/android/domain/usecase/auth/LoginUseCase.kt @@ -14,4 +14,4 @@ class LoginUseCase @Inject constructor( deviceType: DeviceType, ): Token? = oauthRepository.login(email, providerId, deviceType) -} \ No newline at end of file +} From 36981b940a08af56c58bfec71acb27ed6b561071 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A0=EC=A7=84?= Date: Mon, 29 Dec 2025 15:11:44 +0900 Subject: [PATCH 4/4] Update core/common/src/main/java/com/eatssu/common/enums/DeviceType.kt Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- core/common/src/main/java/com/eatssu/common/enums/DeviceType.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/common/src/main/java/com/eatssu/common/enums/DeviceType.kt b/core/common/src/main/java/com/eatssu/common/enums/DeviceType.kt index 36d4b3f6..2aa61701 100644 --- a/core/common/src/main/java/com/eatssu/common/enums/DeviceType.kt +++ b/core/common/src/main/java/com/eatssu/common/enums/DeviceType.kt @@ -2,4 +2,4 @@ package com.eatssu.common.enums enum class DeviceType { IOS, ANDROID -} \ No newline at end of file +}