Skip to content

Commit 8470a00

Browse files
authored
Merge pull request #80 from YAPP-Github/BOOK-186-feature/#79
feat: 약관 동의 API 연동
2 parents c4ea63d + a242b54 commit 8470a00

30 files changed

Lines changed: 372 additions & 124 deletions

File tree

core/data/api/src/main/kotlin/com/ninecraft/booket/core/data/api/repository/AuthRepository.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,6 @@ interface AuthRepository {
44
suspend fun login(accessToken: String): Result<Unit>
55

66
suspend fun logout(): Result<Unit>
7+
8+
suspend fun agreeTerms(termsAgreed: Boolean): Result<Unit>
79
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package com.ninecraft.booket.core.data.api.repository
22

3+
import com.ninecraft.booket.core.model.OnboardingState
34
import com.ninecraft.booket.core.model.UserProfileModel
45
import kotlinx.coroutines.flow.Flow
56

67
interface UserRepository {
78
suspend fun getUserProfile(): Result<UserProfileModel>
89

9-
val isOnboardingCompleted: Flow<Boolean>
10+
val onboardingState: Flow<OnboardingState>
1011

1112
suspend fun setOnboardingCompleted(isCompleted: Boolean)
1213
}

core/data/impl/src/main/kotlin/com/ninecraft/booket/core/data/impl/mapper/ResponseToModel.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ internal fun UserProfileResponse.toModel(): UserProfileModel {
2626
email = email,
2727
nickname = nickname,
2828
provider = provider,
29+
termsAgreed = termsAgreed,
2930
)
3031
}
3132

core/data/impl/src/main/kotlin/com/ninecraft/booket/core/data/impl/repository/DefaultAuthRepository.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.ninecraft.booket.core.common.utils.runSuspendCatching
44
import com.ninecraft.booket.core.data.api.repository.AuthRepository
55
import com.ninecraft.booket.core.datastore.api.datasource.TokenDataSource
66
import com.ninecraft.booket.core.network.request.LoginRequest
7+
import com.ninecraft.booket.core.network.request.TermsAgreementRequest
78
import com.ninecraft.booket.core.network.service.ReedService
89
import javax.inject.Inject
910

@@ -28,6 +29,11 @@ internal class DefaultAuthRepository @Inject constructor(
2829
clearTokens()
2930
}
3031

32+
override suspend fun agreeTerms(termsAgreed: Boolean) = runSuspendCatching {
33+
service.agreeTerms(TermsAgreementRequest(termsAgreed))
34+
Unit
35+
}
36+
3137
private suspend fun saveTokens(accessToken: String, refreshToken: String) {
3238
tokenDatasource.apply {
3339
setAccessToken(accessToken)

core/data/impl/src/main/kotlin/com/ninecraft/booket/core/data/impl/repository/DefaultUserRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ internal class DefaultUserRepository @Inject constructor(
1515
service.getUserProfile().toModel()
1616
}
1717

18-
override val isOnboardingCompleted = onboardingDataSource.isOnboardingCompleted
18+
override val onboardingState = onboardingDataSource.onboardingState
1919

2020
override suspend fun setOnboardingCompleted(isCompleted: Boolean) {
2121
onboardingDataSource.setOnboardingCompleted(isCompleted)

core/datastore/api/build.gradle.kts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,9 @@ android {
77
}
88

99
dependencies {
10-
implementation(libs.kotlinx.coroutines.core)
10+
implementations(
11+
projects.core.model,
12+
13+
libs.kotlinx.coroutines.core,
14+
)
1115
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package com.ninecraft.booket.core.datastore.api.datasource
22

3+
import com.ninecraft.booket.core.model.OnboardingState
34
import kotlinx.coroutines.flow.Flow
45

56
interface OnboardingDataSource {
6-
val isOnboardingCompleted: Flow<Boolean>
7+
val onboardingState: Flow<OnboardingState>
78
suspend fun setOnboardingCompleted(isCompleted: Boolean)
89
}

core/datastore/impl/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ android {
1717
dependencies {
1818
implementations(
1919
projects.core.datastore.api,
20+
projects.core.model,
21+
2022
libs.androidx.datastore.preferences,
2123

2224
libs.logger,

core/datastore/impl/src/main/kotlin/com/ninecraft/booket/core/datastore/impl/datasource/DefaultOnboardingDataSource.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import androidx.datastore.preferences.core.Preferences
55
import androidx.datastore.preferences.core.booleanPreferencesKey
66
import androidx.datastore.preferences.core.edit
77
import com.ninecraft.booket.core.datastore.api.datasource.OnboardingDataSource
8+
import com.ninecraft.booket.core.model.OnboardingState
89
import com.ninecraft.booket.core.datastore.impl.di.OnboardingDataStore
910
import com.ninecraft.booket.core.datastore.impl.util.handleIOException
1011
import kotlinx.coroutines.flow.Flow
@@ -14,10 +15,13 @@ import javax.inject.Inject
1415
class DefaultOnboardingDataSource @Inject constructor(
1516
@OnboardingDataStore private val dataStore: DataStore<Preferences>,
1617
) : OnboardingDataSource {
17-
override val isOnboardingCompleted: Flow<Boolean> = dataStore.data
18+
override val onboardingState: Flow<OnboardingState> = dataStore.data
1819
.handleIOException()
1920
.map { prefs ->
20-
prefs[IS_ONBOARDING_COMPLETED] ?: false
21+
when (prefs[IS_ONBOARDING_COMPLETED] ?: false) {
22+
false -> OnboardingState.NOT_COMPLETED
23+
true -> OnboardingState.COMPLETED
24+
}
2125
}
2226

2327
override suspend fun setOnboardingCompleted(isCompleted: Boolean) {

0 commit comments

Comments
 (0)