diff --git a/app/src/main/java/gq/kirmanak/mealient/extensions/ViewExtensions.kt b/app/src/main/java/gq/kirmanak/mealient/extensions/ViewExtensions.kt index 84db523..2c717fc 100644 --- a/app/src/main/java/gq/kirmanak/mealient/extensions/ViewExtensions.kt +++ b/app/src/main/java/gq/kirmanak/mealient/extensions/ViewExtensions.kt @@ -6,6 +6,8 @@ import android.widget.TextView import androidx.annotation.StringRes import androidx.core.widget.doAfterTextChanged import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.LiveData +import androidx.lifecycle.Observer import androidx.lifecycle.lifecycleScope import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import com.google.android.material.textfield.TextInputLayout @@ -84,4 +86,13 @@ fun SharedPreferences.prefsChangeFlow( sendValue() registerOnSharedPreferenceChangeListener(listener) awaitClose { unregisterOnSharedPreferenceChangeListener(listener) } +} + +fun LiveData.observeOnce(lifecycleOwner: LifecycleOwner, observer: Observer) { + observe(lifecycleOwner, object : Observer { + override fun onChanged(value: T) { + removeObserver(this) + observer.onChanged(value) + } + }) } \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt index 1b347c3..9c6dce5 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/activity/MainActivity.kt @@ -15,6 +15,7 @@ import com.google.android.material.shape.MaterialShapeDrawable import dagger.hilt.android.AndroidEntryPoint import gq.kirmanak.mealient.R import gq.kirmanak.mealient.databinding.MainActivityBinding +import gq.kirmanak.mealient.extensions.observeOnce import gq.kirmanak.mealient.logging.Logger import javax.inject.Inject @@ -47,7 +48,7 @@ class MainActivity : AppCompatActivity() { private fun configureNavGraph() { val graph = navController.navInflater.inflate(R.navigation.nav_graph) - viewModel.startDestination.observe(this) { + viewModel.startDestination.observeOnce(this) { graph.setStartDestination(it) navController.setGraph(graph, intent.extras) }