Skip to content

Commit 3928fc1

Browse files
committed
[BOOK-212] feat: 로그인 후 약관 동의 하지 않았을 경우,앱 재진입시 로그인 화면으로 이동
feature:splash 모듈 추가
1 parent c3ac52e commit 3928fc1

File tree

12 files changed

+56
-26
lines changed

12 files changed

+56
-26
lines changed

app/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ dependencies {
8686
projects.feature.screens,
8787
projects.feature.search,
8888
projects.feature.settings,
89+
projects.feature.splash,
8990
projects.feature.webview,
9091

9192
libs.androidx.activity.compose,

feature/main/build.gradle.kts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
plugins {
44
alias(libs.plugins.booket.android.feature)
5-
alias(libs.plugins.kotlin.serialization)
65
}
76

87
android {
@@ -15,13 +14,10 @@ ksp {
1514

1615
dependencies {
1716
implementations(
18-
libs.kotlinx.collections.immutable,
19-
2017
libs.androidx.activity.compose,
2118
libs.androidx.splash,
2219

2320
libs.compose.system.ui.controller,
24-
libs.compose.shadow,
2521

2622
libs.logger,
2723
)

feature/main/src/main/kotlin/com/ninecraft/booket/feature/main/splash/SplashUiState.kt

Lines changed: 0 additions & 11 deletions
This file was deleted.
Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
<resources>
22
<string name="home_label">홈</string>
3-
<string name="search_label">도서 검색</string>
43
<string name="library_label">내 서재</string>
5-
<string name="splash_title">책 덮기 전 한 문장을 기록해보세요</string>
64
</resources>

feature/splash/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build

feature/splash/build.gradle.kts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
@file:Suppress("INLINE_FROM_HIGHER_PLATFORM")
2+
3+
plugins {
4+
alias(libs.plugins.booket.android.feature)
5+
}
6+
7+
android {
8+
namespace = "com.ninecraft.booket.feature.splash"
9+
}
10+
11+
ksp {
12+
arg("circuit.codegen.mode", "hilt")
13+
}
14+
15+
dependencies {
16+
implementations(
17+
libs.compose.system.ui.controller,
18+
libs.logger,
19+
)
20+
}

feature/main/src/main/kotlin/com/ninecraft/booket/feature/main/splash/SplashPresenter.kt renamed to feature/splash/src/main/kotlin/com/ninecraft/booket/splash/SplashPresenter.kt

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
package com.ninecraft.booket.feature.main.splash
1+
package com.ninecraft.booket.splash
22

33
import androidx.compose.runtime.Composable
44
import androidx.compose.runtime.LaunchedEffect
55
import androidx.compose.runtime.getValue
66
import androidx.compose.runtime.mutableStateOf
7+
import androidx.compose.runtime.rememberCoroutineScope
78
import androidx.compose.runtime.setValue
89
import com.ninecraft.booket.core.data.api.repository.AuthRepository
910
import com.ninecraft.booket.core.data.api.repository.UserRepository
@@ -24,6 +25,7 @@ import dagger.assisted.AssistedFactory
2425
import dagger.assisted.AssistedInject
2526
import dagger.hilt.android.components.ActivityRetainedComponent
2627
import kotlinx.coroutines.delay
28+
import kotlinx.coroutines.launch
2729

2830
class SplashPresenter @AssistedInject constructor(
2931
@Assisted private val navigator: Navigator,
@@ -33,10 +35,27 @@ class SplashPresenter @AssistedInject constructor(
3335

3436
@Composable
3537
override fun present(): SplashUiState {
38+
val scope = rememberCoroutineScope()
3639
val onboardingState by userRepository.onboardingState.collectAsRetainedState(initial = OnboardingState.IDLE)
3740
val autoLoginState by authRepository.autoLoginState.collectAsRetainedState(initial = AutoLoginState.IDLE)
3841
var isSplashTimeCompleted by rememberRetained { mutableStateOf(false) }
3942

43+
fun checkTermsAgreement() {
44+
scope.launch {
45+
userRepository.getUserProfile()
46+
.onSuccess { userProfile ->
47+
if (userProfile.termsAgreed) {
48+
navigator.resetRoot(HomeScreen)
49+
} else {
50+
navigator.resetRoot(LoginScreen)
51+
}
52+
}
53+
.onFailure {
54+
navigator.resetRoot(LoginScreen)
55+
}
56+
}
57+
}
58+
4059
LaunchedEffect(Unit) {
4160
delay(1000L)
4261
isSplashTimeCompleted = true
@@ -53,7 +72,7 @@ class SplashPresenter @AssistedInject constructor(
5372
OnboardingState.COMPLETED -> {
5473
when (autoLoginState) {
5574
AutoLoginState.LOGGED_IN -> {
56-
navigator.resetRoot(HomeScreen)
75+
checkTermsAgreement()
5776
}
5877

5978
AutoLoginState.NOT_LOGGED_IN -> {
@@ -72,11 +91,7 @@ class SplashPresenter @AssistedInject constructor(
7291
}
7392
}
7493

75-
return SplashUiState(
76-
idle = onboardingState == OnboardingState.IDLE || autoLoginState == AutoLoginState.IDLE,
77-
onboardingState = onboardingState,
78-
autoLoginState = autoLoginState,
79-
)
94+
return SplashUiState
8095
}
8196

8297
@CircuitInject(SplashScreen::class, ActivityRetainedComponent::class)

feature/main/src/main/kotlin/com/ninecraft/booket/feature/main/splash/SplashUi.kt renamed to feature/splash/src/main/kotlin/com/ninecraft/booket/splash/SplashUi.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.ninecraft.booket.feature.main.splash
1+
package com.ninecraft.booket.splash
22

33
import androidx.compose.foundation.Image
44
import androidx.compose.foundation.background
@@ -20,8 +20,8 @@ import androidx.compose.ui.res.stringResource
2020
import androidx.compose.ui.unit.dp
2121
import com.ninecraft.booket.core.designsystem.DevicePreview
2222
import com.ninecraft.booket.core.designsystem.theme.ReedTheme
23-
import com.ninecraft.booket.feature.main.R
2423
import com.ninecraft.booket.feature.screens.SplashScreen
24+
import com.ninecraft.booket.feature.splash.R
2525
import com.slack.circuit.codegen.annotations.CircuitInject
2626
import dagger.hilt.android.components.ActivityRetainedComponent
2727
import tech.thdev.compose.exteions.system.ui.controller.rememberSystemUiController
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.ninecraft.booket.splash
2+
3+
import com.slack.circuit.runtime.CircuitUiState
4+
5+
object SplashUiState : CircuitUiState
File renamed without changes.

0 commit comments

Comments
 (0)