Skip to content

Commit 6e2612a

Browse files
committed
refactor/#67: 인증 관련된 Repository, API, UseCase 수정
인증 관련 클래스들을 리팩토링하여, 인증 여부에 따라 분리되어있던 API와 Repository를 통합했습니다. 관련 UseCase의 의존성도 수정했습니다.
1 parent 7ed4a9b commit 6e2612a

File tree

16 files changed

+89
-109
lines changed

16 files changed

+89
-109
lines changed

core/data-api/src/main/java/com/yapp/dataapi/UnAuthorizedUserRepository.kt renamed to core/data-api/src/main/java/com/yapp/dataapi/AuthRepository.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,15 @@ package com.yapp.dataapi
33
import com.yapp.model.SignUpInfo
44
import com.yapp.model.SignUpResult
55

6-
interface UnAuthorizedUserRepository {
6+
interface AuthRepository {
77
suspend fun signUp(
88
request: SignUpInfo,
99
): SignUpResult
10+
11+
suspend fun clearTokens()
12+
13+
suspend fun login(
14+
email : String,
15+
password : String
16+
)
1017
}

core/data-api/src/main/java/com/yapp/dataapi/LoginRepository.kt

Lines changed: 0 additions & 8 deletions
This file was deleted.

core/data-api/src/main/java/com/yapp/dataapi/AuthorizedUserRepository.kt renamed to core/data-api/src/main/java/com/yapp/dataapi/UserRepository.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ package com.yapp.dataapi
22

33
import com.yapp.model.UserInfo
44

5-
interface AuthorizedUserRepository {
6-
suspend fun clearTokens()
5+
interface UserRepository {
76
suspend fun deleteAccount()
87
suspend fun getUserProfile(): UserInfo
98
}

core/data/src/main/java/com/yapp/core/data/data/di/RepositoryModule.kt

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
package com.yapp.core.data.data.di
22

33
import com.yapp.core.data.data.repository.AlarmRepositoryImpl
4-
import com.yapp.core.data.data.repository.AuthorizedUserRepositoryImpl
4+
import com.yapp.core.data.data.repository.UserRepositoryImpl
55
import com.yapp.core.data.data.repository.ConfigRepositoryImpl
6-
import com.yapp.core.data.data.repository.LoginRepositoryImpl
7-
import com.yapp.core.data.data.repository.UnAuthorizedUserRepositoryImpl
6+
import com.yapp.core.data.data.repository.AuthRepositoryImpl
87
import com.yapp.dataapi.AlarmRepository
9-
import com.yapp.dataapi.AuthorizedUserRepository
8+
import com.yapp.dataapi.UserRepository
109
import com.yapp.dataapi.ConfigRepository
11-
import com.yapp.dataapi.LoginRepository
12-
import com.yapp.dataapi.UnAuthorizedUserRepository
10+
import com.yapp.dataapi.AuthRepository
1311
import dagger.Binds
1412
import dagger.Module
1513
import dagger.hilt.InstallIn
@@ -20,25 +18,20 @@ import dagger.hilt.components.SingletonComponent
2018
internal abstract class RepositoryModule {
2119

2220
@Binds
23-
abstract fun bindUnAuthorizedUserRepositoryImpl(
24-
repositoryImpl: UnAuthorizedUserRepositoryImpl,
25-
): UnAuthorizedUserRepository
21+
abstract fun bindAuthRepositoryImpl(
22+
repositoryImpl: AuthRepositoryImpl,
23+
): AuthRepository
2624

2725
@Binds
28-
abstract fun bindAuthorizedUserRepositoryImpl(
29-
repositoryImpl: AuthorizedUserRepositoryImpl,
30-
): AuthorizedUserRepository
26+
abstract fun bindUserRepositoryImpl(
27+
repositoryImpl: UserRepositoryImpl,
28+
): UserRepository
3129

3230
@Binds
3331
abstract fun bindConfigRepositoryImpl(
3432
repositoryImpl: ConfigRepositoryImpl,
3533
): ConfigRepository
3634

37-
@Binds
38-
abstract fun bindLoginRepositoryImpl(
39-
repositoryImpl: LoginRepositoryImpl,
40-
): LoginRepository
41-
4235
@Binds
4336
abstract fun bindAlarmRepositoryImpl(
4437
repositoryImpl: AlarmRepositoryImpl,
Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,13 @@ import androidx.datastore.core.DataStore
77
import com.google.firebase.messaging.FirebaseMessaging
88
import com.yapp.core.data.PositionConfigs
99
import com.yapp.core.data.local.SecurityPreferences
10-
import com.yapp.core.data.remote.api.UnAuthorizedUserApi
10+
import com.yapp.core.data.remote.api.AlarmApi
11+
import com.yapp.core.data.remote.api.AuthApi
12+
import com.yapp.core.data.remote.model.request.FcmTokenRequest
13+
import com.yapp.core.data.remote.model.request.LoginRequest
1114
import com.yapp.core.data.remote.model.request.toData
1215
import com.yapp.core.data.remote.model.response.toModel
13-
import com.yapp.dataapi.UnAuthorizedUserRepository
16+
import com.yapp.dataapi.AuthRepository
1417
import com.yapp.model.SignUpInfo
1518
import com.yapp.model.SignUpResult
1619
import dagger.hilt.android.qualifiers.ApplicationContext
@@ -19,12 +22,13 @@ import kotlinx.coroutines.tasks.await
1922
import javax.inject.Inject
2023
import kotlin.jvm.optionals.getOrNull
2124

22-
internal class UnAuthorizedUserRepositoryImpl @Inject constructor(
25+
internal class AuthRepositoryImpl @Inject constructor(
2326
@ApplicationContext private val context: Context,
24-
private val api: UnAuthorizedUserApi,
27+
private val authApi: AuthApi,
28+
private val alarmApi: AlarmApi,
2529
private val securityPreferences: SecurityPreferences,
2630
private val dataStore: DataStore<PositionConfigs>,
27-
): UnAuthorizedUserRepository {
31+
) : AuthRepository {
2832

2933
override suspend fun signUp(request: SignUpInfo): SignUpResult {
3034
val positionConfigs = dataStore.data.firstOrNull() ?: PositionConfigs.getDefaultInstance()
@@ -37,7 +41,7 @@ internal class UnAuthorizedUserRepositoryImpl @Inject constructor(
3741
true // Android 12 이하에서는 자동 허용
3842
}
3943

40-
val response = api.signUp(
44+
val response = authApi.signUp(
4145
request.toData(
4246
positionConfigs = positionConfigs,
4347
fcmToken = fcmToken,
@@ -52,4 +56,20 @@ internal class UnAuthorizedUserRepositoryImpl @Inject constructor(
5256

5357
return response.toModel()
5458
}
59+
60+
override suspend fun login(email: String, password: String) {
61+
val response = authApi.login(LoginRequest(email = email, password = password))
62+
securityPreferences.setAccessToken(response.accessToken)
63+
securityPreferences.setRefreshToken(response.refreshToken)
64+
val fcmToken = FirebaseMessaging.getInstance().token.await()
65+
alarmApi.putFcmToken(
66+
FcmTokenRequest(
67+
fcmToken = fcmToken
68+
)
69+
)
70+
}
71+
72+
override suspend fun clearTokens() {
73+
securityPreferences.clearAll()
74+
}
5575
}

core/data/src/main/java/com/yapp/core/data/data/repository/AuthorizedUserRepositoryImpl.kt

Lines changed: 0 additions & 23 deletions
This file was deleted.

core/data/src/main/java/com/yapp/core/data/data/repository/LoginRepositoryImpl.kt

Lines changed: 0 additions & 27 deletions
This file was deleted.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.yapp.core.data.data.repository
2+
3+
import com.yapp.core.data.local.SecurityPreferences
4+
import com.yapp.core.data.remote.api.UserApi
5+
import com.yapp.dataapi.UserRepository
6+
import com.yapp.model.UserInfo
7+
import javax.inject.Inject
8+
9+
internal class UserRepositoryImpl @Inject constructor(
10+
private val userApi: UserApi,
11+
private val securityPreferences: SecurityPreferences,
12+
): UserRepository {
13+
14+
override suspend fun deleteAccount() {
15+
userApi.deleteUser()
16+
securityPreferences.clearAll()
17+
}
18+
19+
override suspend fun getUserProfile(): UserInfo = userApi.getUserProfile().toModel()
20+
}

core/data/src/main/java/com/yapp/core/data/remote/api/UnAuthorizedUserApi.kt renamed to core/data/src/main/java/com/yapp/core/data/remote/api/AuthApi.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import retrofit2.http.Body
88
import retrofit2.http.POST
99
import java.util.Optional
1010

11-
internal interface UnAuthorizedUserApi {
11+
internal interface AuthApi {
1212
@POST("v1/auth/sign-up")
1313
suspend fun signUp(
1414
@Body request: SignUpRequest,

core/data/src/main/java/com/yapp/core/data/remote/api/AuthorizedUserApi.kt renamed to core/data/src/main/java/com/yapp/core/data/remote/api/UserApi.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import com.yapp.core.data.remote.model.response.UserProfileResponse
44
import retrofit2.http.DELETE
55
import retrofit2.http.GET
66

7-
interface AuthorizedUserApi {
7+
interface UserApi {
88
@GET("v1/users/profile")
99
suspend fun getUserProfile() : UserProfileResponse
1010

0 commit comments

Comments
 (0)