Ignore duplicate start destination updates
This commit is contained in:
@@ -6,6 +6,8 @@ import android.widget.TextView
|
|||||||
import androidx.annotation.StringRes
|
import androidx.annotation.StringRes
|
||||||
import androidx.core.widget.doAfterTextChanged
|
import androidx.core.widget.doAfterTextChanged
|
||||||
import androidx.lifecycle.LifecycleOwner
|
import androidx.lifecycle.LifecycleOwner
|
||||||
|
import androidx.lifecycle.LiveData
|
||||||
|
import androidx.lifecycle.Observer
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||||
import com.google.android.material.textfield.TextInputLayout
|
import com.google.android.material.textfield.TextInputLayout
|
||||||
@@ -85,3 +87,12 @@ fun <T> SharedPreferences.prefsChangeFlow(
|
|||||||
registerOnSharedPreferenceChangeListener(listener)
|
registerOnSharedPreferenceChangeListener(listener)
|
||||||
awaitClose { unregisterOnSharedPreferenceChangeListener(listener) }
|
awaitClose { unregisterOnSharedPreferenceChangeListener(listener) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun <T> LiveData<T>.observeOnce(lifecycleOwner: LifecycleOwner, observer: Observer<T>) {
|
||||||
|
observe(lifecycleOwner, object : Observer<T> {
|
||||||
|
override fun onChanged(value: T) {
|
||||||
|
removeObserver(this)
|
||||||
|
observer.onChanged(value)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -15,6 +15,7 @@ import com.google.android.material.shape.MaterialShapeDrawable
|
|||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import gq.kirmanak.mealient.R
|
import gq.kirmanak.mealient.R
|
||||||
import gq.kirmanak.mealient.databinding.MainActivityBinding
|
import gq.kirmanak.mealient.databinding.MainActivityBinding
|
||||||
|
import gq.kirmanak.mealient.extensions.observeOnce
|
||||||
import gq.kirmanak.mealient.logging.Logger
|
import gq.kirmanak.mealient.logging.Logger
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@@ -47,7 +48,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
private fun configureNavGraph() {
|
private fun configureNavGraph() {
|
||||||
val graph = navController.navInflater.inflate(R.navigation.nav_graph)
|
val graph = navController.navInflater.inflate(R.navigation.nav_graph)
|
||||||
viewModel.startDestination.observe(this) {
|
viewModel.startDestination.observeOnce(this) {
|
||||||
graph.setStartDestination(it)
|
graph.setStartDestination(it)
|
||||||
navController.setGraph(graph, intent.extras)
|
navController.setGraph(graph, intent.extras)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user