Skip to content

Commit 6614806

Browse files
authored
Merge pull request #179 from YAPP-Github/BOOK-308-fix/#178
feat: Guest Mode 약관동의 화면에서 앱 종료되는 문제 해결
2 parents 48dc971 + 5c248ee commit 6614806

File tree

5 files changed

+41
-7
lines changed

5 files changed

+41
-7
lines changed

app/src/main/kotlin/com/ninecraft/booket/di/CircuitModule.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ abstract class CircuitModule {
2828
): Circuit = Circuit.Builder()
2929
.addPresenterFactories(presenterFactories)
3030
.addUiFactories(uiFactories)
31-
// .setAnimatedNavDecoratorFactory(CrossFadeNavDecoratorFactory())
31+
.setAnimatedNavDecoratorFactory(CrossFadeNavDecoratorFactory())
3232
.build()
3333
}
3434
}

app/src/main/kotlin/com/ninecraft/booket/di/CrossFadeNavDecorator.kt

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,16 @@ import androidx.compose.animation.core.tween
66
import androidx.compose.animation.fadeIn
77
import androidx.compose.animation.fadeOut
88
import androidx.compose.animation.togetherWith
9+
import com.ninecraft.booket.feature.screens.LoginScreen
10+
import com.ninecraft.booket.feature.screens.SplashScreen
11+
import com.ninecraft.booket.feature.screens.TermsAgreementScreen
912
import com.slack.circuit.backstack.NavArgument
1013
import com.slack.circuit.foundation.NavigatorDefaults
1114
import com.slack.circuit.foundation.animation.AnimatedNavDecorator
1215
import com.slack.circuit.foundation.animation.AnimatedNavEvent
1316
import com.slack.circuit.foundation.animation.AnimatedNavState
1417

15-
data class CrossFadeNavDecoratorFactory(val durationMillis: Int = 300) :
18+
data class CrossFadeNavDecoratorFactory(val durationMillis: Int = 500) :
1619
AnimatedNavDecorator.Factory {
1720
override fun <T : NavArgument> create(): AnimatedNavDecorator<T, *> =
1821
CrossFadeNavDecorator(durationMillis)
@@ -24,6 +27,34 @@ class CrossFadeNavDecorator<T : NavArgument>(private val durationMillis: Int) :
2427
override fun AnimatedContentTransitionScope<AnimatedNavState>.transitionSpec(
2528
animatedNavEvent: AnimatedNavEvent,
2629
): ContentTransform {
27-
return fadeIn(tween(durationMillis)) togetherWith fadeOut(tween(durationMillis))
30+
val shouldUseFade = shouldUseFadeAnimation(initialState, targetState)
31+
32+
return if (shouldUseFade) {
33+
fadeIn(tween(durationMillis)) togetherWith fadeOut(tween(durationMillis))
34+
} else {
35+
// Circuit 기본 애니메이션 사용
36+
with(NavigatorDefaults.DefaultDecorator<T>()) {
37+
transitionSpec(animatedNavEvent)
38+
}
39+
}
40+
}
41+
42+
private fun shouldUseFadeAnimation(
43+
initialState: AnimatedNavState,
44+
targetState: AnimatedNavState,
45+
): Boolean {
46+
val fadeScreens = setOf(
47+
SplashScreen::class,
48+
LoginScreen::class,
49+
TermsAgreementScreen::class,
50+
)
51+
52+
val initialScreenClass = initialState.top.screen::class
53+
val targetScreenClass = targetState.top.screen::class
54+
55+
// 앱 시작시 SplashScreen이 첫 화면인 경우 처리
56+
val isAppLaunchToSplash = targetScreenClass == SplashScreen::class
57+
58+
return isAppLaunchToSplash || initialScreenClass in fadeScreens || targetScreenClass in fadeScreens
2859
}
2960
}

feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/LoginPresenter.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,11 @@ class LoginPresenter @AssistedInject constructor(
5353
navigator.popUntil { it == screen.returnToScreen }
5454
}
5555
} else {
56-
navigator.resetRoot(TermsAgreementScreen(screen.returnToScreen))
56+
if (screen.returnToScreen == null) {
57+
navigator.resetRoot(TermsAgreementScreen())
58+
} else {
59+
navigator.goTo(TermsAgreementScreen(screen.returnToScreen))
60+
}
5761
}
5862
}.onFailure { exception ->
5963
exception.message?.let { Logger.e(it) }

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.ninecraft.booket.splash
22

3-
import android.R.attr.description
43
import androidx.compose.foundation.Image
54
import androidx.compose.foundation.background
65
import androidx.compose.foundation.layout.Box

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ minSdk = "28"
44
targetSdk = "35"
55
compileSdk = "35"
66
versionName = "1.2.0"
7-
versionCode = "7"
7+
versionCode = "8"
88
packageName = "com.ninecraft.booket"
99

1010
## Android gradle plugin
@@ -43,7 +43,7 @@ okhttp = "5.1.0"
4343
retrofit = "3.0.0"
4444

4545
## Circuit
46-
circuit = "0.29.1"
46+
circuit = "0.30.0"
4747

4848
## Logging
4949
logger = "2.2.0"

0 commit comments

Comments
 (0)