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 7ef17d219..27a0dbd06 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, -) \ No newline at end of file + + @SerializedName("deviceType") + val deviceType: DeviceType, +) 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 87ff4f21e..764012fbd 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 df68de88f..fed004ff3 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 70aef7f1e..ab887b7e9 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 24199432f..903b6595a 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) -} \ No newline at end of file + suspend operator fun invoke( + email: String, + providerId: String, + deviceType: DeviceType, + ): Token? = + oauthRepository.login(email, providerId, deviceType) +} 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 662be5580..825b18ee1 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 000000000..2aa617011 --- /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 +}