mirror of
https://github.com/pezkuwichain/pezkuwi-wallet-android.git
synced 2026-10-20 18:56:25 +00:00
fix(splash): navigate to the first screen once
The splash screen asks for the initial destination on every onResume, which runs again when the activity is recreated during startup while the view model survives. The second navigation found the first already on the welcome screen, with no route from there, and crashed the app with 'Unknown case for welcomeFragment'. The view model now starts it once.
This commit is contained in:
1 parent
8d5cb919db
commit
46902f7557
1 file changed
+10
-1
+10
-1
@@ -5,6 +5,7 @@ import io.novafoundation.nova.common.base.BaseViewModel
|
||||
import io.novafoundation.nova.common.utils.splash.SplashPassedObserver
|
||||
import io.novafoundation.nova.feature_account_api.domain.interfaces.AccountRepository
|
||||
import io.novafoundation.nova.splash.SplashRouter
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class SplashViewModel(
|
||||
@@ -13,8 +14,16 @@ class SplashViewModel(
|
||||
private val splashPassedObserver: SplashPassedObserver
|
||||
) : BaseViewModel() {
|
||||
|
||||
private var initialDestinationJob: Job? = null
|
||||
|
||||
// Called from the splash screen's onResume, which runs again when the activity is
|
||||
// recreated (rotation, theme, locale) while this view model survives. Starting a
|
||||
// second navigation then finds the first one already on the welcome screen, which
|
||||
// has no route to welcome, and crashes the app. The first call decides.
|
||||
fun openInitialDestination() {
|
||||
viewModelScope.launch {
|
||||
if (initialDestinationJob != null) return
|
||||
|
||||
initialDestinationJob = viewModelScope.launch {
|
||||
if (repository.isAccountSelected()) {
|
||||
openPinCode()
|
||||
} else {
|
||||
|
||||
Reference in new issue
Block a user