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" } logger.d { "configureNavGraph: received destination" }
val controller = navController val controller = navController
val graph = controller.navInflater.inflate(R.navigation.nav_graph) val graph = controller.navInflater.inflate(R.navigation.nav_graph)
graph.setStartDestination(it) graph.setStartDestination(it.startDestinationId)
controller.setGraph(graph, intent.extras) 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.disclaimer.DisclaimerStorage
import gq.kirmanak.mealient.data.recipes.RecipeRepo import gq.kirmanak.mealient.data.recipes.RecipeRepo
import gq.kirmanak.mealient.logging.Logger import gq.kirmanak.mealient.logging.Logger
import gq.kirmanak.mealient.ui.baseurl.BaseURLFragmentArgs
import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.launchIn
@@ -32,8 +33,8 @@ class MainActivityViewModel @Inject constructor(
get() = checkNotNull(_uiState.value) { "UiState must not be null" } get() = checkNotNull(_uiState.value) { "UiState must not be null" }
private set(value) = _uiState.postValue(value) private set(value) = _uiState.postValue(value)
private val _startDestination = MutableLiveData<Int>() private val _startDestination = MutableLiveData<StartDestinationInfo>()
val startDestination: LiveData<Int> = _startDestination val startDestination: LiveData<StartDestinationInfo> = _startDestination
private val _clearSearchViewFocusChannel = Channel<Unit>() private val _clearSearchViewFocusChannel = Channel<Unit>()
val clearSearchViewFocus: Flow<Unit> = _clearSearchViewFocusChannel.receiveAsFlow() val clearSearchViewFocus: Flow<Unit> = _clearSearchViewFocusChannel.receiveAsFlow()
@@ -45,9 +46,15 @@ class MainActivityViewModel @Inject constructor(
viewModelScope.launch { viewModelScope.launch {
_startDestination.value = when { _startDestination.value = when {
!disclaimerStorage.isDisclaimerAccepted() -> R.id.disclaimerFragment !disclaimerStorage.isDisclaimerAccepted() -> {
serverInfoRepo.getUrl() == null -> R.id.baseURLFragment StartDestinationInfo(R.id.disclaimerFragment)
else -> R.id.recipesListFragment }
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" /> app:popUpTo="@id/nav_graph" />
<argument <argument
android:name="isOnboarding" android:name="isOnboarding"
android:defaultValue="true"
app:argType="boolean" /> app:argType="boolean" />
</fragment> </fragment>