Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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(
Expand All @@ -8,4 +9,7 @@ data class LoginWithKakaoRequest(

@SerializedName("providerId")
val providerId: String,

@SerializedName("deviceType")
val deviceType: DeviceType,
)
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,26 @@ 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) :
OauthRepository {
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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@ interface OauthService { //여기는 토큰이 없는 레트로핏을 끼웁니
) //얘는 SP에 있는거 헤더에 넣어주면 됩니다.
: ApiResult<TokenResponse>

@POST("oauths/kakao")
/**
* 카카오 회원가입, 로그인 V2 [인증 토큰 필요 X]
*/
@POST("oauths/v2/kakao")
suspend fun loginWithKakao(
@Body request: LoginWithKakaoRequest,
): ApiResult<TokenResponse>
Expand Down
Original file line number Diff line number Diff line change
@@ -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
}
Expand Down
Original file line number Diff line number Diff line change
@@ -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)
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ 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
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
Expand Down Expand Up @@ -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(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.eatssu.common.enums

enum class DeviceType {
IOS, ANDROID
}