Fix crash on URL input screen

This commit is contained in:
Kirill Kamakin
2022-11-20 18:18:35 +01:00
parent 9f4790eab5
commit 9d4f7775f4
4 changed files with 24 additions and 7 deletions

View File

@@ -53,8 +53,8 @@ class MainActivity : AppCompatActivity(R.layout.main_activity) {
logger.d { "configureNavGraph: received destination" }
val controller = navController
val graph = controller.navInflater.inflate(R.navigation.nav_graph)
graph.setStartDestination(it)
controller.setGraph(graph, intent.extras)
graph.setStartDestination(it.startDestinationId)
controller.setGraph(graph, it.startDestinationArgs)
}
}

View File

@@ -8,6 +8,7 @@ import gq.kirmanak.mealient.data.baseurl.ServerInfoRepo
import gq.kirmanak.mealient.data.disclaimer.DisclaimerStorage
import gq.kirmanak.mealient.data.recipes.RecipeRepo
import gq.kirmanak.mealient.logging.Logger
import gq.kirmanak.mealient.ui.baseurl.BaseURLFragmentArgs
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.launchIn
@@ -32,8 +33,8 @@ class MainActivityViewModel @Inject constructor(
get() = checkNotNull(_uiState.value) { "UiState must not be null" }
private set(value) = _uiState.postValue(value)
private val _startDestination = MutableLiveData<Int>()
val startDestination: LiveData<Int> = _startDestination
private val _startDestination = MutableLiveData<StartDestinationInfo>()
val startDestination: LiveData<StartDestinationInfo> = _startDestination
private val _clearSearchViewFocusChannel = Channel<Unit>()
val clearSearchViewFocus: Flow<Unit> = _clearSearchViewFocusChannel.receiveAsFlow()
@@ -45,9 +46,15 @@ class MainActivityViewModel @Inject constructor(
viewModelScope.launch {
_startDestination.value = when {
!disclaimerStorage.isDisclaimerAccepted() -> R.id.disclaimerFragment
serverInfoRepo.getUrl() == null -> R.id.baseURLFragment
else -> R.id.recipesListFragment
!disclaimerStorage.isDisclaimerAccepted() -> {
StartDestinationInfo(R.id.disclaimerFragment)
}
serverInfoRepo.getUrl() == null -> {
StartDestinationInfo(R.id.baseURLFragment, BaseURLFragmentArgs(true).toBundle())
}
else -> {
StartDestinationInfo(R.id.recipesListFragment)
}
}
}
}

View File

@@ -0,0 +1,9 @@
package gq.kirmanak.mealient.ui.activity
import android.os.Bundle
import androidx.annotation.IdRes
data class StartDestinationInfo(
@IdRes val startDestinationId: Int,
val startDestinationArgs: Bundle? = null,
)

View File

@@ -54,6 +54,7 @@
app:popUpTo="@id/nav_graph" />
<argument
android:name="isOnboarding"
android:defaultValue="true"
app:argType="boolean" />
</fragment>