From 4705ff69158f31c93d4ab198bcd1449c9d95e63f Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Sat, 6 Mar 2021 15:49:07 +0000 Subject: [PATCH] Using passes screen as a startDestination --- .../rtbishop/look4sat/ui/SharedViewModel.kt | 10 +------- .../ui/entriesScreen/EntriesFragment.kt | 24 ++++++++++--------- .../ui/passesScreen/PassesFragment.kt | 1 - app/src/main/res/navigation/nav_graph.xml | 2 +- 4 files changed, 15 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt index 5f3902fa..5fdcf7cb 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt @@ -41,13 +41,13 @@ class SharedViewModel @Inject constructor( private val _passes = MutableLiveData>>() private val _appEvent = MutableLiveData>() - private var shouldTriggerCalculation = true init { if (prefsRepo.isFirstLaunch()) { updateDefaultSourcesAndEntries() prefsRepo.setFirstLaunchDone() } + calculatePasses() } fun getAppEvent(): LiveData> = _appEvent @@ -64,15 +64,7 @@ class SharedViewModel @Inject constructor( fun getTransmittersForSat(satId: Int) = satelliteRepo.getTransmittersForSat(satId).asLiveData() - fun triggerCalculation() { - if (shouldTriggerCalculation) { - shouldTriggerCalculation = false - calculatePasses() - } - } - fun calculatePasses(dateNow: Date = Date(System.currentTimeMillis())) { - shouldTriggerCalculation = false _passes.value = Result.InProgress viewModelScope.launch(Dispatchers.Default) { val passes = mutableListOf() diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesFragment.kt index d4f3044e..0c10048b 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/entriesScreen/EntriesFragment.kt @@ -51,7 +51,7 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) { super.onViewCreated(view, savedInstanceState) binding = FragmentEntriesBinding.bind(view) setupComponents() - observeEntries() + setupObservers() } private fun setupComponents() { @@ -71,8 +71,8 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) { searchBar.clearFocus() } } - - private fun observeEntries() { + + private fun setupObservers() { setLoading() viewModel.getSatItems().observe(viewLifecycleOwner, { satItems -> if (satItems.isNullOrEmpty()) setError() @@ -80,18 +80,20 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) { entriesAdapter?.setItems(satItems) setLoaded() } - observeEvents() }) - } - - private fun observeEvents() { viewModel.getAppEvent().observe(viewLifecycleOwner, { event -> - event.getContentIfNotHandled()?.let { - if (it == 0) setLoading() - else if (it == 1) { + event.getContentIfNotHandled()?.let { content -> + if (content == 0) setLoading() + else if (content == 1) { val errorMsg = getString(R.string.entries_update_error) Snackbar.make(requireView(), errorMsg, Snackbar.LENGTH_SHORT).show() - setError() + entriesAdapter?.let { adapter -> + if (adapter.getItems().isEmpty()) { + setError() + } else { + setLoaded() + } + } } } }) diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesFragment.kt index 1b816670..ff0bb6ac 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/passesScreen/PassesFragment.kt @@ -102,7 +102,6 @@ class PassesFragment : Fragment(R.layout.fragment_passes) { } passesFab.setOnClickListener { viewModel.calculatePasses() } } - viewModel.triggerCalculation() } private fun tickMainTimer(timeNow: Long) { diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index 0506c579..a914bf65 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -3,7 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/mobile_navigation" - app:startDestination="@id/nav_entries"> + app:startDestination="@id/nav_passes">