Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 26 additions & 16 deletions app/src/main/java/com/into/websoso/ui/splash/SplashActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import com.into.websoso.databinding.ActivityLoginBinding
import com.into.websoso.ui.login.LoginActivity
import com.into.websoso.ui.main.MainActivity
import com.into.websoso.ui.splash.dialog.MinimumVersionDialogFragment
import com.kakao.sdk.user.UserApiClient
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
Expand All @@ -21,27 +22,42 @@ class SplashActivity : BaseActivity<ActivityLoginBinding>(R.layout.activity_spla
super.onCreate(savedInstanceState)

setupObserver()
splashViewModel.autoLogin()
}

private fun setupObserver() {
splashViewModel.isUpdateRequired.observe(this) { isUpdateRequired ->
if (isUpdateRequired) {
showMinimumVersionDialog()
return@observe
}
splashViewModel.updateMyProfile()
}

splashViewModel.error.observe(this) { isError ->
if (isError) {
UserApiClient.instance.logout {
startActivity(LoginActivity.getIntent(this))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

r: finish나 flag도 넣어주세요 !

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

getIntent 내부에 flag 들어가있습니답
스크린샷 2025-01-24 오후 7 33 13

}
}
}

splashViewModel.isAutoLogin.observe(this) { isAutoLogin ->
lifecycleScope.launch {
delay(1000L)
splashViewModel.updateMinimumVersion { isUpdateRequired ->
if (isUpdateRequired) {
showMinimumVersionDialog()
} else {
when (isAutoLogin) {
true -> navigateToMainActivity()
false -> navigateToLoginActivity()
}
}
when (isAutoLogin) {
true -> navigateToMainActivity()
false -> navigateToLoginActivity()
}
}
}
}

private fun showMinimumVersionDialog() {
val dialog = MinimumVersionDialogFragment.newInstance()
dialog.isCancelable = false
dialog.show(supportFragmentManager, MINIMUM_VERSION_TAG)
}

private fun navigateToMainActivity() {
startActivity(MainActivity.getIntent(this, true))
finish()
Expand All @@ -52,12 +68,6 @@ class SplashActivity : BaseActivity<ActivityLoginBinding>(R.layout.activity_spla
finish()
}

private fun showMinimumVersionDialog() {
val dialog = MinimumVersionDialogFragment.newInstance()
dialog.isCancelable = false
dialog.show(supportFragmentManager, MINIMUM_VERSION_TAG)
}

companion object {
private const val MINIMUM_VERSION_TAG = "MinimumVersionDialog"
}
Expand Down
53 changes: 38 additions & 15 deletions app/src/main/java/com/into/websoso/ui/splash/SplashViewModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.into.websoso.data.repository.AuthRepository
import com.into.websoso.data.repository.UserRepository
import com.into.websoso.data.repository.VersionRepository
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
Expand All @@ -14,12 +15,46 @@ import javax.inject.Inject
class SplashViewModel @Inject constructor(
private val authRepository: AuthRepository,
private val versionRepository: VersionRepository,
private val userRepository: UserRepository,
) : ViewModel() {
private val _isUpdateRequired: MutableLiveData<Boolean> = MutableLiveData()
val isUpdateRequired: LiveData<Boolean> get() = _isUpdateRequired

private var _isAutoLogin = MutableLiveData(false)
private var _isAutoLogin: MutableLiveData<Boolean> = MutableLiveData()
val isAutoLogin: LiveData<Boolean> get() = _isAutoLogin

fun autoLogin() {
private var _error: MutableLiveData<Boolean> = MutableLiveData(false)
val error: LiveData<Boolean> get() = _error

init {
checkAndUpdateVersion()
}

private fun checkAndUpdateVersion() {
viewModelScope.launch {
runCatching {
versionRepository.isUpdateRequired()
}.onSuccess { isRequired ->
_isUpdateRequired.value = isRequired
}
}
}

// 토큰 만료 확인용 - 추후 로직 수정 필요
fun updateMyProfile() {
viewModelScope.launch {
runCatching {
userRepository.fetchMyProfile()
}.onSuccess {
autoLogin()
}.onFailure {
authRepository.clearTokens()
_error.value = true
}
}
}

private fun autoLogin() {
viewModelScope.launch {
if (authRepository.isAutoLogin) {
runCatching {
Expand All @@ -34,16 +69,4 @@ class SplashViewModel @Inject constructor(
}
}
}

fun updateMinimumVersion(onUpdateRequired: (Boolean) -> Unit) {
viewModelScope.launch {
runCatching {
versionRepository.isUpdateRequired()
}.onSuccess { isUpdateRequired ->
onUpdateRequired(isUpdateRequired)
}.onFailure {
onUpdateRequired(false)
}
}
}
}
}
4 changes: 2 additions & 2 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[versions]
# App Versioning
versionCode = "10008"
versionName = "1.0.8"
versionCode = "10011"
versionName = "1.0.9"

# Gradle Plugin & Kotlin
android-gradle-plugin = "8.1.3"
Expand Down
Loading