Skip to content

Commit 0dbc9c3

Browse files
[Feat] 로그인 v2 api 작업 (#437)
* refactor: DeviceType을 추가한 login v2 api로 교체 및 각 레이어 위반사항을 리팩토링 * 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> * 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> * 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> --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
1 parent 5657c86 commit 0dbc9c3

File tree

7 files changed

+43
-12
lines changed

7 files changed

+43
-12
lines changed
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.eatssu.android.data.remote.dto.request
22

3+
import com.eatssu.common.enums.DeviceType
34
import com.google.gson.annotations.SerializedName
45

56
data class LoginWithKakaoRequest(
@@ -8,4 +9,7 @@ data class LoginWithKakaoRequest(
89

910
@SerializedName("providerId")
1011
val providerId: String,
11-
)
12+
13+
@SerializedName("deviceType")
14+
val deviceType: DeviceType,
15+
)

app/src/main/java/com/eatssu/android/data/remote/repository/OauthRepositoryImpl.kt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,26 @@ import com.eatssu.android.data.remote.dto.response.toDomain
99
import com.eatssu.android.data.remote.service.OauthService
1010
import com.eatssu.android.domain.model.Token
1111
import com.eatssu.android.domain.repository.OauthRepository
12+
import com.eatssu.common.enums.DeviceType
1213
import javax.inject.Inject
1314

1415
class OauthRepositoryImpl @Inject constructor(private val oauthService: OauthService) :
1516
OauthRepository {
1617
override suspend fun reissueToken(refreshToken: String): Token? =
1718
oauthService.getNewToken(refreshToken).map { it.toDomain() }.orNull()
1819

19-
override suspend fun login(body: LoginWithKakaoRequest): Token? =
20-
oauthService.loginWithKakao(body).map { it.toDomain() }.orNull()
20+
override suspend fun login(
21+
email: String,
22+
providerId: String,
23+
deviceType: DeviceType,
24+
): Token? =
25+
oauthService.loginWithKakao(
26+
LoginWithKakaoRequest(
27+
email = email,
28+
providerId = providerId,
29+
deviceType = deviceType,
30+
)
31+
).map { it.toDomain() }.orNull()
2132

2233
override suspend fun checkValidToken(body: CheckValidTokenRequest): Boolean =
2334
oauthService.checkValidToken(body).orElse(false)

app/src/main/java/com/eatssu/android/data/remote/service/OauthService.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@ interface OauthService { //여기는 토큰이 없는 레트로핏을 끼웁니
1515
) //얘는 SP에 있는거 헤더에 넣어주면 됩니다.
1616
: ApiResult<TokenResponse>
1717

18-
@POST("oauths/kakao")
18+
/**
19+
* 카카오 회원가입, 로그인 V2 [인증 토큰 필요 X]
20+
*/
21+
@POST("oauths/v2/kakao")
1922
suspend fun loginWithKakao(
2023
@Body request: LoginWithKakaoRequest,
2124
): ApiResult<TokenResponse>

app/src/main/java/com/eatssu/android/domain/repository/OauthRepository.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
package com.eatssu.android.domain.repository
22

33
import com.eatssu.android.data.remote.dto.request.CheckValidTokenRequest
4-
import com.eatssu.android.data.remote.dto.request.LoginWithKakaoRequest
54
import com.eatssu.android.domain.model.Token
5+
import com.eatssu.common.enums.DeviceType
66

77
interface OauthRepository {
88
suspend fun reissueToken(
99
refreshToken: String,
1010
): Token?
1111

12-
suspend fun login(body: LoginWithKakaoRequest): Token?
12+
suspend fun login(
13+
email: String,
14+
providerId: String,
15+
deviceType: DeviceType,
16+
): Token?
1317

1418
suspend fun checkValidToken(body: CheckValidTokenRequest): Boolean
1519
}
Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
package com.eatssu.android.domain.usecase.auth
22

3-
import com.eatssu.android.data.remote.dto.request.LoginWithKakaoRequest
43
import com.eatssu.android.domain.model.Token
54
import com.eatssu.android.domain.repository.OauthRepository
5+
import com.eatssu.common.enums.DeviceType
66
import javax.inject.Inject
77

88
class LoginUseCase @Inject constructor(
99
private val oauthRepository: OauthRepository,
1010
) {
11-
suspend operator fun invoke(body: LoginWithKakaoRequest): Token? =
12-
oauthRepository.login(body)
13-
}
11+
suspend operator fun invoke(
12+
email: String,
13+
providerId: String,
14+
deviceType: DeviceType,
15+
): Token? =
16+
oauthRepository.login(email, providerId, deviceType)
17+
}

app/src/main/java/com/eatssu/android/presentation/login/LoginViewModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ import android.content.Context
44
import androidx.lifecycle.ViewModel
55
import androidx.lifecycle.viewModelScope
66
import com.eatssu.android.R
7-
import com.eatssu.android.data.remote.dto.request.LoginWithKakaoRequest
87
import com.eatssu.android.domain.model.TokenStateManager
98
import com.eatssu.android.domain.usecase.auth.LoginUseCase
109
import com.eatssu.android.domain.usecase.auth.SetAccessTokenUseCase
1110
import com.eatssu.android.domain.usecase.auth.SetRefreshTokenUseCase
1211
import com.eatssu.android.domain.usecase.user.SetUserEmailUseCase
1312
import com.eatssu.common.UiEvent
1413
import com.eatssu.common.UiState
14+
import com.eatssu.common.enums.DeviceType
1515
import com.eatssu.common.enums.ToastType
1616
import dagger.hilt.android.lifecycle.HiltViewModel
1717
import dagger.hilt.android.qualifiers.ApplicationContext
@@ -44,7 +44,7 @@ class LoginViewModel @Inject constructor(
4444
viewModelScope.launch(Dispatchers.IO) {
4545
_uiState.value = UiState.Loading
4646

47-
val token = loginUseCase(LoginWithKakaoRequest(email, providerID)) ?: run {
47+
val token = loginUseCase(email, providerID, DeviceType.ANDROID) ?: run {
4848
_uiState.value = UiState.Error
4949
_uiEvent.emit(
5050
UiEvent.ShowToast(
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.eatssu.common.enums
2+
3+
enum class DeviceType {
4+
IOS, ANDROID
5+
}

0 commit comments

Comments
 (0)